]>
git.proxmox.com Git - pmg-gui.git/blob - js/QuarantineList.js
1 Ext
.define('PMG.QuarantineList', {
2 extend
: 'Ext.grid.GridPanel',
3 xtype
: 'pmgQuarantineList',
5 emptyText
: gettext('No E-Mail address selected'),
11 emailSelection
: false,
12 notFoundText
: gettext('No data in database'),
20 allowPositionSave
: false,
23 xclass
: 'Ext.app.ViewController',
25 init: function(view
) {
27 if (PMG
.view
=== 'quarantineview') {
28 view
.emailSelection
= false;
31 let emailCombobox
= me
.lookupReference('email');
32 emailCombobox
.setVisible(view
.emailSelection
);
33 emailCombobox
.setDisabled(!view
.emailSelection
);
36 if (PMG
.QuarantineList
.from !== 0) {
37 from = new Date(PMG
.QuarantineList
.from * 1000);
39 from = new Date(Date
.now() - 7 * 24 * 60 * 60 * 1000);
43 if (PMG
.QuarantineList
.to
!== 0) {
44 to
= new Date(PMG
.QuarantineList
.to
* 1000);
49 // we to this to trigger the change event of those fields
50 me
.lookupReference('from').setValue(from);
51 me
.lookupReference('to').setValue(to
);
53 Proxmox
.Utils
.monStoreErrors(view
.getView(), view
.getStore());
56 view
.setSelection(view
.getStore().getById(view
.cselect
));
60 // extjs has no method to dynamically change the emptytext on
61 // grids, so we have to do it this way
62 setEmptyText: function(emptyText
) {
64 let view
= me
.getView();
65 let tableview
= view
.getView();
66 tableview
.emptyText
= '<div class="x-grid-empty">'+ (emptyText
|| view
.notFoundText
) + '</div>';
69 load: function(callback
) {
71 me
.allowPositionSave
= false;
72 let view
= me
.getView();
73 let store
= view
.getStore();
74 if (view
.emailSelection
) {
75 if (!me
.lookupReference('email').getSelection()) {
76 // if the combobox has no selection we do not reload
81 store
.load(function() {
82 if (me
.savedPosition
!== undefined) {
83 if (store
.getCount() - 1 < me
.savedPosition
) {
84 me
.savedPosition
= store
.getCount() - 1;
86 view
.setSelection(store
.getAt(me
.savedPosition
));
90 if (Ext
.isFunction(callback
)) {
93 me
.allowPositionSave
= true;
97 setFrom: function(from) {
98 let view
= this.getView();
99 let params
= view
.getStore().getProxy().getExtraParams();
100 params
.starttime
= from;
101 PMG
.QuarantineList
.from = from;
102 view
.getStore().getProxy().setExtraParams(params
);
105 setTo: function(to
) {
106 let end_of_to
= to
+ 24*60*60; // we want the end of the day
107 let view
= this.getView();
108 let params
= view
.getStore().getProxy().getExtraParams();
109 params
.endtime
= end_of_to
;
110 PMG
.QuarantineList
.to
= to
; // we save the start of the day here
111 view
.getStore().getProxy().setExtraParams(params
);
114 setUser: function(user
) {
115 let view
= this.getView();
116 let params
= view
.getStore().getProxy().getExtraParams();
118 view
.getStore().getProxy().setExtraParams(params
);
122 changeTime: function(field
, value
) {
125 me
.allowPositionSave
= false;
126 me
.savedPosition
= undefined;
132 let val
= value
.getTime() / 1000;
133 let combobox
= me
.lookupReference('email');
134 let params
= combobox
.getStore().getProxy().getExtraParams();
136 let to
= me
.lookupReference('to');
137 let from = me
.lookupReference('from');
139 if (field
.name
=== 'from') {
141 params
.starttime
= val
;
142 to
.setMinValue(value
);
143 } else if (field
.name
=== 'to') {
145 params
.endtime
= val
+ 24*60*60;
146 from.setMaxValue(value
);
151 combobox
.getStore().getProxy().setExtraParams(params
);
152 combobox
.getStore().load();
157 resetEmail: function() {
159 let view
= me
.getView();
160 if (view
.emailSelection
) {
161 me
.setUser(undefined);
165 changeEmail: function(tb
, value
) {
167 me
.savedPosition
= undefined;
168 me
.allowPositionSave
= false;
173 savePosition: function(grid
, selected
, eopts
) {
175 if (!me
.allowPositionSave
) {
178 if (!selected
.length
) {
179 me
.savedPosition
= undefined;
183 let view
= me
.getView();
184 let id
= view
.getStore().indexOf(selected
[0]);
186 me
.savedPosition
= id
;
192 beforedestroy
: 'resetEmail',
193 selectionchange
: 'savePosition',
195 'combobox[reference=email]': {
196 change
: 'changeEmail',
210 groupHeaderTpl
: '{columnName}: {name} ({children.length})',
226 fieldLabel
: gettext('Since'),
233 fieldLabel
: gettext('Until'),
240 displayField
: 'mail',
244 '<div class="x-grid-empty">' +
245 gettext('No data in database') +
251 url
: '/api2/json/quarantine/spamusers',
256 renderer
: Ext
.htmlEncode
,
263 forceSelection
: true,
268 fieldLabel
: 'E-Mail',