]> git.proxmox.com Git - pmg-gui.git/blob - js/PostfixMailQueue.js
PostfixMailQueue.js: reload on activate
[pmg-gui.git] / js / PostfixMailQueue.js
1 Ext.define('pmg-mailq', {
2 extend: 'Ext.data.Model',
3 fields: [
4 'queue_id', 'queue_name',
5 { type: 'date', dateFormat: 'timestamp', name: 'arrival_time'},
6 { type: 'integer', name: 'message_size'},
7 'sender', 'receiver', 'reason'
8 ],
9 idProperty: 'queue_id'
10 });
11
12 Ext.define('PMG.Postfix.MailQueue', {
13 extend: 'Ext.grid.GridPanel',
14 alias: 'widget.pmgPostfixMailQueue',
15
16 nodename : undefined,
17 filter: undefined,
18
19 store: {
20 xclass: 'Ext.data.BufferedStore',
21 model: 'pmg-mailq',
22 remoteFilter: true,
23 pageSize: 2000
24 },
25
26 controller: {
27
28 xclass: 'Ext.app.ViewController',
29
30 init: function(view) {
31 if (view.nodename) view.setNodename(view.nodename);
32
33 view.delayFilterTask = new Ext.util.DelayedTask(function() {
34 var filter = view.lookupReference('filter').getValue();
35
36 view.filter = filter;
37 view.updateProxy();
38 });
39 },
40
41 onChangeFilter: function(f, v) {
42 var view = this.getView();
43 view.delayFilterTask.delay(500);
44 },
45
46 control: {
47 '#': {
48 activate: function() {
49 this.view.updateProxy(); // reload
50 }
51 },
52 'field[reference=filter]': {
53 change: 'onChangeFilter'
54 }
55 }
56 },
57
58 tbar: [
59 {
60 xtype: 'label',
61 html: gettext('Filter') + ':'
62 },
63 {
64 xtype: 'textfield',
65 width: 300,
66 reference: 'filter'
67 }
68 ],
69
70 columns: [
71 {
72 header: gettext('Time'),
73 width: 150,
74 renderer: Ext.util.Format.dateRenderer("Y-m-d H:i:s"),
75 dataIndex: 'arrival_time'
76 },
77 {
78 header: 'KByte',
79 width: 80,
80 dataIndex: 'message_size'
81 },
82 {
83 header: gettext('Sender'),
84 width: 200,
85 dataIndex: 'sender'
86 },
87 {
88 header: gettext('Receiver'),
89 width: 200,
90 dataIndex: 'receiver'
91 },
92 {
93 header: gettext('Reason'),
94 flex: 1,
95 dataIndex: 'reason'
96 }
97 ],
98
99 pendingLoad: false,
100
101 updateProxy: function() {
102 var me = this;
103
104 if (me.pendingLoad) return;
105
106 var proxy = {
107 type: 'proxmox',
108 startParam: 'start',
109 limitParam: 'limit',
110 url: "/api2/json/nodes/" + me.nodename + "/postfix/mailq"
111 };
112
113 var filter = me.filter;
114 var nodename = me.nodename;
115
116 if (filter) { proxy.extraParams = { filter: filter }; }
117
118
119 me.store.setProxy(proxy);
120
121 me.pendingLoad = true;
122
123 me.store.load(function() {
124 me.pendingLoad = false;
125 if (me.nodename != nodename || me.filter != filter) {
126 setTimeout(function() {
127 me.updateProxy();
128 }, 100);
129 }
130 });
131 },
132
133 setFilter: function(filter) {
134 this.lookupReference('filter').setValue(filter);
135 },
136
137 setNodename: function(nodename) {
138 var me = this;
139
140 me.nodename = nodename;
141
142 me.updateProxy();
143 }
144
145 });