]> git.proxmox.com Git - pmg-gui.git/blame - js/PostfixMailQueue.js
js/PostfixMailQueue.js: use buffered store with large page size
[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
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});