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