]> git.proxmox.com Git - pmg-gui.git/commitdiff
statistics: use new api call for detailed stats
authorStoiko Ivanov <s.ivanov@proxmox.com>
Tue, 2 Feb 2021 13:03:17 +0000 (14:03 +0100)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Wed, 10 Feb 2021 09:45:08 +0000 (10:45 +0100)
the new /statistics/detail api calls takes the type (contact, sender,
receiver) and address for which to display the statistics as explicit
parameter instead of path-component.

This makes it possible to accept '/' as part of an e-mail address
which is allowed (in the local-part by RFC5322 [0], and accepted by
postfix.

[0] https://tools.ietf.org/html/rfc5322

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
js/ContactStatistics.js
js/ReceiverStatistics.js
js/SenderStatistics.js
js/StatStore.js

index 6c9d2d4e61cc862fc62024bc1368580236be444c..7f448af43ffd22249ba844ebbffb5557e8824940 100644 (file)
@@ -16,10 +16,10 @@ Ext.define('PMG.ContactDetails', {
 
     plugins: 'gridfilters',
 
-    setUrl: function(url, title) {
+    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();
@@ -201,9 +201,9 @@ Ext.define('PMG.ContactStatistics', {
            var details = this.lookupReference('details');
            if (selected.length > 0) {
                var contact = selected[0].data.contact;
-               var url = "/api2/json/statistics/contact/" +
-                   encodeURIComponent(contact);
-               details.setUrl(url, '<b>' + gettext('Contact') + ':</b> ' + Ext.htmlEncode(contact));
+               var extraparam = { address: contact, type: 'contact' };
+               var url = "/api2/json/statistics/detail";
+               details.setUrl(url, extraparam, '<b>' + gettext('Contact') + ':</b> ' + Ext.htmlEncode(contact));
            } else {
                details.setUrl();
            }
index 6378e06150a06ef96877bf7fc2c58333b6abe45e..bf86745be537f02bd7dca4de09e6b912b80baf2d 100644 (file)
@@ -16,10 +16,10 @@ Ext.define('PMG.ReceiverDetails', {
 
     plugins: 'gridfilters',
 
-    setUrl: function(url, title) {
+    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();
@@ -212,10 +212,10 @@ Ext.define('PMG.ReceiverStatistics', {
        selectionChange: function(grid, selected, eOpts) {
            var details = this.lookupReference('details');
            if (selected.length > 0) {
+               var url = "/api2/json/statistics/detail";
                var receiver = selected[0].data.receiver;
-               var url = "/api2/json/statistics/receiver/" +
-                   encodeURIComponent(receiver);
-               details.setUrl(url, '<b>' + gettext('Receiver') + ':</b> ' + Ext.htmlEncode(receiver));
+               var extraparam = { address: receiver, type: 'receiver' };
+               details.setUrl(url, extraparam, '<b>' + gettext('Receiver') + ':</b> ' + Ext.htmlEncode(receiver));
            } else {
                details.setUrl();
            }
index 43c5438bee4fad0b807ef10c51be5825de0f1c76..830f5fb2d723bfa2a82580c084322c88f431dbef 100644 (file)
@@ -16,10 +16,10 @@ Ext.define('PMG.SenderDetails', {
 
     plugins: 'gridfilters',
 
-    setUrl: function(url, title) {
+    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();
@@ -201,9 +201,9 @@ Ext.define('PMG.SenderStatistics', {
            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();
            }
index ec1177785ab0742c3c8657bef788f955613154ef..0fc1d31c6c2a8b27b6ebfa264e33f1268afd62bb 100644 (file)
@@ -8,13 +8,17 @@ Ext.define('PMG.data.StatStore', {
 
     includeTimeSpan: false,
 
-    setUrl: function(url) {
+    setUrl: function(url, extraparam) {
        var me = this;
 
        me.proxy.abort(); // abort pending requests
 
        me.staturl = url;
        me.proxy.extraParams = {};
+       if (extraparam !== undefined) {
+           me.proxy.extraParams = extraparam;
+       }
+
        me.setData([]);
     },
 
@@ -38,7 +42,10 @@ Ext.define('PMG.data.StatStore', {
        }
 
        me.proxy.url = me.staturl;
-       me.proxy.extraParams = { starttime: ts.starttime, endtime: ts.endtime };
+       Ext.apply(me.proxy.extraParams, {
+           starttime: ts.starttime,
+           endtime: ts.endtime,
+       });
 
        var timespan = 3600;
        if (me.includeTimeSpan) {