]>
Commit | Line | Data |
---|---|---|
ff735274 | 1 | /*global Proxmox*/ |
73360b11 DM |
2 | Ext.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, | |
67 | emptyText: gettext('No data in database.'), | |
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, | |
111 | emptyText: gettext('No data in database.'), | |
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 | }); |