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