]>
Commit | Line | Data |
---|---|---|
73360b11 DM |
1 | Ext.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 | }); |