]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/window/Settings.js
1 Ext
.define('PVE.window.Settings', {
2 extend
: 'Ext.window.Window',
5 title
: gettext('My Settings'),
13 xtype
: 'proxmoxHelpButton',
14 onlineHelp
: 'gui_my_settings',
19 text
: gettext('Close'),
21 this.up('window').close();
29 xclass
: 'Ext.app.ViewController',
31 init: function(view
) {
33 var sp
= Ext
.state
.Manager
.getProvider();
35 var username
= sp
.get('login-username') || Proxmox
.Utils
.noneText
;
36 me
.lookupReference('savedUserName').setValue(Ext
.String
.htmlEncode(username
));
37 var vncMode
= sp
.get('novnc-scaling');
38 if (vncMode
!== undefined) {
39 me
.lookupReference('noVNCScalingGroup').setValue({ noVNCScalingField
: vncMode
});
42 let summarycolumns
= sp
.get('summarycolumns', 'auto');
43 me
.lookup('summarycolumns').setValue(summarycolumns
);
45 me
.lookup('guestNotesCollapse').setValue(sp
.get('guest-notes-collapse', 'never'));
47 var settings
= ['fontSize', 'fontFamily', 'letterSpacing', 'lineHeight'];
48 settings
.forEach(function(setting
) {
49 var val
= localStorage
.getItem('pve-xterm-' + setting
);
50 if (val
!== undefined && val
!== null) {
51 var field
= me
.lookup(setting
);
53 field
.resetOriginalValue();
58 set_button_status: function() {
60 let form
= me
.lookup('xtermform');
62 let valid
= form
.isValid(), dirty
= form
.isDirty();
63 let hasValues
= Object
.values(form
.getValues()).some(v
=> !!v
);
65 me
.lookup('xtermsave').setDisabled(!dirty
|| !valid
);
66 me
.lookup('xtermreset').setDisabled(!hasValues
);
71 dirtychange
: 'set_button_status',
72 validitychange
: 'set_button_status',
75 click: function(button
) {
77 var settings
= ['fontSize', 'fontFamily', 'letterSpacing', 'lineHeight'];
78 settings
.forEach(function(setting
) {
79 var field
= me
.lookup(setting
);
80 if (button
.reference
=== 'xtermsave') {
81 var value
= field
.getValue();
83 localStorage
.setItem('pve-xterm-' + setting
, value
);
85 localStorage
.removeItem('pve-xterm-' + setting
);
87 } else if (button
.reference
=== 'xtermreset') {
88 field
.setValue(undefined);
89 localStorage
.removeItem('pve-xterm-' + setting
);
91 field
.resetOriginalValue();
93 me
.set_button_status();
96 'button[name=reset]': {
98 let blacklist
= ['GuiCap', 'login-username', 'dash-storages'];
99 let sp
= Ext
.state
.Manager
.getProvider();
100 for (const state
of Object
.keys(sp
.state
)) {
101 if (!blacklist
.includes(state
)) {
105 window
.location
.reload();
108 'button[name=clear-username]': {
111 me
.lookupReference('savedUserName').setValue(Proxmox
.Utils
.noneText
);
112 Ext
.state
.Manager
.getProvider().clear('login-username');
115 'grid[reference=dashboard-storages]': {
116 selectionchange: function(grid
, selected
) {
118 var sp
= Ext
.state
.Manager
.getProvider();
120 // saves the selected storageids as "id1,id2,id3,..." or clears the variable
121 if (selected
.length
> 0) {
122 sp
.set('dash-storages', Ext
.Array
.pluck(selected
, 'id').join(','));
124 sp
.clear('dash-storages');
127 afterrender: function(grid
) {
128 let store
= grid
.getStore();
129 let storages
= Ext
.state
.Manager
.getProvider().get('dash-storages') || '';
132 storages
.split(',').forEach(storage
=> {
133 if (storage
!== '') { // we have to get the records to be able to select them
134 let item
= store
.getById(storage
);
140 grid
.suspendEvent('selectionchange');
141 grid
.getSelectionModel().select(items
);
142 grid
.resumeEvent('selectionchange');
145 'field[reference=summarycolumns]': {
146 change
: (el
, newValue
) => Ext
.state
.Manager
.getProvider().set('summarycolumns', newValue
),
148 'field[reference=guestNotesCollapse]': {
149 change
: (e
, v
) => Ext
.state
.Manager
.getProvider().set('guest-notes-collapse', v
),
157 title
: gettext('Webinterface Settings'),
169 xtype
: 'displayfield',
170 fieldLabel
: gettext('Dashboard Storages'),
177 reference
: 'dashboard-storages',
179 selType
: 'checkboxmodel',
182 header
: gettext('Name'),
183 dataIndex
: 'storage',
186 header
: gettext('Node'),
192 field
: ['type', 'storage', 'id', 'node'],
193 rstore
: PVE
.data
.ResourceStore
,
198 sorters
: ['node', 'storage'],
203 autoEl
: { tag
: 'hr' },
210 xtype
: 'displayfield',
211 fieldLabel
: gettext('Saved User Name') + ':',
213 stateId
: 'login-username',
214 reference
: 'savedUserName',
220 cls
: 'x-btn-default-toolbar-small proxmox-inline-button',
221 text
: gettext('Reset'),
222 name
: 'clear-username',
228 autoEl
: { tag
: 'hr' },
235 xtype
: 'displayfield',
236 fieldLabel
: gettext('Layout') + ':',
241 cls
: 'x-btn-default-toolbar-small proxmox-inline-button',
242 text
: gettext('Reset'),
243 tooltip
: gettext('Reset all layout changes (for example, column widths)'),
250 autoEl
: { tag
: 'hr' },
253 xtype
: 'proxmoxKVComboBox',
254 fieldLabel
: gettext('Summary columns') + ':',
256 stateId
: 'summarycolumns',
257 reference
: 'summarycolumns',
266 xtype
: 'proxmoxKVComboBox',
267 fieldLabel
: gettext('Guest Notes') + ':',
269 stateId
: 'guest-notes-collapse',
270 reference
: 'guestNotesCollapse',
272 ['never', 'Show by default'],
273 ['always', 'Collapse by default'],
274 ['auto', 'auto (Collapse if empty)'],
286 // right margin ensures that the right border of the fieldsets
294 title
: gettext('xterm.js Settings'),
297 reference
: 'xtermform',
311 reference
: 'fontFamily',
312 emptyText
: Proxmox
.Utils
.defaultText
,
313 fieldLabel
: gettext('Font-Family'),
316 xtype
: 'proxmoxintegerfield',
317 emptyText
: Proxmox
.Utils
.defaultText
,
319 reference
: 'fontSize',
321 fieldLabel
: gettext('Font-Size'),
324 xtype
: 'numberfield',
325 name
: 'letterSpacing',
326 reference
: 'letterSpacing',
327 emptyText
: Proxmox
.Utils
.defaultText
,
328 fieldLabel
: gettext('Letter Spacing'),
331 xtype
: 'numberfield',
334 reference
: 'lineHeight',
335 emptyText
: Proxmox
.Utils
.defaultText
,
336 fieldLabel
: gettext('Line Height'),
350 reference
: 'xtermreset',
352 text
: gettext('Reset'),
356 reference
: 'xtermsave',
358 text
: gettext('Save'),
366 title
: gettext('noVNC Settings'),
370 fieldLabel
: gettext('Scaling mode'),
371 reference
: 'noVNCScalingGroup',
372 height
: '15px', // renders faster with value assigned
379 name
: 'noVNCScalingField',
381 boxLabel
: 'Local Scaling',
385 name
: 'noVNCScalingField',
392 change: function(el
, { noVNCScalingField
}) {
393 Ext
.state
.Manager
.getProvider().set('novnc-scaling', noVNCScalingField
);