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