2021-02-19 15:40:48 +01:00
Ext . define ( 'PBS.window.Settings' , {
extend : 'Ext.window.Window' ,
width : '800px' ,
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 : 'hbox' ,
controller : {
xclass : 'Ext.app.ViewController' ,
init : function ( view ) {
let me = this ;
let sp = Ext . state . Manager . getProvider ( ) ;
let username = sp . get ( 'login-username' ) || Proxmox . Utils . noneText ;
me . lookupReference ( 'savedUserName' ) . setValue ( Ext . String . htmlEncode ( username ) ) ;
2021-04-19 13:02:06 +02:00
let summarycolumns = sp . get ( 'summarycolumns' , 'auto' ) ;
me . lookup ( 'summarycolumns' ) . setValue ( summarycolumns ) ;
2021-02-19 15:40:48 +01:00
let settings = [ 'fontSize' , 'fontFamily' , 'letterSpacing' , 'lineHeight' ] ;
settings . forEach ( function ( setting ) {
let val = localStorage . getItem ( 'pve-xterm-' + setting ) ;
if ( val !== undefined && val !== null ) {
let field = me . lookup ( setting ) ;
field . setValue ( val ) ;
field . resetOriginalValue ( ) ;
}
} ) ;
} ,
set _button _status : function ( ) {
let me = this ;
let form = me . lookup ( 'xtermform' ) ;
let valid = form . isValid ( ) ;
let dirty = form . isDirty ( ) ;
let hasvalues = false ;
let values = form . getValues ( ) ;
Ext . Object . eachValue ( values , function ( value ) {
if ( value ) {
hasvalues = true ;
return false ;
}
return true ;
} ) ;
me . lookup ( 'xtermsave' ) . setDisabled ( ! dirty || ! valid ) ;
me . lookup ( 'xtermreset' ) . setDisabled ( ! hasvalues ) ;
} ,
control : {
'#xtermjs form' : {
dirtychange : 'set_button_status' ,
validitychange : 'set_button_status' ,
} ,
'#xtermjs button' : {
click : function ( button ) {
let me = this ;
let settings = [ 'fontSize' , 'fontFamily' , 'letterSpacing' , 'lineHeight' ] ;
settings . forEach ( function ( setting ) {
let field = me . lookup ( setting ) ;
if ( button . reference === 'xtermsave' ) {
let value = field . getValue ( ) ;
if ( value ) {
localStorage . setItem ( 'pve-xterm-' + setting , value ) ;
} else {
localStorage . removeItem ( 'pve-xterm-' + setting ) ;
}
} else if ( button . reference === 'xtermreset' ) {
field . setValue ( undefined ) ;
localStorage . removeItem ( 'pve-xterm-' + setting ) ;
}
field . resetOriginalValue ( ) ;
} ) ;
me . set _button _status ( ) ;
} ,
} ,
'button[name=reset]' : {
click : function ( ) {
2021-02-25 10:01:20 +01:00
let blacklist = [ 'login-username' ] ;
2021-02-19 15:40:48 +01:00
let sp = Ext . state . Manager . getProvider ( ) ;
for ( const state of Object . values ( sp . state ) ) {
if ( blacklist . indexOf ( state ) !== - 1 ) {
continue ;
}
sp . clear ( state ) ;
}
window . location . reload ( ) ;
} ,
} ,
'button[name=clear-username]' : {
click : function ( ) {
let me = this ;
let usernamefield = me . lookupReference ( 'savedUserName' ) ;
let sp = Ext . state . Manager . getProvider ( ) ;
usernamefield . setValue ( Proxmox . Utils . noneText ) ;
sp . clear ( 'login-username' ) ;
} ,
} ,
2021-04-19 13:02:06 +02:00
'field[reference=summarycolumns]' : {
change : function ( el , newValue ) {
var sp = Ext . state . Manager . getProvider ( ) ;
sp . set ( 'summarycolumns' , newValue ) ;
} ,
} ,
2021-02-19 15:40:48 +01:00
} ,
} ,
items : [ {
xtype : 'fieldset' ,
flex : 1 ,
title : gettext ( 'Webinterface Settings' ) ,
margin : '5' ,
layout : {
type : 'vbox' ,
align : 'left' ,
} ,
defaults : {
width : '100%' ,
margin : '0 0 10 0' ,
} ,
items : [
{
xtype : 'container' ,
layout : 'hbox' ,
items : [
{
xtype : 'displayfield' ,
fieldLabel : gettext ( 'Saved User Name' ) + ':' ,
labelWidth : 150 ,
stateId : 'login-username' ,
reference : 'savedUserName' ,
flex : 1 ,
value : '' ,
} ,
{
xtype : 'button' ,
cls : 'x-btn-default-toolbar-small proxmox-inline-button' ,
text : gettext ( 'Reset' ) ,
name : 'clear-username' ,
} ,
] ,
} ,
{
xtype : 'box' ,
autoEl : { tag : 'hr' } ,
} ,
{
xtype : 'container' ,
layout : 'hbox' ,
items : [
{
xtype : 'displayfield' ,
fieldLabel : gettext ( 'Layout' ) + ':' ,
flex : 1 ,
} ,
{
xtype : 'button' ,
cls : 'x-btn-default-toolbar-small proxmox-inline-button' ,
text : gettext ( 'Reset' ) ,
tooltip : gettext ( 'Reset all layout changes (for example, column widths)' ) ,
name : 'reset' ,
} ,
] ,
} ,
2021-04-19 13:02:06 +02:00
{
xtype : 'box' ,
autoEl : { tag : 'hr' } ,
} ,
{
xtype : 'proxmoxKVComboBox' ,
fieldLabel : gettext ( 'Summary/Dashboard columns' ) + ':' ,
labelWidth : 150 ,
stateId : 'summarycolumns' ,
reference : 'summarycolumns' ,
comboItems : [
[ 'auto' , 'auto' ] ,
[ '1' , '1' ] ,
[ '2' , '2' ] ,
[ '3' , '3' ] ,
] ,
} ,
2021-02-19 15:40:48 +01:00
] ,
} ,
{
xtype : 'container' ,
layout : 'vbox' ,
flex : 1 ,
margin : '5' ,
defaults : {
width : '100%' ,
// right margin ensures that the right border of the fieldsets
// is shown
margin : '0 2 10 0' ,
} ,
items : [
{
xtype : 'fieldset' ,
itemId : 'xtermjs' ,
title : gettext ( 'xterm.js Settings' ) ,
items : [ {
xtype : 'form' ,
reference : 'xtermform' ,
border : false ,
layout : {
type : 'vbox' ,
algin : 'left' ,
} ,
defaults : {
width : '100%' ,
margin : '0 0 10 0' ,
} ,
items : [
{
xtype : 'textfield' ,
name : 'fontFamily' ,
reference : 'fontFamily' ,
emptyText : Proxmox . Utils . defaultText ,
fieldLabel : gettext ( 'Font-Family' ) ,
} ,
{
xtype : 'proxmoxintegerfield' ,
emptyText : Proxmox . Utils . defaultText ,
name : 'fontSize' ,
reference : 'fontSize' ,
minValue : 1 ,
fieldLabel : gettext ( 'Font-Size' ) ,
} ,
{
xtype : 'numberfield' ,
name : 'letterSpacing' ,
reference : 'letterSpacing' ,
emptyText : Proxmox . Utils . defaultText ,
fieldLabel : gettext ( 'Letter Spacing' ) ,
} ,
{
xtype : 'numberfield' ,
name : 'lineHeight' ,
minValue : 0.1 ,
reference : 'lineHeight' ,
emptyText : Proxmox . Utils . defaultText ,
fieldLabel : gettext ( 'Line Height' ) ,
} ,
{
xtype : 'container' ,
layout : {
type : 'hbox' ,
pack : 'end' ,
} ,
defaults : {
margin : '0 0 0 5' ,
} ,
items : [
{
xtype : 'button' ,
reference : 'xtermreset' ,
disabled : true ,
text : gettext ( 'Reset' ) ,
} ,
{
xtype : 'button' ,
reference : 'xtermsave' ,
disabled : true ,
text : gettext ( 'Save' ) ,
} ,
] ,
} ,
] ,
} ] ,
} ,
] ,
} ] ,
} ) ;