mirror of
https://git.proxmox.com/git/pmg-gui
synced 2025-05-29 01:40:23 +00:00
154 lines
3.3 KiB
JavaScript
154 lines
3.3 KiB
JavaScript
Ext.define('PMG.DomainStatistics', {
|
|
extend: 'Ext.panel.Panel',
|
|
xtype: 'pmgDomainStatistics',
|
|
|
|
title: gettext('Statistics') + ': ' + gettext('Domain'),
|
|
|
|
tbar: [{ xtype: 'pmgStatTimeSelector' }],
|
|
|
|
layout: 'fit',
|
|
border: false,
|
|
|
|
initComponent: function() {
|
|
var me = this;
|
|
|
|
var fields = [
|
|
'domain',
|
|
{ type: 'integer', name: 'count_in' },
|
|
{ type: 'integer', name: 'count_out' },
|
|
{ type: 'integer', name: 'spamcount_in' },
|
|
{ type: 'integer', name: 'spamcount_out' },
|
|
{ type: 'integer', name: 'viruscount_in' },
|
|
{ type: 'integer', name: 'viruscount_out' },
|
|
{ type: 'number', name: 'bytes_in' },
|
|
{ type: 'number', name: 'bytes_out' },
|
|
];
|
|
|
|
var store = Ext.create('PMG.data.StatStore', {
|
|
staturl: '/api2/json/statistics/domains',
|
|
fields: fields,
|
|
});
|
|
|
|
var store_in = Ext.create('Ext.data.ArrayStore', {
|
|
fields: fields,
|
|
filters: [function(item) { return item.data.count_in > 0; }],
|
|
});
|
|
|
|
var store_out = Ext.create('Ext.data.ArrayStore', {
|
|
fields: fields,
|
|
filters: [function(item) { return item.data.count_out > 0; }],
|
|
});
|
|
|
|
store.on('load', function(s, records, successful) {
|
|
if (!successful) {
|
|
store_in.setData([]);
|
|
store_out.setData([]);
|
|
} else {
|
|
store_in.setData(records);
|
|
store_out.setData(records);
|
|
}
|
|
});
|
|
|
|
var render_domain = function(v) {
|
|
return v === '' ? '--- EMPTY ADDRESS ---' : Ext.htmlEncode(v);
|
|
};
|
|
|
|
me.items = [{
|
|
xtype: 'tabpanel',
|
|
border: false,
|
|
items: [
|
|
{
|
|
xtype: 'grid',
|
|
title: gettext('Incoming'),
|
|
border: false,
|
|
disableSelection: true,
|
|
store: store_in,
|
|
emptyText: gettext('No data in database'),
|
|
viewConfig: {
|
|
deferEmptyText: false,
|
|
},
|
|
columns: [
|
|
{
|
|
text: gettext('Domain')+ ' (' +
|
|
gettext('Receiver') + ')',
|
|
flex: 1,
|
|
renderer: render_domain,
|
|
dataIndex: 'domain',
|
|
},
|
|
{
|
|
text: gettext('Traffic') + ' (MB)',
|
|
dataIndex: 'bytes_in',
|
|
renderer: function(v) {
|
|
return Ext.Number.toFixed(v/(1024*1024), 2);
|
|
},
|
|
},
|
|
{
|
|
text: gettext('Count'),
|
|
columns: [
|
|
{
|
|
text: gettext('Mail'),
|
|
dataIndex: 'count_in',
|
|
},
|
|
{
|
|
header: gettext('Virus'),
|
|
dataIndex: 'viruscount_in',
|
|
},
|
|
{
|
|
header: gettext('Spam'),
|
|
dataIndex: 'spamcount_in',
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
{
|
|
xtype: 'grid',
|
|
title: gettext('Outgoing'),
|
|
border: false,
|
|
disableSelection: true,
|
|
store: store_out,
|
|
emptyText: gettext('No data in database'),
|
|
viewConfig: {
|
|
deferEmptyText: false,
|
|
},
|
|
columns: [
|
|
{
|
|
text: gettext('Domain')+ ' (' +
|
|
gettext('Receiver') + ')',
|
|
flex: 1,
|
|
renderer: render_domain,
|
|
dataIndex: 'domain',
|
|
},
|
|
{
|
|
text: gettext('Traffic') + ' (MB)',
|
|
dataIndex: 'bytes_out',
|
|
renderer: function(v) {
|
|
return Ext.Number.toFixed(v/(1024*1024), 2);
|
|
},
|
|
},
|
|
{
|
|
text: gettext('Count'),
|
|
columns: [
|
|
{
|
|
text: gettext('Mail'),
|
|
dataIndex: 'count_out',
|
|
},
|
|
{
|
|
header: gettext('Virus'),
|
|
dataIndex: 'viruscount_out',
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
],
|
|
}];
|
|
|
|
me.callParent();
|
|
|
|
Proxmox.Utils.monStoreErrors(me, store);
|
|
|
|
me.on('destroy', store.destroy, store);
|
|
},
|
|
});
|