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