]>
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(); | |
70b0bec4 DM |
35 | |
36 | view.filter = filter; | |
37 | view.updateProxy(); | |
df71aecf DM |
38 | }); |
39 | }, | |
40 | ||
41 | onChangeFilter: function(f, v) { | |
42 | var view = this.getView(); | |
43 | view.delayFilterTask.delay(500); | |
44 | }, | |
45 | ||
46 | control: { | |
55589b49 DM |
47 | '#': { |
48 | activate: function() { | |
49 | this.view.updateProxy(); // reload | |
50 | } | |
51 | }, | |
df71aecf DM |
52 | 'field[reference=filter]': { |
53 | change: 'onChangeFilter' | |
54 | } | |
ccf06524 DM |
55 | } |
56 | }, | |
57 | ||
df71aecf DM |
58 | tbar: [ |
59 | { | |
60 | xtype: 'label', | |
61 | html: gettext('Filter') + ':' | |
62 | }, | |
63 | { | |
64 | xtype: 'textfield', | |
65 | width: 300, | |
66 | reference: 'filter' | |
67 | } | |
68 | ], | |
69 | ||
ccf06524 DM |
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 | ||
df71aecf DM |
99 | pendingLoad: false, |
100 | ||
101 | updateProxy: function() { | |
ccf06524 DM |
102 | var me = this; |
103 | ||
df71aecf | 104 | if (me.pendingLoad) return; |
ccf06524 | 105 | |
df71aecf | 106 | var proxy = { |
ccf06524 | 107 | type: 'proxmox', |
34d0b6cc DM |
108 | startParam: 'start', |
109 | limitParam: 'limit', | |
df71aecf DM |
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 | } | |
ccf06524 | 130 | }); |
df71aecf DM |
131 | }, |
132 | ||
133 | setFilter: function(filter) { | |
70b0bec4 | 134 | this.lookupReference('filter').setValue(filter); |
df71aecf DM |
135 | }, |
136 | ||
137 | setNodename: function(nodename) { | |
138 | var me = this; | |
139 | ||
140 | me.nodename = nodename; | |
141 | ||
142 | me.updateProxy(); | |
ccf06524 DM |
143 | } |
144 | ||
145 | }); |