]> git.proxmox.com Git - pmg-gui.git/blame - js/DomainStatistics.js
improve gettext usage
[pmg-gui.git] / js / DomainStatistics.js
CommitLineData
ff735274 1/*global Proxmox*/
73360b11
DM
2Ext.define('PMG.DomainStatistics', {
3 extend: 'Ext.panel.Panel',
4 xtype: 'pmgDomainStatistics',
5
3755c9e0 6 title: gettext('Statistics') + ': ' + gettext('Domain'),
73360b11
DM
7
8 tbar: [ { xtype: 'pmgStatTimeSelector' } ],
9
10 layout: 'fit',
50531ef9 11 border: false,
73360b11
DM
12
13 initComponent: function() {
14 var me = this;
15
16 var fields = [
17 'domain',
18 { type: 'integer', name: 'count_in' },
19 { type: 'integer', name: 'count_out' },
20 { type: 'integer', name: 'spamcount_in' },
21 { type: 'integer', name: 'spamcount_out' },
22 { type: 'integer', name: 'viruscount_in' },
23 { type: 'integer', name: 'viruscount_out' },
5009e343
DM
24 { type: 'number', name: 'bytes_in' },
25 { type: 'number', name: 'bytes_out' }
73360b11
DM
26 ];
27
28 var store = Ext.create('PMG.data.StatStore', {
29 staturl: '/api2/json/statistics/domains',
30 fields: fields
31 });
32
33 var store_in = Ext.create('Ext.data.ArrayStore', {
34 fields: fields,
35 filters: [ function(item) { return item.data.count_in > 0; } ]
36 });
37
38 var store_out = Ext.create('Ext.data.ArrayStore', {
39 fields: fields,
40 filters: [ function(item) { return item.data.count_out > 0; } ]
41 });
42
43 store.on('load', function(s, records, successful) {
44 if (!successful) {
45 store_in.setData([]);
46 store_out.setData([]);
47 } else {
48 store_in.setData(records);
49 store_out.setData(records);
50 }
131ba4f6 51 });
73360b11
DM
52
53 var render_domain = function(v) {
96fba078 54 return v === '' ? '--- EMPTY ADDRESS ---' : Ext.htmlEncode(v);
73360b11
DM
55 };
56
de0ebd99 57 me.items = [{
73360b11
DM
58 xtype: 'tabpanel',
59 border: false,
60 items: [
61 {
62 xtype: 'grid',
63 title: gettext('Incoming'),
64 border: false,
65 disableSelection: true,
66 store: store_in,
64fb657f 67 emptyText: gettext('No data in database'),
73360b11
DM
68 viewConfig: {
69 deferEmptyText: false
70 },
71 columns: [
72 {
73 text: gettext('Domain')+ ' (' +
74 gettext('Receiver') + ')',
75 flex: 1,
76 renderer: render_domain,
77 dataIndex: 'domain'
78 },
79 {
80 text: gettext('Traffic') + ' (MB)',
f7066f03 81 dataIndex: 'bytes_in',
73360b11 82 renderer: function(v) {
5009e343 83 return Ext.Number.toFixed(v/(1024*1024), 2);
73360b11
DM
84 }
85 },
86 {
87 text: gettext('Count'),
88 columns: [
89 {
90 text: gettext('Mail'),
91 dataIndex: 'count_in'
92 },
93 {
94 header: gettext('Virus'),
95 dataIndex: 'viruscount_in'
96 },
97 {
98 header: gettext('Spam'),
99 dataIndex: 'spamcount_in'
100 }
101 ]
102 }
103 ]
104 },
105 {
106 xtype: 'grid',
107 title: gettext('Outgoing'),
108 border: false,
109 disableSelection: true,
110 store: store_out,
64fb657f 111 emptyText: gettext('No data in database'),
73360b11
DM
112 viewConfig: {
113 deferEmptyText: false
114 },
115 columns: [
116 {
117 text: gettext('Domain')+ ' (' +
118 gettext('Receiver') + ')',
119 flex: 1,
120 renderer: render_domain,
121 dataIndex: 'domain'
122 },
123 {
124 text: gettext('Traffic') + ' (MB)',
5009e343 125 dataIndex: 'bytes_out',
73360b11 126 renderer: function(v) {
5009e343 127 return Ext.Number.toFixed(v/(1024*1024), 2);
73360b11
DM
128 }
129 },
130 {
131 text: gettext('Count'),
132 columns: [
133 {
134 text: gettext('Mail'),
135 dataIndex: 'count_out'
136 },
137 {
138 header: gettext('Virus'),
139 dataIndex: 'viruscount_out'
140 }
141 ]
142 }
143 ]
144 }
145 ]
de0ebd99 146 }];
73360b11
DM
147
148 me.callParent();
149
150 Proxmox.Utils.monStoreErrors(me, store);
151
152 me.on('destroy', store.destroy, store);
153 }
154});