]> git.proxmox.com Git - pmg-gui.git/blobdiff - js/SenderStatistics.js
user view: disable unlock TFA button initially
[pmg-gui.git] / js / SenderStatistics.js
index 816f6b820876e093f04f0650ade035c340b9e8c3..830f5fb2d723bfa2a82580c084322c88f431dbef 100644 (file)
@@ -8,16 +8,21 @@ Ext.define('PMG.SenderDetails', {
            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();
 
        var infopanel = me.getComponent('info');
        if (title) {
@@ -29,24 +34,27 @@ Ext.define('PMG.SenderDetails', {
 
     store: {
        type: 'pmgStatStore',
+       autoReload: false,
        remoteSort: true,
+       remoteFilter: false, // enabled dynamically
        fields: [
-           'receiver', 'virusname',
+           '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: [
@@ -54,43 +62,52 @@ Ext.define('PMG.SenderDetails', {
            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',
        },
-    ]
+    ],
+
+    initComponent: function() {
+       var me = this;
+       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',
@@ -101,27 +118,27 @@ Ext.define('PMG.SenderList', {
            '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: [
@@ -134,28 +151,37 @@ Ext.define('PMG.SenderList', {
                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() {
        var me = this;
        me.callParent();
 
-       Proxmox.Utils.monStoreErrors(me, me.store);
-    }
+       Proxmox.Utils.monStoreErrors(me, me.store, true);
+    },
 });
 
 Ext.define('PMG.SenderStatistics', {
@@ -172,16 +198,16 @@ 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: [
@@ -199,7 +225,7 @@ Ext.define('PMG.SenderStatistics', {
            region: 'east',
            reference: 'details',
            split: true,
-           flex: 1
-       }
-    ]
+           flex: 1,
+       },
+    ],
 });