]>
git.proxmox.com Git - pmg-gui.git/blob - js/QuarantineList.js
2 Ext
.define('PMG.QuarantineList', {
3 extend
: 'Ext.grid.GridPanel',
4 xtype
: 'pmgQuarantineList',
6 emptyText
: gettext('No E-Mail address selected'),
12 emailSelection
: false,
13 notFoundText
: gettext('No data in database')
21 allowPositionSave
: false,
24 xclass
: 'Ext.app.ViewController',
26 init: function(view
) {
28 if (PMG
.view
=== 'quarantineview') {
29 view
.emailSelection
= false;
32 var emailCombobox
= me
.lookupReference('email');
33 emailCombobox
.setVisible(view
.emailSelection
);
34 emailCombobox
.setDisabled(!view
.emailSelection
);
37 if (PMG
.QuarantineList
.from != 0) {
38 from = new Date(PMG
.QuarantineList
.from * 1000);
40 from = new Date(Date
.now() - 7*24*60*60*1000);
44 if (PMG
.QuarantineList
.to
!= 0) {
45 to
= new Date(PMG
.QuarantineList
.to
* 1000);
50 // we to this to trigger the change event of those fields
51 me
.lookupReference('from').setValue(from);
52 me
.lookupReference('to').setValue(to
);
54 Proxmox
.Utils
.monStoreErrors(view
.getView(), view
.getStore());
57 view
.setSelection(view
.getStore().getById(view
.cselect
));
61 // extjs has no method to dynamically change the emptytext on
62 // grids, so we have to do it this way
63 setEmptyText: function(emptyText
) {
65 var view
= me
.getView();
66 var tableview
= view
.getView();
67 tableview
.emptyText
= '<div class="x-grid-empty">'+ (emptyText
|| view
.notFoundText
) + '</div>';
70 load: function(callback
) {
72 me
.allowPositionSave
= false;
73 var view
= me
.getView();
74 var store
= view
.getStore();
75 if (view
.emailSelection
) {
76 if (!me
.lookupReference('email').getSelection()) {
77 // if the combobox has no selection we do not reload
82 store
.load(function() {
83 if (me
.savedPosition
!== undefined) {
84 if (store
.getCount() - 1 < me
.savedPosition
) {
85 me
.savedPosition
= store
.getCount() - 1;
87 view
.setSelection(store
.getAt(me
.savedPosition
));
91 if (Ext
.isFunction(callback
)) {
94 me
.allowPositionSave
= true;
98 setFrom: function(from) {
99 var me
= this.getView();
100 var params
= me
.getStore().getProxy().getExtraParams();
101 params
.starttime
= from;
102 PMG
.QuarantineList
.from = from;
103 me
.getStore().getProxy().setExtraParams(params
);
106 setTo: function(to
) {
107 var end_of_to
= to
+ 24*60*60; // we want the end of the day
108 var me
= this.getView();
109 var params
= me
.getStore().getProxy().getExtraParams();
110 params
.endtime
= end_of_to
;
111 PMG
.QuarantineList
.to
= to
; // we save the start of the day here
112 me
.getStore().getProxy().setExtraParams(params
);
115 setUser: function(user
) {
116 var me
= this.getView();
117 var params
= me
.getStore().getProxy().getExtraParams();
119 me
.getStore().getProxy().setExtraParams(params
);
123 changeTime: function(field
, value
) {
125 var list
= me
.getView();
127 me
.allowPositionSave
= false;
128 me
.savedPosition
= undefined;
134 var val
= value
.getTime()/1000;
135 var combobox
= me
.lookupReference('email');
136 var params
= combobox
.getStore().getProxy().getExtraParams();
138 var to
= me
.lookupReference('to');
139 var from = me
.lookupReference('from');
141 if (field
.name
=== 'from') {
143 params
.starttime
= val
;
144 to
.setMinValue(value
);
146 } else if (field
.name
=== 'to') {
148 params
.endtime
= val
+ 24*60*60;
149 from.setMaxValue(value
);
154 combobox
.getStore().getProxy().setExtraParams(params
);
155 combobox
.getStore().load();
160 resetEmail: function() {
162 var view
= me
.getView();
163 if (view
.emailSelection
) {
164 me
.setUser(undefined);
168 changeEmail: function(tb
, value
) {
170 me
.savedPosition
= undefined;
171 me
.allowPositionSave
= false;
176 savePosition: function(grid
, selected
, eopts
) {
178 if (!me
.allowPositionSave
) {
181 if (!selected
.length
) {
182 me
.savedPosition
= undefined;
186 var view
= me
.getView();
187 var id
= view
.getStore().indexOf(selected
[0]);
189 me
.savedPosition
= id
;
195 beforedestroy
: 'resetEmail',
196 selectionchange
: 'savePosition'
198 'combobox[reference=email]': {
199 change
: 'changeEmail',
213 groupHeaderTpl
: '{columnName}: {name} ({children.length})'
227 fieldLabel
: gettext('From'),
234 fieldLabel
: gettext('To'),
243 displayField
: 'mail',
247 '<div class="x-grid-empty">' +
248 gettext('No data in database') +
254 url
: '/api2/json/quarantine/spamusers'
259 renderer
: Ext
.htmlEncode
266 forceSelection
: true,