xtype: 'panel',
itemId: 'info',
bodyPadding: 10,
- html: gettext('Please select a sender.')
- }
+ html: gettext('Please select a sender.'),
+ },
],
disableSelection: true,
- setUrl: function(url, title) {
+ plugins: 'gridfilters',
+
+ setUrl: function(url, extraparam, title) {
var me = this;
- me.store.setUrl(url);
+ me.store.setUrl(url, extraparam);
+ me.store.setRemoteFilter(url !== undefined);
Proxmox.Utils.setErrorMask(me, false);
me.store.reload();
store: {
type: 'pmgStatStore',
+ autoReload: false,
remoteSort: true,
+ remoteFilter: false, // enabled dynamically
fields: [
'receiver', 'virusinfo',
{ type: 'integer', name: 'bytes' },
{ type: 'boolean', name: 'blocked' },
{ type: 'integer', name: 'spamlevel' },
- { type: 'date', dateFormat: 'timestamp', name: 'time' }
+ { type: 'date', dateFormat: 'timestamp', name: 'time' },
],
proxy: {
- type: 'proxmox',
- sortParam: 'orderby'
+ type: 'pmgfilterproxy',
+ filterId: 'x-gridfilter-receiver',
+ sortParam: 'orderby',
},
sorters: [
{
property: 'time',
- direction: 'ASC'
- }
- ]
+ direction: 'ASC',
+ },
+ ],
},
columns: [
text: gettext('Receiver'),
renderer: Ext.htmlEncode,
flex: 1,
- dataIndex: 'receiver'
+ filter: { type: 'string' },
+ dataIndex: 'receiver',
},
{
header: gettext('Size') + ' (KB)',
renderer: function(v) { return Ext.Number.toFixed(v/1024, 0); },
- dataIndex: 'bytes'
+ dataIndex: 'bytes',
},
{
xtype: 'datecolumn',
header: gettext('Date'),
format: 'Y-m-d',
- dataIndex: 'time'
+ dataIndex: 'time',
},
{
xtype: 'datecolumn',
header: gettext('Time'),
- format: 'H:m:s',
- dataIndex: 'time'
+ format: 'H:i:s',
+ dataIndex: 'time',
},
],
me.callParent();
Proxmox.Utils.monStoreErrors(me, me.store, true);
- }
+ },
});
Ext.define('PMG.SenderList', {
extend: 'Ext.grid.GridPanel',
alias: 'widget.pmgSenderList',
- title: gettext('Statistics') + ': ' + gettext('Sender'),
+ title: gettext('Statistics') + ': ' + gettext('Sender') +
+ ' (' + gettext('Outgoing') +')',
multiColumnSort: true,
plugins: 'gridfilters',
- emptyText: gettext('No data in database.'),
+ emptyText: gettext('No data in database'),
viewConfig: {
- deferEmptyText: false
+ deferEmptyText: false,
},
- tbar: [ { xtype: 'pmgStatTimeSelector' } ],
+ tbar: [{ xtype: 'pmgStatTimeSelector' }],
store: {
type: 'pmgStatStore',
'sender',
{ type: 'integer', name: 'count' },
{ type: 'integer', name: 'bytes' },
- { type: 'integer', name: 'viruscount' }
+ { type: 'integer', name: 'viruscount' },
],
proxy: {
type: 'pmgfilterproxy',
sortParam: 'orderby',
- filterId: 'x-gridfilter-sender'
+ filterId: 'x-gridfilter-sender',
},
sorters: [
{
property: 'count',
- direction: 'DESC'
+ direction: 'DESC',
},
{
property: 'bytes',
- direction: 'DESC'
+ direction: 'DESC',
},
{
property: 'sender',
- direction: 'ASC'
- }
- ]
+ direction: 'ASC',
+ },
+ ],
},
columns: [
type: 'string',
itemDefaults: {
// any Ext.form.field.Text configs accepted
- }
- }
+ },
+ },
},
{
text: gettext('Count'),
- dataIndex: 'count'
+ columns: [
+ {
+ text: gettext('Mail'),
+ dataIndex: 'count',
+ },
+ {
+ header: gettext('Virus'),
+ dataIndex: 'viruscount',
+ },
+ ],
},
{
text: gettext('Size') + ' (KB)',
dataIndex: 'bytes',
renderer: function(v) {
return Ext.Number.toFixed(v/1024, 0);
- }
- }
+ },
+ },
],
initComponent: function() {
me.callParent();
Proxmox.Utils.monStoreErrors(me, me.store, true);
- }
+ },
});
Ext.define('PMG.SenderStatistics', {
xclass: 'Ext.app.ViewController',
selectionChange: function(grid, selected, eOpts) {
- var details = this.lookupReference('details');
+ var details = this.lookupReference('details');
if (selected.length > 0) {
var sender = selected[0].data.sender;
- var url = "/api2/json/statistics/sender/" +
- encodeURIComponent(sender);
- details.setUrl(url, '<b>' + gettext('Sender') + ':</b> ' + Ext.htmlEncode(sender));
+ var extraparam = { address: sender, type: 'sender' };
+ var url = "/api2/json/statistics/detail";
+ details.setUrl(url, extraparam, '<b>' + gettext('Sender') + ':</b> ' + Ext.htmlEncode(sender));
} else {
details.setUrl();
}
- }
+ },
},
items: [
region: 'east',
reference: 'details',
split: true,
- flex: 1
- }
- ]
+ flex: 1,
+ },
+ ],
});