FR.spaceQuota = {
store: new Ext.data.SimpleStore({
fields: [
{name: 'id', type: 'integer'}, {name: 'username'}, {name: 'name'}, {name: 'max'},
{name: 'maxNice'}, {name: 'used'}, {name: 'usedNice'}, {name: 'percent'}
]
}),
sb: new Ext.ux.StatusBar({id: 'my-status', defaultText:' '}),
calculateAll: false
};
FR.spaceQuota.store.loadData(FR.users);
FR.spaceQuota.grid = new Ext.grid.GridPanel({
title: FR.T('Storage usage'), border: false,
store: FR.spaceQuota.store, cls: 'FREditForm',
selModel: new Ext.grid.RowSelectionModel({
singleSelect:true,
listeners: {
'selectionchange': function(sm) {
var r = sm.getSelected();
if (!r) {return;}
FR.spaceQuota.getQuota(r);
}
}
}),
cm: new Ext.grid.ColumnModel({
defaults: {sortable: true},
columns: [
{header: FR.T("Id"), width: 30, dataIndex: 'id', hidden: true},
{header: ' ', width: 33, resizable: false, sortable: false, renderer: function(v, m, r) {return '
';}},
{id:'uname', header: FR.T("Name"), width: 150, dataIndex: 'name'},
{id:'usrname', header: FR.T("Username"), width: 150, dataIndex: 'username'},
{header: FR.T("Quota"), width: 75, renderer: function(v, m, r) {return r.data.maxNice;}, dataIndex: 'max'},
{header: FR.T("Used"), width: 75, renderer: function(v, m, r) {
if (r.data.max > 0 && (v >= r.data.max)) {
return '' +r.data.usedNice+ '';
} else {
return r.data.usedNice;
}
}, dataIndex: 'used'},
{header: FR.T("Usage"), width: 85, renderer: function(v, m, r) {
if (v > FR.highlightLimit) {
return '' +v+ '%';
} else {
if (v) {return v+'%';} else {return '';}
}
}, dataIndex: 'percent'}
]
}),
bbar: FR.spaceQuota.sb,
listeners: {
'destroy': function() {
Ext.Ajax.abort(FR.spaceQuota.ajaxReq);
FR.spaceQuota = false;
}
},
tbar: [
{
text: FR.T('Calculate all'),
iconCls: 'fa fa-fw fa-refresh',
enableToggle: true,
toggleHandler: function(btn, pressed) {
FR.spaceQuota.calculateAll = pressed;
if (pressed) {
var data = FR.spaceQuota.store.data;
if (data.length > 0) {
FR.currentUID = 0;
FR.spaceQuota.getQuota(data.items[FR.currentUID]);
}
}
}
}
]
});
FR.spaceQuota.getQuota = function(r) {
if (!FR.spaceQuota.sb) {return false;}
FR.spaceQuota.sb.showBusy(FR.T('Calculating quota usage for "%1"...').replace('%1', r.data.name));
this.ajaxReq = Ext.Ajax.request({
url: FR.URLRoot+'/?module=cpanel§ion=tools&page=space_quota&action=get&uid='+r.data.id,
method: 'GET',
success: function(res) {
try {
var rs = Ext.util.JSON.decode(res.responseText);
} catch(er) {
FR.spaceQuota.sb.setStatus(FR.T('Server error'));
}
if (rs && FR.spaceQuota) {
r.set('max', rs.max);
r.set('maxNice', rs.maxNice);
r.set('used', rs.used);
r.set('usedNice', rs.usedNice);
r.set('percent', rs.percent);
r.commit();
FR.spaceQuota.sb.clearStatus();
}
if (FR.spaceQuota.calculateAll) {
FR.currentUID++;
var data = FR.spaceQuota.store.data;
if (data.items[FR.currentUID] && FR.spaceQuota) {
FR.spaceQuota.getQuota(data.items[FR.currentUID]);
} else {
FR.spaceQuota.sb.clearStatus();
}
}
}
});
};
Ext.getCmp('appTab').add(FR.spaceQuota.grid);
Ext.getCmp('appTab').doLayout();