X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=js%2FMailTracker.js;h=76fe949e5d1971996a247124c1d6010e48125eb9;hb=00ac25c188a4fc2021c0843f1c3ff1cc1166031d;hp=c5151998368a60da95c2632eac691c85662b4894;hpb=cf2485332b812843380a6cc95ab8881671b19406;p=pmg-gui.git diff --git a/js/MailTracker.js b/js/MailTracker.js index c515199..76fe949 100644 --- a/js/MailTracker.js +++ b/js/MailTracker.js @@ -1,3 +1,4 @@ +/*global Proxmox*/ Ext.define('pmg-mail-tracker', { extend: 'Ext.data.Model', fields: [ @@ -8,7 +9,9 @@ Ext.define('pmg-mail-tracker', { proxy: { type: 'proxmox' }, - idProperty: 'id' + // do not use field 'id', because "id/to" is the unique Id + // this way we display an entry for each receiver + idProperty: 'none' }); @@ -95,17 +98,28 @@ Ext.define('PMG.MailTrackerFilter', { value: (function() { var now = new Date(); return new Date(now.getTime() - 3600000); - })(), + }()), xtype: 'promxoxDateTimeField' }, { fieldLabel: gettext('End'), reference: 'endtime', listeners: { change: 'onFilterChange' }, + value: (function() { + var now = new Date(); + var tomorrow = new Date(); + tomorrow.setDate(now.getDate()+1); + tomorrow.setHours(0); + tomorrow.setMinutes(0); + tomorrow.setSeconds(0); + return tomorrow; + }()), xtype: 'promxoxDateTimeField' }, { - layout: 'hbox', + layout: { + type: 'hbox' + }, border: false, items: [ { @@ -144,7 +158,9 @@ Ext.define('PMG.MaiLogWindow', { height: 400, scrollable: true, - layout: 'auto', + layout: { + type: 'auto' + }, modal: true, bodyPadding: 5, @@ -202,10 +218,24 @@ Ext.define('PMG.MailTracker', { border: false, emptyText: gettext('No data in database.'), + disableSelection: true, + viewConfig: { - deferEmptyText: false + deferEmptyText: false, + enableTextSelection: true, + getRowClass: function(record, index) { + var status = record.data.rstatus || record.data.dstatus; + return PMG.Utils.mail_status_map[status]; + } }, + plugins: [ + { + ptype: 'rowexpander', + rowBodyTpl: '

{logs}

' + } + ], + store: { autoDestroy: true, model: 'pmg-mail-tracker' @@ -235,22 +265,36 @@ Ext.define('PMG.MailTracker', { }); }, - showDetails: function() { + showDetails: function(rowNode, record) { var view = this.getView(); - var sm = view.getSelectionModel(); - var rec = sm.getSelection()[0]; - if (!rec) { - return; - } var params = view.store.proxy.getExtraParams(); - var win = Ext.create('PMG.MaiLogWindow', { - starttime: params.starttime, - endtime: params.endtime, - logid: rec.data.id + Proxmox.Utils.API2Request({ + method: 'GET', + params: { starttime: params.starttime, endtime: params.endtime }, + url: '/nodes/' + Proxmox.NodeName + '/tracker/' + record.data.id, + waitMsgTarget: view, + failure: function(response, opts) { + record.set('logs',gettext('Error') + " " + response.htmlStatus); + }, + success: function(response, opts) { + var data = response.result.data; + var logs = ""; + + Ext.Array.each(data.logs, function(line) { + logs += Ext.htmlEncode(line) + "
"; + }); + + record.set('logs', logs); + } }); - win.show(); + }, + + control: { + 'gridview': { + expandbody: 'showDetails' + } } }, @@ -282,30 +326,37 @@ Ext.define('PMG.MailTracker', { { header: gettext('From'), flex: 1, - dataIndex: 'from' + dataIndex: 'from', + renderer: Ext.htmlEncode }, { header: gettext('To'), flex: 1, - dataIndex: 'to' + dataIndex: 'to', + 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; if (v !== undefined && v !== '') { - vtext = PMG.Utils.mail_status_map[v] || v; + var vtext = PMG.Utils.mail_status_map[v] || v; + icon = v; if (rstatus !== undefined && rstatus !== '') { - rtext = PMG.Utils.mail_status_map[rstatus] || rstatus; - return vtext + '/' + rtext; - } - if (rec.data.qid !== undefined) { - return 'queued/' + vtext; + var rtext = PMG.Utils.mail_status_map[rstatus] || rstatus; + returntext = vtext + '/' + rtext; + icon = rstatus; + } else if (rec.data.qid !== undefined) { + returntext = 'queued/' + vtext; + } else { + returntext = vtext; } - return vtext; } - return 'unknown'; + + return PMG.Utils.format_status_icon(icon) + returntext; }, dataIndex: 'dstatus' }, @@ -318,20 +369,18 @@ Ext.define('PMG.MailTracker', { header: 'MSGID', width: 300, hidden: true, - dataIndex: 'msgid' + dataIndex: 'msgid', + renderer: Ext.htmlEncode }, { header: gettext('Client'), width: 200, hidden: true, - dataIndex: 'client' + dataIndex: 'client', + renderer: Ext.htmlEncode } ], - listeners: { - itemdblclick: 'showDetails', - }, - initComponent: function() { var me = this;