]> git.proxmox.com Git - pmg-gui.git/blobdiff - js/MailTracker.js
rules: use tree panel instead of grouping feature of the grid
[pmg-gui.git] / js / MailTracker.js
index 9cd2b9f07d8773fe2a06a9d783d054f55b8caca3..52641a4ebd91888d1da2975ca85fc19525bb5e9f 100644 (file)
@@ -1,17 +1,16 @@
-/*global Proxmox*/
 Ext.define('pmg-mail-tracker', {
     extend: 'Ext.data.Model',
     fields: [
-       'id' , 'from', 'to', 'dstatus', 'rstatus', 'qid', 'msgid', 'client',
+       'id', 'from', 'to', 'dstatus', 'rstatus', 'qid', 'msgid', 'client',
        { type: 'number', name: 'size' },
-       { type: 'date', dateFormat: 'timestamp', name: 'time' }
+       { type: 'date', dateFormat: 'timestamp', name: 'time' },
     ],
     proxy: {
-       type: 'proxmox'
+       type: 'proxmox',
     },
     // do not use field 'id', because "id/to" is the unique Id
     // this way we display an entry for each receiver
-    idProperty: 'none'
+    idProperty: 'none',
 });
 
 
@@ -20,7 +19,7 @@ Ext.define('PMG.MailTrackerFilter', {
     xtype: 'pmgMailTrackerFilter',
 
     layout: {
-       type: 'hbox'
+       type: 'hbox',
     },
 
     controller: {
@@ -28,24 +27,24 @@ Ext.define('PMG.MailTrackerFilter', {
         xclass: 'Ext.app.ViewController',
 
        onFilterChange: function() {
-           var view = this.getView();
+           let view = this.getView();
            view.fireEvent('filterChanged');
        },
 
        onSpecialKey: function(field, e) {
-           if (e.getKey() == e.ENTER) {
+           if (e.getKey() === e.ENTER) {
                this.onFilterChange();
            }
-       }
+       },
     },
 
     getFilterParams: function() {
-       var me = this;
-       var param = {};
+       let me = this;
+       let param = {};
 
-       var names = ['from', 'target', 'xfilter', 'starttime', 'endtime', 'ndr', 'greylist'];
+       let names = ['from', 'target', 'xfilter', 'starttime', 'endtime', 'ndr', 'greylist'];
        Ext.Array.each(names, function(name) {
-           var value = me.lookupReference(name).getSubmitValue();
+           let value = me.lookupReference(name).getSubmitValue();
            if (value) { param[name] = value; }
        });
 
@@ -63,35 +62,35 @@ Ext.define('PMG.MailTrackerFilter', {
            padding: 10,
            layout: {
                type: 'vbox',
-               align: 'stretch'
+               align: 'stretch',
            },
            items: [
                {
                    fieldLabel: gettext('Sender'),
                    xtype: 'textfield',
                    listeners: { specialkey: 'onSpecialKey' },
-                   reference: 'from'
+                   reference: 'from',
                },
                {
                    fieldLabel: gettext('Receiver'),
                    xtype: 'textfield',
                    listeners: { specialkey: 'onSpecialKey' },
-                   reference: 'target'
+                   reference: 'target',
                },
                {
                    fieldLabel: gettext('Filter'),
                    xtype: 'textfield',
                    listeners: { specialkey: 'onSpecialKey' },
-                   reference: 'xfilter'
-               }
-           ]
+                   reference: 'xfilter',
+               },
+           ],
        },
        {
            border: false,
            padding: 10,
            layout: {
                type: 'vbox',
-               align: 'stretch'
+               align: 'stretch',
            },
            items: [
                {
@@ -104,10 +103,10 @@ Ext.define('PMG.MailTrackerFilter', {
                        },
                    },
                    value: (function() {
-                       var now = new Date();
+                       let now = new Date();
                        return new Date(now.getTime() - 3600000);
                    }()),
-                   xtype: 'promxoxDateTimeField'
+                   xtype: 'promxoxDateTimeField',
                },
                {
                    fieldLabel: gettext('End'),
@@ -119,19 +118,19 @@ Ext.define('PMG.MailTrackerFilter', {
                        },
                    },
                    value: (function() {
-                       var now = new Date();
-                       var tomorrow = new Date();
+                       let now = new Date();
+                       let tomorrow = new Date();
                        tomorrow.setDate(now.getDate()+1);
                        tomorrow.setHours(0);
                        tomorrow.setMinutes(0);
                        tomorrow.setSeconds(0);
                        return tomorrow;
                    }()),
-                   xtype: 'promxoxDateTimeField'
+                   xtype: 'promxoxDateTimeField',
                },
                {
                    layout: {
-                       type: 'hbox'
+                       type: 'hbox',
                    },
                    border: false,
                    items: [
@@ -140,7 +139,7 @@ Ext.define('PMG.MailTrackerFilter', {
                            xtype: 'proxmoxcheckbox',
                            listeners: { change: 'onFilterChange' },
                            reference: 'ndr',
-                           name: 'ndrs'
+                           name: 'ndrs',
                        },
                        {
                            boxLabel: gettext('Include Greylist'),
@@ -148,13 +147,13 @@ Ext.define('PMG.MailTrackerFilter', {
                            listeners: { change: 'onFilterChange' },
                            margin: { left: 20 },
                            reference: 'greylist',
-                           name: 'greylist'
-                       }
-                   ]
-               }
-           ]
-       }
-    ]
+                           name: 'greylist',
+                       },
+                   ],
+               },
+           ],
+       },
+    ],
 });
 
 Ext.define('PMG.MaiLogWindow', {
@@ -172,13 +171,13 @@ Ext.define('PMG.MaiLogWindow', {
     scrollable: true,
 
     layout: {
-       type: 'auto'
+       type: 'auto',
     },
     modal: true,
     bodyPadding: 5,
 
     load: function() {
-       var me = this;
+       let me = this;
 
        Proxmox.Utils.API2Request({
            method: 'GET',
@@ -189,20 +188,20 @@ Ext.define('PMG.MaiLogWindow', {
                me.update(gettext('Error') + " " + response.htmlStatus);
            },
            success: function(response, opts) {
-               var data = response.result.data;
+               let data = response.result.data;
 
-               var logs = "<pre style='margin: 0;'>";
+               let logs = "<pre style='margin: 0;'>";
                Ext.Array.each(data.logs, function(line) {
                    logs += Ext.htmlEncode(line) + "\n";
                });
                logs += "</pre>";
                me.update(logs);
-           }
+           },
        });
     },
 
-    initComponent : function() {
-       var me = this;
+    initComponent: function() {
+       let me = this;
 
        if (!me.logid) {
            throw "no logid specified";
@@ -219,7 +218,7 @@ Ext.define('PMG.MaiLogWindow', {
 
        me.setHtml('Loading...');
        me.load();
-    }
+    },
 });
 
 Ext.define('PMG.MailTracker', {
@@ -237,17 +236,17 @@ Ext.define('PMG.MailTracker', {
        deferEmptyText: false,
        enableTextSelection: true,
        getRowClass: function(record, index) {
-           var status = record.data.rstatus || record.data.dstatus;
+           let status = record.data.rstatus || record.data.dstatus;
            return PMG.Utils.mail_status_map[status];
-       }
+       },
     },
 
     plugins: [
        {
            ptype: 'rowexpander',
            expandOnDblClick: false,
-           rowBodyTpl: '<p class="logs">{logs}</p>'
-       }
+           rowBodyTpl: '<p class="logs">{logs}</p>',
+       },
     ],
 
     store: {
@@ -261,11 +260,11 @@ Ext.define('PMG.MailTracker', {
         xclass: 'Ext.app.ViewController',
 
        onSearch: function() {
-           var view = this.getView();
+           let view = this.getView();
            view.setEmptyText(gettext('No data in database'));
-           var filter = this.lookupReference('filter');
-           var status = this.lookupReference('status');
-           var params = filter.getFilterParams();
+           let filter = this.lookupReference('filter');
+           let status = this.lookupReference('status');
+           let params = filter.getFilterParams();
            if (params === undefined) {
                return; // something went wrong with the filters bail out
            }
@@ -273,10 +272,10 @@ Ext.define('PMG.MailTracker', {
            view.store.proxy.setExtraParams(params);
            view.store.proxy.setUrl('/api2/json/nodes/' + Proxmox.NodeName + '/tracker');
            view.store.load(function(records, operation, success) {
-               var response = operation.getResponse();
+               let response = operation.getResponse();
                if (success) {
                    // fixme: howto avoid duplicate Ext.decode ?
-                   var result = Ext.decode(response.responseText);
+                   let result = Ext.decode(response.responseText);
                    if (result.changes) {
                        status.update(result.changes);
                    }
@@ -285,9 +284,9 @@ Ext.define('PMG.MailTracker', {
        },
 
        showDetails: function(rowNode, record) {
-           var view = this.getView();
+           let view = this.getView();
 
-           var params = view.store.proxy.getExtraParams();
+           let params = view.store.proxy.getExtraParams();
 
            Proxmox.Utils.API2Request({
                method: 'GET',
@@ -295,18 +294,18 @@ Ext.define('PMG.MailTracker', {
                url: '/nodes/' + Proxmox.NodeName + '/tracker/' + record.data.id,
                waitMsgTarget: view,
                failure: function(response, opts) {
-                   record.set('logs',gettext('Error') + " " + response.htmlStatus);
+                   record.set('logs', gettext('Error') + " " + response.htmlStatus);
                },
                success: function(response, opts) {
-                   var data = response.result.data;
-                   var logs = "";
+                   let data = response.result.data;
+                   let logs = "";
 
                    Ext.Array.each(data.logs, function(line) {
                        logs += Ext.htmlEncode(line) + "<br>";
                    });
 
                    record.set('logs', logs);
-               }
+               },
            });
        },
 
@@ -327,8 +326,8 @@ Ext.define('PMG.MailTracker', {
            'gridview': {
                expandbody: 'showDetails',
                itemdblclick: 'expand',
-           }
-       }
+           },
+       },
     },
 
     // extjs has no method to dynamically change the emptytext on
@@ -343,17 +342,17 @@ Ext.define('PMG.MailTracker', {
        {
            xtype: 'pmgMailTrackerFilter',
            reference: 'filter',
-           listeners:  { filterChanged: 'onSearch' },
+           listeners: { filterChanged: 'onSearch' },
            border: false,
-           dock: 'top'
+           dock: 'top',
        },
        {
            xtype: 'toolbar',
            items: [
                { text: 'Search', handler: 'onSearch' },
-               { xtype: 'component', html: '', reference: 'status' }
-           ]
-       }
+               { xtype: 'component', html: '', reference: 'status' },
+           ],
+       },
     ],
 
     columns: [
@@ -362,34 +361,34 @@ Ext.define('PMG.MailTracker', {
            header: gettext('Time'),
            width: 120,
            dataIndex: 'time',
-           format: 'M d H:i:s'
+           format: 'M d H:i:s',
        },
        {
            header: gettext('From'),
            flex: 1,
            dataIndex: 'from',
-           renderer: Ext.htmlEncode
+           renderer: Ext.htmlEncode,
        },
        {
            header: gettext('To'),
            flex: 1,
            dataIndex: 'to',
-           renderer: Ext.htmlEncode
+           renderer: Ext.htmlEncode,
        },
        {
            header: gettext('Status'),
            width: 150,
            renderer: function(v, metaData, rec) {
-               var returntext = 'unknown';
-               var icon = 'question-circle';
-               var rstatus = rec.data.rstatus;
+               let returntext = 'unknown';
+               let icon = 'question-circle';
+               let rstatus = rec.data.rstatus;
                if (v !== undefined && v !== '') {
-                   var vtext = PMG.Utils.mail_status_map[v] || v;
+                   let vtext = PMG.Utils.mail_status_map[v] || v;
                    icon = v;
                    if (v === 'Q' || v === 'B') {
                        returntext = vtext;
-                   } else  if (rstatus !== undefined && rstatus !== '') {
-                       var rtext = PMG.Utils.mail_status_map[rstatus] || rstatus;
+                   } else if (rstatus !== undefined && rstatus !== '') {
+                       let rtext = PMG.Utils.mail_status_map[rstatus] || rstatus;
                        returntext = vtext + '/' + rtext;
                        icon = rstatus;
                    } else if (rec.data.qid !== undefined) {
@@ -401,34 +400,34 @@ Ext.define('PMG.MailTracker', {
 
                return PMG.Utils.format_status_icon(icon) + returntext;
            },
-           dataIndex: 'dstatus'
+           dataIndex: 'dstatus',
        },
        {
            header: gettext('Size'),
            hidden: true,
-           dataIndex: 'size'
+           dataIndex: 'size',
        },
        {
            header: 'MSGID',
            width: 300,
            hidden: true,
            dataIndex: 'msgid',
-           renderer: Ext.htmlEncode
+           renderer: Ext.htmlEncode,
        },
        {
            header: gettext('Client'),
            width: 200,
            hidden: true,
            dataIndex: 'client',
-           renderer: Ext.htmlEncode
-       }
+           renderer: Ext.htmlEncode,
+       },
     ],
 
     initComponent: function() {
-       var me = this;
+       let me = this;
 
        me.callParent();
 
        Proxmox.Utils.monStoreErrors(me.getView(), me.store);
-    }
+    },
 });