pve-manager/www/manager6/window/Settings.js
Emmanuel Kasper 61516423ad Improve a bit the esthetics of the User Settings window
* group the action buttons on the left, to distinguish them from the modal
 'close' button
 * display the action buttons as grey instead of blue, to be consistent
 with the rest of the GUI
2017-07-25 14:24:35 +02:00

195 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: 'left'
},
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%',
stateId: 'login-username',
reference: 'savedUserName',
value: ''
},
{
xtype: 'button',
cls: 'x-btn-default-toolbar-small pve-inline-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',
cls: 'x-btn-default-toolbar-small pve-inline-button',
text: gettext('Reset Layout'),
width: 'auto',
name: 'reset'
}
]
}],
onShow: function() {
var me = this;
me.callParent();
}
});