]>
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 | ||
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 | }); |