]> git.proxmox.com Git - pmg-gui.git/blame - js/ReceiverStatistics.js
improve gettext usage
[pmg-gui.git] / js / ReceiverStatistics.js
CommitLineData
ff735274 1/*global Proxmox*/
de0ebd99
DC
2/*jslint confusion: true*/
3/* filter is a function and object */
2ca04e02
DM
4Ext.define('PMG.ReceiverDetails', {
5 extend: 'Ext.grid.GridPanel',
6 xtype: 'pmgReceiverDetails',
7
8 dockedItems: [
9 {
10 dock: 'top',
11 xtype: 'panel',
12 itemId: 'info',
13 bodyPadding: 10,
14 html: gettext('Please select a receiver.')
15 }
16 ],
17
18 disableSelection: true,
19
8e346db3
DM
20 plugins: 'gridfilters',
21
2ca04e02
DM
22 setUrl: function(url, title) {
23 var me = this;
24
25 me.store.setUrl(url);
eaf3ebec 26 me.store.setRemoteFilter(url !== undefined);
5486028e
DM
27 Proxmox.Utils.setErrorMask(me, false);
28 me.store.reload();
2ca04e02
DM
29
30 var infopanel = me.getComponent('info');
31 if (title) {
32 infopanel.update(title);
33 } else {
34 infopanel.update(gettext('Please select a sender.'));
35 }
36 },
37
38 store: {
39 type: 'pmgStatStore',
c1a5d150 40 autoReload: false,
2ca04e02 41 remoteSort: true,
eaf3ebec 42 remoteFilter: false, // enabled dynamically
2ca04e02
DM
43 fields: [
44 'sender', 'virusinfo',
45 { type: 'integer', name: 'bytes' },
46 { type: 'boolean', name: 'blocked' },
47 { type: 'integer', name: 'spamlevel' },
48 { type: 'date', dateFormat: 'timestamp', name: 'time' }
49 ],
50 proxy: {
8e346db3
DM
51 type: 'pmgfilterproxy',
52 filterId: 'x-gridfilter-sender',
2ca04e02
DM
53 sortParam: 'orderby'
54 },
55 sorters: [
56 {
57 property: 'time',
58 direction: 'ASC'
59 }
60 ]
61 },
62
63 columns: [
64 {
65 text: gettext('Sender'),
66 renderer: Ext.htmlEncode,
67 flex: 1,
8e346db3 68 filter: { type: 'string' },
2ca04e02
DM
69 dataIndex: 'sender'
70 },
71 {
72 header: gettext('Size') + ' (KB)',
73 renderer: function(v) { return Ext.Number.toFixed(v/1024, 0); },
74 dataIndex: 'bytes'
75 },
76 {
77 xtype: 'datecolumn',
78 header: gettext('Date'),
79 format: 'Y-m-d',
80 dataIndex: 'time'
81 },
82 {
83 xtype: 'datecolumn',
84 header: gettext('Time'),
bd69f90e 85 format: 'H:i:s',
2ca04e02
DM
86 dataIndex: 'time'
87 },
88 {
89 header: gettext('Virus info'),
90 dataIndex: 'virusinfo'
91 },
92 {
93 header: gettext('Score'),
94 dataIndex: 'spamlevel'
95 }
96 ],
97
98 initComponent: function() {
99 var me = this;
100 me.callParent();
101
5486028e 102 Proxmox.Utils.monStoreErrors(me, me.store, true);
2ca04e02
DM
103 }
104});
105
106Ext.define('PMG.ReceiverList', {
107 extend: 'Ext.grid.GridPanel',
108 alias: 'widget.pmgReceiverList',
ff8a07c6 109
e9837921
DM
110 title: gettext('Statistics') + ': ' + gettext('Receiver') +
111 ' (' + gettext('Incoming') +')',
ff8a07c6 112
2ca04e02
DM
113 multiColumnSort: true,
114 plugins: 'gridfilters',
115
64fb657f 116 emptyText: gettext('No data in database'),
2ca04e02
DM
117 viewConfig: {
118 deferEmptyText: false
119 },
120
ff8a07c6
DM
121 tbar: [ { xtype: 'pmgStatTimeSelector' } ],
122
2ca04e02
DM
123 store: {
124 type: 'pmgStatStore',
125 staturl: '/api2/json/statistics/receiver',
126 remoteSort: true,
127 remoteFilter: true,
128 fields: [
129 'receiver',
130 { type: 'integer', name: 'count' },
131 { type: 'integer', name: 'bytes' },
132 { type: 'integer', name: 'viruscount' }
133 ],
134 proxy: {
135 type: 'pmgfilterproxy',
136 sortParam: 'orderby',
137 filterId: 'x-gridfilter-receiver'
138 },
139 sorters: [
140 {
141 property: 'count',
142 direction: 'DESC'
143 },
144 {
145 property: 'bytes',
146 direction: 'DESC'
147 },
148 {
149 property: 'receiver',
150 direction: 'ASC'
151 }
152 ]
153 },
ff8a07c6 154
2ca04e02
DM
155 columns: [
156 {
157 text: gettext('Receiver'),
158 flex: 1,
159 renderer: Ext.htmlEncode,
160 dataIndex: 'receiver',
161 filter: {
162 type: 'string',
163 itemDefaults: {
164 // any Ext.form.field.Text configs accepted
165 }
166 }
167 },
168 {
169 text: gettext('Count'),
170 columns: [
171 {
172 text: gettext('Mail'),
173 dataIndex: 'count'
174 },
175 {
176 header: gettext('Virus'),
177 dataIndex: 'viruscount'
178 },
179 {
180 header: gettext('Spam'),
181 dataIndex: 'spamcount'
182 }
183 ]
184 },
185 {
186 text: gettext('Size') + ' (KB)',
187 dataIndex: 'bytes',
188 renderer: function(v) {
189 return Ext.Number.toFixed(v/1024, 0);
190 }
191 }
192 ],
ff8a07c6 193
2ca04e02
DM
194 initComponent: function() {
195 var me = this;
196 me.callParent();
197
5486028e 198 Proxmox.Utils.monStoreErrors(me, me.store, true);
2ca04e02 199 }
ff8a07c6
DM
200});
201
2ca04e02
DM
202Ext.define('PMG.ReceiverStatistics', {
203 extend: 'Ext.panel.Panel',
204 xtype: 'pmgReceiverStatistics',
205
206 layout: 'border',
207 border: false,
208 defaults: {
771bd0b9 209 border: false
2ca04e02
DM
210 },
211
212 controller: {
213 xclass: 'Ext.app.ViewController',
ff8a07c6 214
2ca04e02
DM
215 selectionChange: function(grid, selected, eOpts) {
216 var details = this.lookupReference('details');
217 if (selected.length > 0) {
218 var receiver = selected[0].data.receiver;
219 var url = "/api2/json/statistics/receiver/" +
220 encodeURIComponent(receiver);
221 details.setUrl(url, '<b>' + gettext('Receiver') + ':</b> ' + Ext.htmlEncode(receiver));
222 } else {
223 details.setUrl();
224 }
225 }
226 },
227
228 items: [
229 {
230 xtype: 'pmgReceiverList',
231 multiColumnSort: true,
232 region: 'center',
233 layout: 'fit',
234 flex: 1,
235
771bd0b9 236 listeners: { selectionchange: 'selectionChange' }
2ca04e02
DM
237 },
238 {
239 xtype: 'pmgReceiverDetails',
240 region: 'east',
241 reference: 'details',
242 split: true,
243 flex: 1
244 }
245 ]
246});