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