]>
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') || 'auto';
38 me
.lookupReference('noVNCScalingGroup').setValue({ noVNCScalingField
: vncMode
});
40 let summarycolumns
= sp
.get('summarycolumns', 'auto');
41 me
.lookup('summarycolumns').setValue(summarycolumns
);
43 me
.lookup('guestNotesCollapse').setValue(sp
.get('guest-notes-collapse', 'never'));
45 var settings
= ['fontSize', 'fontFamily', 'letterSpacing', 'lineHeight'];
46 settings
.forEach(function(setting
) {
47 var val
= localStorage
.getItem('pve-xterm-' + setting
);
48 if (val
!== undefined && val
!== null) {
49 var field
= me
.lookup(setting
);
51 field
.resetOriginalValue();
56 set_button_status: function() {
58 let form
= me
.lookup('xtermform');
60 let valid
= form
.isValid(), dirty
= form
.isDirty();
61 let hasValues
= Object
.values(form
.getValues()).some(v
=> !!v
);
63 me
.lookup('xtermsave').setDisabled(!dirty
|| !valid
);
64 me
.lookup('xtermreset').setDisabled(!hasValues
);
69 dirtychange
: 'set_button_status',
70 validitychange
: 'set_button_status',
73 click: function(button
) {
75 var settings
= ['fontSize', 'fontFamily', 'letterSpacing', 'lineHeight'];
76 settings
.forEach(function(setting
) {
77 var field
= me
.lookup(setting
);
78 if (button
.reference
=== 'xtermsave') {
79 var value
= field
.getValue();
81 localStorage
.setItem('pve-xterm-' + setting
, value
);
83 localStorage
.removeItem('pve-xterm-' + setting
);
85 } else if (button
.reference
=== 'xtermreset') {
86 field
.setValue(undefined);
87 localStorage
.removeItem('pve-xterm-' + setting
);
89 field
.resetOriginalValue();
91 me
.set_button_status();
94 'button[name=reset]': {
96 let blacklist
= ['GuiCap', 'login-username', 'dash-storages'];
97 let sp
= Ext
.state
.Manager
.getProvider();
98 for (const state
of Object
.keys(sp
.state
)) {
99 if (!blacklist
.includes(state
)) {
103 window
.location
.reload();
106 'button[name=clear-username]': {
109 me
.lookupReference('savedUserName').setValue(Proxmox
.Utils
.noneText
);
110 Ext
.state
.Manager
.getProvider().clear('login-username');
113 'grid[reference=dashboard-storages]': {
114 selectionchange: function(grid
, selected
) {
116 var sp
= Ext
.state
.Manager
.getProvider();
118 // saves the selected storageids as "id1,id2,id3,..." or clears the variable
119 if (selected
.length
> 0) {
120 sp
.set('dash-storages', Ext
.Array
.pluck(selected
, 'id').join(','));
122 sp
.clear('dash-storages');
125 afterrender: function(grid
) {
126 let store
= grid
.getStore();
127 let storages
= Ext
.state
.Manager
.getProvider().get('dash-storages') || '';
130 storages
.split(',').forEach(storage
=> {
131 if (storage
!== '') { // we have to get the records to be able to select them
132 let item
= store
.getById(storage
);
138 grid
.suspendEvent('selectionchange');
139 grid
.getSelectionModel().select(items
);
140 grid
.resumeEvent('selectionchange');
143 'field[reference=summarycolumns]': {
144 change
: (el
, newValue
) => Ext
.state
.Manager
.getProvider().set('summarycolumns', newValue
),
146 'field[reference=guestNotesCollapse]': {
147 change
: (e
, v
) => Ext
.state
.Manager
.getProvider().set('guest-notes-collapse', v
),
155 title
: gettext('Webinterface Settings'),
167 xtype
: 'displayfield',
168 fieldLabel
: gettext('Dashboard Storages'),
175 reference
: 'dashboard-storages',
177 selType
: 'checkboxmodel',
180 header
: gettext('Name'),
181 dataIndex
: 'storage',
184 header
: gettext('Node'),
190 field
: ['type', 'storage', 'id', 'node'],
191 rstore
: PVE
.data
.ResourceStore
,
196 sorters
: ['node', 'storage'],
201 autoEl
: { tag
: 'hr' },
208 xtype
: 'displayfield',
209 fieldLabel
: gettext('Saved User Name') + ':',
211 stateId
: 'login-username',
212 reference
: 'savedUserName',
218 cls
: 'x-btn-default-toolbar-small proxmox-inline-button',
219 text
: gettext('Reset'),
220 name
: 'clear-username',
226 autoEl
: { tag
: 'hr' },
233 xtype
: 'displayfield',
234 fieldLabel
: gettext('Layout') + ':',
239 cls
: 'x-btn-default-toolbar-small proxmox-inline-button',
240 text
: gettext('Reset'),
241 tooltip
: gettext('Reset all layout changes (for example, column widths)'),
248 autoEl
: { tag
: 'hr' },
251 xtype
: 'proxmoxKVComboBox',
252 fieldLabel
: gettext('Summary columns') + ':',
254 stateId
: 'summarycolumns',
255 reference
: 'summarycolumns',
264 xtype
: 'proxmoxKVComboBox',
265 fieldLabel
: gettext('Guest Notes') + ':',
267 stateId
: 'guest-notes-collapse',
268 reference
: 'guestNotesCollapse',
270 ['never', 'Show by default'],
271 ['always', 'Collapse by default'],
272 ['auto', 'auto (Collapse if empty)'],
284 // right margin ensures that the right border of the fieldsets
292 title
: gettext('xterm.js Settings'),
295 reference
: 'xtermform',
309 reference
: 'fontFamily',
310 emptyText
: Proxmox
.Utils
.defaultText
,
311 fieldLabel
: gettext('Font-Family'),
314 xtype
: 'proxmoxintegerfield',
315 emptyText
: Proxmox
.Utils
.defaultText
,
317 reference
: 'fontSize',
319 fieldLabel
: gettext('Font-Size'),
322 xtype
: 'numberfield',
323 name
: 'letterSpacing',
324 reference
: 'letterSpacing',
325 emptyText
: Proxmox
.Utils
.defaultText
,
326 fieldLabel
: gettext('Letter Spacing'),
329 xtype
: 'numberfield',
332 reference
: 'lineHeight',
333 emptyText
: Proxmox
.Utils
.defaultText
,
334 fieldLabel
: gettext('Line Height'),
348 reference
: 'xtermreset',
350 text
: gettext('Reset'),
354 reference
: 'xtermsave',
356 text
: gettext('Save'),
364 title
: gettext('noVNC Settings'),
368 fieldLabel
: gettext('Scaling mode'),
369 reference
: 'noVNCScalingGroup',
370 height
: '15px', // renders faster with value assigned
377 name
: 'noVNCScalingField',
383 name
: 'noVNCScalingField',
385 boxLabel
: 'Local Scaling',
389 name
: 'noVNCScalingField',
396 change: function(el
, { noVNCScalingField
}) {
397 let provider
= Ext
.state
.Manager
.getProvider();
398 if (noVNCScalingField
=== 'auto') {
399 provider
.clear('novnc-scaling');
401 provider
.set('novnc-scaling', noVNCScalingField
);