]> git.proxmox.com Git - pmg-gui.git/blame - js/QuarantineList.js
set the from date for QuarantineList from url parameter
[pmg-gui.git] / js / QuarantineList.js
CommitLineData
75fcb6fd
DC
1Ext.define('PMG.QuarantineList', {
2 extend: 'Ext.grid.GridPanel',
3 xtype: 'pmgQuarantineList',
4
5 emptyText: gettext('No E-Mail address selected'),
6 viewConfig: {
7 deferEmptyText: false
8 },
9
10 config: {
11 emailSelection: false,
12 notFoundText: gettext('No data in database.')
13 },
14
c70a57fb
DC
15 statics: {
16 from: 0,
17 to: 0
18 },
75fcb6fd
DC
19
20 controller: {
21 xclass: 'Ext.app.ViewController',
22
23 init: function(view) {
24 var me = this;
99bba12c 25 if (PMG.view === 'quarantineview') {
75fcb6fd
DC
26 view.emailSelection = false;
27 me.setEmptyText();
28 }
29 var emailCombobox = me.lookupReference('email');
30 emailCombobox.setVisible(view.emailSelection);
31 emailCombobox.setDisabled(!view.emailSelection);
32
c70a57fb
DC
33 var from;
34 if (PMG.QuarantineList.from != 0) {
35 from = new Date(PMG.QuarantineList.from * 1000);
36 } else {
37 from = new Date();
38 }
39
40 var to;
41 if (PMG.QuarantineList.to != 0) {
42 to = new Date(PMG.QuarantineList.to * 1000);
43 } else {
44 to = new Date();
45 }
46
75fcb6fd 47 // we to this to trigger the change event of those fields
c70a57fb
DC
48 me.lookupReference('from').setValue(from);
49 me.lookupReference('to').setValue(to);
75fcb6fd 50
2f8fe1a3 51 Proxmox.Utils.monStoreErrors(view.getView(), view.getStore());
207471c0
DC
52 me.load(function() {
53 if (view.cselect) {
54 view.setSelection(view.getStore().getById(view.cselect));
55 }
56 });
75fcb6fd
DC
57 },
58 // extjs has no method to dynamically change the emptytext on
59 // grids, so we have to do it this way
60 setEmptyText: function(emptyText) {
61 var me = this;
62 var view = me.getView();
63 var tableview = view.getView();
64 tableview.emptyText = '<div class="x-grid-empty">'+ (emptyText || view.notFoundText) + '</div>';
65 },
66
207471c0 67 load: function(callback) {
75fcb6fd
DC
68 var me = this;
69 var view = me.getView();
70 if (view.emailSelection) {
71 if (!me.lookupReference('email').getSelection()) {
72 // if the combobox has no selection we do not reload
73 return;
74 }
ff0ee46d 75 me.setEmptyText();
75fcb6fd 76 }
207471c0 77 view.getStore().load(callback);
75fcb6fd
DC
78 },
79
80 setFrom: function(from) {
81 var me = this.getView();
82 var params = me.getStore().getProxy().getExtraParams();
83 params.starttime = from;
c70a57fb 84 PMG.QuarantineList.from = from;
75fcb6fd
DC
85 me.getStore().getProxy().setExtraParams(params);
86 },
87
88 setTo: function(to) {
c70a57fb 89 var end_of_to = to + 24*60*60; // we want the end of the day
75fcb6fd
DC
90 var me = this.getView();
91 var params = me.getStore().getProxy().getExtraParams();
c70a57fb
DC
92 params.endtime = end_of_to;
93 PMG.QuarantineList.to = to; // we save the start of the day here
75fcb6fd
DC
94 me.getStore().getProxy().setExtraParams(params);
95 },
96
97 setUser: function(user) {
98 var me = this.getView();
99 var params = me.getStore().getProxy().getExtraParams();
100 params.pmail = user;
101 me.getStore().getProxy().setExtraParams(params);
102 me.user = user;
103 },
104
105 changeTime: function(field, value) {
106 var me = this;
107 var list = me.getView();
108
109 if (!value) {
110 return;
111 }
112
113 var val = value.getTime()/1000;
114 var combobox = me.lookupReference('email');
115 var params = combobox.getStore().getProxy().getExtraParams();
116
117 var to = me.lookupReference('to');
118 var from = me.lookupReference('from');
119
120 if (field.name === 'from') {
121 me.setFrom(val);
122 params.starttime = val;
123 to.setMinValue(value);
124
125 } else if (field.name === 'to') {
c70a57fb 126 me.setTo(val);
75fcb6fd
DC
127 params.endtime = val + 24*60*60;
128 from.setMaxValue(value);
129 } else {
130 return;
131 }
132
133 // the combobox does not know anything about the extraparams
134 // so we disable queryCaching until we expand (and query) again
135 combobox.queryCaching = false;
136 combobox.getStore().getProxy().setExtraParams(params);
137
138 me.load();
139 },
140
141 resetEmail: function() {
142 var me = this;
143 var view = me.getView();
144 if (view.emailSelection) {
145 me.setUser(undefined);
146 }
147 },
148
149 changeEmail: function(tb, value) {
150 var me = this;
151 me.setUser(value);
152 me.load();
153 },
154
155 setQueryCaching: function() {
156 this.lookupReference('email').queryCaching = true;
157 },
158
159 control: {
160 '#':{
161 beforedestroy: 'resetEmail',
162 },
163 'combobox[reference=email]': {
164 change: {
165 fn: 'changeEmail',
166 buffer: 500
167 },
168 expand: 'setQueryCaching'
169 },
170 datefield: {
171 change: {
172 fn: 'changeTime'
173 }
174 }
175
176 }
177 },
178
179 features: [
180 {
181 ftype: 'grouping',
182 groupHeaderTpl: '{columnName}: {name} ({children.length})'
183 }
184 ],
185
186 tbar: {
187 layout: {
188 type: 'vbox',
189 align: 'stretch'
190 },
191 defaults: {
192 margin: 2
193 },
194 items: [
195 {
196 fieldLabel: gettext('From'),
197 reference: 'from',
198 xtype: 'datefield',
199 format: 'Y-m-d',
200 name: 'from'
201 },
202 {
203 fieldLabel: gettext('To'),
204 reference: 'to',
205 xtype: 'datefield',
206 format: 'Y-m-d',
207 name: 'to'
208 },
209 {
210 xtype: 'combobox',
211 hidden: true,
212 displayField: 'mail',
213 valueField: 'mail',
94153e9a
DC
214 listConfig: {
215 emptyText:
216 '<div class="x-grid-empty">' +
217 gettext('No Data in Database') +
218 '</div>'
219 },
75fcb6fd
DC
220 store: {
221 proxy: {
222 type: 'proxmox',
223 url: '/api2/json/quarantine/spamusers'
96fba078
DC
224 },
225 fields: [
226 {
227 name: 'mail',
228 renderer: Ext.htmlEncode
229 }
230 ]
75fcb6fd
DC
231 },
232 queryParam: false,
233 queryCaching: false,
234 editable: false,
235 reference: 'email',
236 name: 'email',
237 fieldLabel: 'E-Mail'
238 }
239 ]
240 }
241});