mirror of
https://git.proxmox.com/git/pve-manager
synced 2025-08-03 17:41:38 +00:00

this will be used to filter the dashboard storage graph to the selected storages, so that one can choose which storages are relevant e.g. if you have one nfs server with multiple exports (on the same filesystem), you only want to count it once Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
196 lines
4.1 KiB
JavaScript
196 lines
4.1 KiB
JavaScript
Ext.define('PVE.window.Settings', {
|
|
extend: 'Ext.window.Window',
|
|
|
|
width: '400px',
|
|
title: gettext('My Settings'),
|
|
iconCls: 'fa fa-gear',
|
|
modal: true,
|
|
bodyPadding: 10,
|
|
resizable: false,
|
|
|
|
buttons: [{
|
|
text: gettext('Close'),
|
|
handler: function() {
|
|
this.up('window').close();
|
|
}
|
|
}],
|
|
|
|
layout: {
|
|
type: 'vbox',
|
|
align: 'center'
|
|
},
|
|
|
|
controller: {
|
|
xclass: 'Ext.app.ViewController',
|
|
|
|
control: {
|
|
'#': {
|
|
show: function() {
|
|
var me = this;
|
|
var sp = Ext.state.Manager.getProvider();
|
|
|
|
var username = sp.get('login-username') || PVE.Utils.noneText;
|
|
me.lookupReference('savedUserName').setValue(username);
|
|
}
|
|
},
|
|
'button[name=reset]': {
|
|
click: function () {
|
|
var blacklist = ['GuiCap', 'login-username', 'dash-storages'];
|
|
var sp = Ext.state.Manager.getProvider();
|
|
var state;
|
|
for (state in sp.state) {
|
|
if (sp.state.hasOwnProperty(state)) {
|
|
if (blacklist.indexOf(state) !== -1) {
|
|
continue;
|
|
}
|
|
|
|
sp.clear(state);
|
|
}
|
|
}
|
|
|
|
window.location.reload();
|
|
}
|
|
},
|
|
'button[name=clear-username]': {
|
|
click: function () {
|
|
var me = this;
|
|
var usernamefield = me.lookupReference('savedUserName');
|
|
var sp = Ext.state.Manager.getProvider();
|
|
|
|
usernamefield.setValue(PVE.Utils.noneText);
|
|
sp.clear('login-username');
|
|
}
|
|
},
|
|
'grid[reference=dashboard-storages]': {
|
|
selectionchange: function(grid, selected) {
|
|
var me = this;
|
|
var sp = Ext.state.Manager.getProvider();
|
|
|
|
// saves the selected storageids as
|
|
// "id1,id2,id3,..."
|
|
// or clears the variable
|
|
if (selected.length > 0) {
|
|
sp.set('dash-storages',
|
|
Ext.Array.pluck(selected, 'id').join(','));
|
|
} else {
|
|
sp.clear('dash-storages');
|
|
}
|
|
},
|
|
afterrender: function(grid) {
|
|
var me = grid;
|
|
var sp = Ext.state.Manager.getProvider();
|
|
var store = me.getStore();
|
|
var items = [];
|
|
me.suspendEvent('selectionchange');
|
|
var storages = sp.get('dash-storages') || '';
|
|
storages.split(',').forEach(function(storage){
|
|
// we have to get the records
|
|
// to be able to select them
|
|
if (storage !== '') {
|
|
var item = store.getById(storage);
|
|
if (item) {
|
|
items.push(item);
|
|
}
|
|
}
|
|
});
|
|
me.getSelectionModel().select(items);
|
|
me.resumeEvent('selectionchange');
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
items: [{
|
|
xtype: 'fieldset',
|
|
width: '90%',
|
|
title: gettext('Browser Settings'),
|
|
layout: {
|
|
type: 'vbox',
|
|
align: 'right'
|
|
},
|
|
defaults: {
|
|
width: '100%',
|
|
margin: '0 0 10 0'
|
|
},
|
|
items: [
|
|
{
|
|
xtype: 'displayfield',
|
|
fieldLabel: gettext('Dashboard Storages'),
|
|
labelAlign: 'left',
|
|
labelWidth: '50%'
|
|
},
|
|
{
|
|
xtype: 'grid',
|
|
maxHeight: 150,
|
|
reference: 'dashboard-storages',
|
|
selModel: {
|
|
selType: 'checkboxmodel'
|
|
},
|
|
columns: [{
|
|
header: gettext('Name'),
|
|
dataIndex: 'storage',
|
|
flex: 1
|
|
},{
|
|
header: gettext('Node'),
|
|
dataIndex: 'node',
|
|
flex: 1
|
|
}],
|
|
store: {
|
|
type: 'diff',
|
|
field: ['type', 'storage', 'id', 'node'],
|
|
rstore: PVE.data.ResourceStore,
|
|
filters: [{
|
|
property: 'type',
|
|
value: 'storage'
|
|
}],
|
|
sorters: [ 'node','storage']
|
|
}
|
|
},
|
|
{
|
|
xtype: 'box',
|
|
autoEl: { tag: 'hr'}
|
|
},
|
|
{
|
|
xtype: 'displayfield',
|
|
fieldLabel: gettext('Saved User name'),
|
|
labelAlign: 'left',
|
|
labelWidth: '50%',
|
|
fieldStyle: {
|
|
'text-align':'right'
|
|
},
|
|
stateId: 'login-username',
|
|
reference: 'savedUserName',
|
|
value: ''
|
|
},
|
|
{
|
|
xtype: 'button',
|
|
text: gettext('Clear User name'),
|
|
width: 'auto',
|
|
name: 'clear-username'
|
|
},
|
|
{
|
|
xtype: 'box',
|
|
autoEl: { tag: 'hr'}
|
|
},
|
|
{
|
|
xtype: 'displayfield',
|
|
fieldLabel: gettext('Layout'),
|
|
labelAlign: 'left',
|
|
labelWidth: '50%'
|
|
},
|
|
{
|
|
xtype: 'button',
|
|
text: gettext('Reset Layout'),
|
|
width: 'auto',
|
|
name: 'reset'
|
|
}
|
|
]
|
|
}],
|
|
|
|
onShow: function() {
|
|
var me = this;
|
|
me.callParent();
|
|
|
|
}
|
|
});
|