]>
git.proxmox.com Git - pmg-gui.git/blob - js/PostfixMailQueue.js
2 Ext
.define('pmg-mailq', {
3 extend
: 'Ext.data.Model',
5 'queue_id', 'queue_name',
6 { type
: 'date', dateFormat
: 'timestamp', name
: 'arrival_time'},
7 { type
: 'integer', name
: 'message_size'},
8 'sender', 'receiver', 'reason'
10 idProperty
: 'queue_id'
13 Ext
.define('PMG.Postfix.MailQueue', {
14 extend
: 'Ext.grid.GridPanel',
15 alias
: 'widget.pmgPostfixMailQueue',
21 queuename
: 'deferred',
24 xclass
: 'Ext.data.BufferedStore',
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
);
68 onRemove: function(button
, event
, rec
) {
69 var view
= this.getView();
71 Proxmox
.Utils
.API2Request({
72 url
: '/api2/extjs/nodes/' + view
.nodename
+ '/postfix/queue/' +
73 view
.queuename
+ '/' + rec
.data
.queue_id
,
76 success: function(response
, opts
) {
77 view
.selModel
.deselectAll();
80 failure: function (response
, opts
) {
81 Ext
.Msg
.alert(gettext('Error'), response
.htmlStatus
);
86 onHeaders: function(button
, event
, rec
) {
87 var view
= this.getView();
89 var url
= '/api2/extjs/nodes/' + view
.nodename
+ '/postfix/queue/' +
90 view
.queuename
+ '/' + rec
.data
.queue_id
;
92 var win
= Ext
.create('PMG.ViewMailHeaders', {
93 title
: view
.title
+ ' : ' + rec
.data
.queue_id
,
101 activate: function() {
102 this.view
.updateProxy(); // reload
104 itemdblclick: function(grid
, rec
, item
, index
, event
) {
105 this.onHeaders(grid
, event
, rec
);
108 'field[reference=filter]': {
109 change
: 'onChangeFilter'
116 xtype
: 'proxmoxButton',
118 text
: gettext('Headers'),
122 xtype
: 'proxmoxButton',
124 text
: gettext('Flush'),
128 xtype
: 'proxmoxStdRemoveButton',
133 html
: gettext('Filter') + ':'
144 header
: gettext('Time'),
146 renderer
: Ext
.util
.Format
.dateRenderer("Y-m-d H:i:s"),
147 dataIndex
: 'arrival_time'
151 renderer
: Proxmox
.Utils
.format_size
,
153 dataIndex
: 'message_size'
156 header
: gettext('Sender'),
161 header
: gettext('Receiver'),
163 dataIndex
: 'receiver'
166 header
: gettext('Reason'),
174 updateProxy: function() {
177 if (me
.pendingLoad
) {
185 sortParam
: 'sortfield',
186 directionParam
: 'sortdir',
187 simpleSortMode
: true,
188 url
: "/api2/json/nodes/" + me
.nodename
+ "/postfix/queue/" + me
.queuename
191 var filter
= me
.filter
;
192 var nodename
= me
.nodename
;
193 var queuename
= me
.queuename
;
195 if (filter
) { proxy
.extraParams
= { filter
: filter
}; }
198 me
.store
.setProxy(proxy
);
200 me
.pendingLoad
= true;
202 me
.store
.load(function() {
203 me
.pendingLoad
= false;
204 if (me
.nodename
!== nodename
|| me
.filter
!== filter
|| me
.queuename
!== queuename
) {
205 setTimeout(function() {
212 setFilter: function(filter
) {
213 this.lookupReference('filter').setValue(filter
);
216 setNodename: function(nodename
) {
219 me
.nodename
= nodename
;
224 setQueueName: function(queuename
) {
227 me
.queuename
= queuename
;