]>
git.proxmox.com Git - pmg-gui.git/blob - js/Dashboard.js
1 Ext
.define('PMG.Dashboard', {
2 extend
: 'Ext.panel.Panel',
6 xclass
: 'Ext.app.ViewController',
8 openDashboardOptions: function() {
10 var viewModel
= me
.getViewModel();
11 Ext
.create('Ext.window.Window', {
14 title
: gettext('Dashboard Options'),
21 defaultButton
: 'savebutton',
23 xtype
: 'proxmoxintegerfield',
30 value
: viewModel
.get('hours'),
31 fieldLabel
: gettext('Hours to show')
34 text
: gettext('Save'),
35 reference
: 'loginButton',
38 var win
= this.up('window');
39 var hours
= win
.down('#hours').getValue();
40 me
.setHours(hours
, true);
48 setHours: function(hours
, setState
) {
50 var viewModel
= me
.getViewModel();
51 viewModel
.set('hours', hours
);
54 Ext
.Array
.forEach(['recentmails', 'receivers'], function(item
) {
55 viewModel
.get(item
).load();
59 var sp
= Ext
.state
.Manager
.getProvider();
60 sp
.set('dashboard-hours', hours
);
64 updateMailStats: function(store
, records
, success
) {
69 var viewModel
= me
.getViewModel();
77 records
.forEach(function(item
) {
78 bytes_in
+= item
.data
.bytes_in
;
79 bytes_out
+= item
.data
.bytes_out
;
80 count
+= item
.data
.count
;
81 ptime
+= item
.data
.ptimesum
;
85 avg_ptime
= (ptime
/count
).toFixed(2);
88 viewModel
.set('bytes_in', Proxmox
.Utils
.format_size(bytes_in
));
89 viewModel
.set('bytes_out', Proxmox
.Utils
.format_size(bytes_out
));
90 viewModel
.set('avg_ptime', avg_ptime
+ " s");
93 updateClusterStats: function(store
, records
, success
) {
98 var viewmodel
= me
.getViewModel();
100 var subStatus
= 2; // 2 = all good, 1 = different leves, 0 = none
106 var count
= records
.length
;
108 records
.forEach(function(item
) {
109 // subscription level check
110 if (subStatus
&& item
.data
.level
) {
111 if (subLevel
!== "" && subLevel
!== item
.data
.level
) {
113 } else if (subLevel
=== "") {
114 subLevel
= item
.data
.level
;
121 cpu
+= item
.data
.cpu
;
122 mem
+= (item
.data
.memory
.used
/item
.data
.memory
.total
);
123 hd
+= (item
.data
.rootfs
.used
/item
.data
.rootfs
.total
);
126 var subscriptionPanel
= me
.lookup('subscription');
127 subscriptionPanel
.setSubStatus(subStatus
);
133 var cpuPanel
= me
.lookup('cpu');
134 cpuPanel
.updateValue(cpu
);
136 var memPanel
= me
.lookup('mem')
137 memPanel
.updateValue(mem
);
139 var hdPanel
= me
.lookup('hd')
140 hdPanel
.updateValue(hd
);
143 init: function(view
) {
145 var sp
= Ext
.state
.Manager
.getProvider();
146 var hours
= sp
.get('dashboard-hours') || 12;
147 me
.setHours(hours
, false);
153 timespan
: 300, // in seconds
154 hours
: 12, // in hours
162 storeid
: 'dash-cluster',
170 url
: '/api2/json/config/cluster/status'
173 load
: 'updateClusterStats'
177 storeid
: 'dash-recent',
185 url
: '/api2/json/statistics/recent',
188 timespan
: '{timespan}'
192 { type
: 'integer', name
: 'count' },
193 { type
: 'integer', name
: 'count_in' },
194 { type
: 'integer', name
: 'count_out' },
195 { type
: 'integer', name
: 'spam' },
196 { type
: 'integer', name
: 'spam_in' },
197 { type
: 'integer', name
: 'spam_out' },
198 { type
: 'integer', name
: 'virus' },
199 { type
: 'integer', name
: 'virus_in' },
200 { type
: 'integer', name
: 'virus_out' },
201 { type
: 'integer', name
: 'bytes_in' },
202 { type
: 'integer', name
: 'bytes_out' },
203 { type
: 'number', name
: 'ptimesum' },
204 { type
: 'date', dateFormat
: 'timestamp', name
: 'time' }
207 load
: 'updateMailStats'
211 storeid
: 'dash-receivers',
219 url
: '/api2/json/statistics/recentreceivers',
225 { type
: 'integer', name
: 'count' },
226 { type
: 'string', name
: 'receiver' }
233 title
: gettext('Dashboard') + ' (' +
234 Ext
.String
.format(gettext('{0} hours'), '{hours}') + ')'
240 bodyPadding
: '20 0 0 20',
251 handler
: 'openDashboardOptions'
261 iconCls
: 'fa fa-tachometer',
262 title
: gettext('E-Mail Volume'),
268 xtype
: 'pmgMiniGraph',
270 store
: '{recentmails}'
276 fieldTitles
: [ gettext('Mails') ],
278 colors
: [ '#00617F' ],
291 fieldTitles
: [ gettext('Spam') ],
293 colors
: [ '#E67300' ],
315 xtype
: 'pmgMailProcessing',
316 title
: gettext('E-Mail Processing'),
317 iconCls
: 'fa fa-hourglass-half',
322 'out': '{bytes_out}',
323 'ptime': '{avg_ptime}'
328 iconCls
: 'fa fa-ticket',
329 title
: 'Subscription',
330 reference
: 'subscription',
331 xtype
: 'pmgSubscriptionInfo',
339 iconCls
: 'fa fa-tasks',
340 title
: 'Node Resources',
341 bodyPadding
: '0 20 0 20',
347 xtype
: 'proxmoxGauge',
348 spriteFontSize
: '20px',
353 title
: gettext('CPU'),
357 title
: gettext('Memory'),
361 title
: gettext('Storage'),
368 iconCls
: 'fa fa-list',
369 title
: gettext('Top Receivers'),
383 emptyText
: gettext('No data in database'),
385 // remove all borders/lines/headers
398 dataIndex
: 'receiver',
400 text
: gettext('Receiver')
405 text
: gettext('Count')