]>
git.proxmox.com Git - pmg-gui.git/blob - js/PostfixMailQueue.js
1 Ext
.define('pmg-mailq', {
2 extend
: 'Ext.data.Model',
4 'queue_id', 'queue_name',
5 { type
: 'date', dateFormat
: 'timestamp', name
: 'arrival_time' },
6 { type
: 'integer', name
: 'message_size' },
7 'sender', 'receiver', 'reason',
9 idProperty
: 'queue_id',
12 Ext
.define('PMG.Postfix.MailQueue', {
13 extend
: 'Ext.grid.GridPanel',
14 alias
: 'widget.pmgPostfixMailQueue',
20 queuename
: 'deferred',
23 xclass
: 'Ext.data.BufferedStore',
27 sorters
: 'arrival_time',
33 xclass
: 'Ext.app.ViewController',
35 init: function(view
) {
37 view
.setNodename(view
.nodename
);
40 view
.delayFilterTask
= new Ext
.util
.DelayedTask(function() {
41 var filter
= view
.lookupReference('filter').getValue();
48 onChangeFilter: function(f
, v
) {
49 var view
= this.getView();
50 view
.delayFilterTask
.delay(500);
53 onFlush: function(button
, event
, rec
) {
54 var view
= this.getView();
56 Proxmox
.Utils
.API2Request({
57 url
: '/api2/extjs/nodes/' + view
.nodename
+ '/postfix/queue/' +
58 view
.queuename
+ '/' + rec
.data
.queue_id
,
61 failure: function(response
, opts
) {
62 Ext
.Msg
.alert(gettext('Error'), response
.htmlStatus
);
67 onRemove: function(button
, event
, rec
) {
68 var view
= this.getView();
70 Proxmox
.Utils
.API2Request({
71 url
: '/api2/extjs/nodes/' + view
.nodename
+ '/postfix/queue/' +
72 view
.queuename
+ '/' + rec
.data
.queue_id
,
75 success: function(response
, opts
) {
76 view
.selModel
.deselectAll();
79 failure: function(response
, opts
) {
80 Ext
.Msg
.alert(gettext('Error'), response
.htmlStatus
);
85 onHeaders: function(button
, event
, rec
) {
86 var view
= this.getView();
88 var url
= '/api2/extjs/nodes/' + view
.nodename
+ '/postfix/queue/' +
89 view
.queuename
+ '/' + rec
.data
.queue_id
;
91 var win
= Ext
.create('PMG.ViewMailHeaders', {
92 title
: view
.title
+ ' : ' + rec
.data
.queue_id
,
100 activate: function() {
101 this.view
.updateProxy(); // reload
103 itemdblclick: function(grid
, rec
, item
, index
, event
) {
104 this.onHeaders(grid
, event
, rec
);
107 'field[reference=filter]': {
108 change
: 'onChangeFilter',
115 xtype
: 'proxmoxButton',
117 text
: gettext('Headers'),
118 handler
: 'onHeaders',
121 xtype
: 'proxmoxButton',
123 text
: gettext('Flush'),
127 xtype
: 'proxmoxStdRemoveButton',
132 html
: gettext('Filter') + ':',
143 header
: gettext('Time'),
145 renderer
: Ext
.util
.Format
.dateRenderer("Y-m-d H:i:s"),
146 dataIndex
: 'arrival_time',
150 renderer
: Proxmox
.Utils
.render_size
,
152 dataIndex
: 'message_size',
155 header
: gettext('Sender'),
160 header
: gettext('Receiver'),
162 dataIndex
: 'receiver',
165 header
: gettext('Reason'),
173 updateProxy: function() {
176 if (me
.pendingLoad
) {
184 sortParam
: 'sortfield',
185 directionParam
: 'sortdir',
186 simpleSortMode
: true,
187 url
: "/api2/json/nodes/" + me
.nodename
+ "/postfix/queue/" + me
.queuename
,
190 let filter
= me
.filter
;
192 proxy
.extraParams
= { filter
: filter
};
195 me
.store
.setProxy(proxy
);
197 let nodename
= me
.nodename
;
198 let queuename
= me
.queuename
;
199 me
.pendingLoad
= true;
200 me
.store
.load(function() {
201 me
.pendingLoad
= false;
202 if (me
.nodename
!== nodename
|| me
.filter
!== filter
|| me
.queuename
!== queuename
) {
203 setTimeout(function() {
210 setFilter: function(filter
) {
211 this.lookupReference('filter').setValue(filter
);
214 setNodename: function(nodename
) {
216 if (nodename
=== me
.nodename
) {
217 return; // nothing to do
219 me
.nodename
= nodename
;
224 setQueueName: function(queuename
) {
227 me
.queuename
= queuename
;