From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 0F79EDE3C for ; Wed, 20 Apr 2022 12:09:53 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 059689EFA for ; Wed, 20 Apr 2022 12:09:23 +0200 (CEST) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [94.136.29.106]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS id 35B809EEF for ; Wed, 20 Apr 2022 12:09:22 +0200 (CEST) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id 0F6E7421A8 for ; Wed, 20 Apr 2022 12:09:22 +0200 (CEST) From: Daniel Tschlatscher To: pve-devel@lists.proxmox.com Date: Wed, 20 Apr 2022 12:09:15 +0200 Message-Id: <20220420100916.67799-2-d.tschlatscher@proxmox.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220420100916.67799-1-d.tschlatscher@proxmox.com> References: <20220420100916.67799-1-d.tschlatscher@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL 0.078 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record T_SCC_BODY_TEXT_LINE -0.01 - Subject: [pve-devel] [PATCH widget-toolkit] fix #3994: Node config options in the GUI X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Apr 2022 10:09:53 -0000 Added a new file for displaying and editing the node config options which were not exposed through the GUI yet. Namely those are the settings for wakeonlan and startall-on-boot-delay. Signed-off-by: Daniel Tschlatscher --- src/Makefile | 1 + src/node/OptionsView.js | 85 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 src/node/OptionsView.js diff --git a/src/Makefile b/src/Makefile index dd7729e..0217ae1 100644 --- a/src/Makefile +++ b/src/Makefile @@ -96,6 +96,7 @@ JSSRC= \ node/DNSEdit.js \ node/HostsView.js \ node/DNSView.js \ + node/OptionsView.js \ node/Tasks.js \ node/ServiceView.js \ node/TimeEdit.js \ diff --git a/src/node/OptionsView.js b/src/node/OptionsView.js new file mode 100644 index 0000000..3d1e7bb --- /dev/null +++ b/src/node/OptionsView.js @@ -0,0 +1,85 @@ +Ext.define('Proxmox.node.OptionsView', { + extend: 'Proxmox.grid.ObjectGrid', + alias: ['widget.proxmoxNodeOptionsView'], + + gridRows: [ + { + xtype: 'integer', + name: 'startall-onboot-delay', + text: gettext('Start on boot delay'), + minValue: 0, + maxValue: 300, + labelWidth: 130, + deleteEmpty: true, + renderer: function(value) { + if (value === undefined) { + return Proxmox.Utils.defaultText; + } + + let secString = value === 1 ? gettext('Second') : gettext('Seconds'); + return `${value} ${secString}`; + }, + }, + { + xtype: 'text', + name: 'wakeonlan', + text: gettext('Wake on LAN'), + vtype: 'MacAddress', + deleteEmpty: true, + renderer: function(value) { + if (value === undefined) { + return Proxmox.Utils.NoneText; + } + + return value; + }, + }, + ], + + initComponent: function() { + let me = this; + let baseUrl = `/nodes/${me.nodename}/config`; + + if (!me.nodename) { + throw "no node name specified"; + } + + let editBtn = new Ext.Button({ + text: gettext('Edit'), + disabled: true, + handler: function() { me.run_editor(); }, + }); + + + let setButtonStatus = function() { + let sm = me.getSelectionModel(); + let rec = sm.getSelection()[0]; + + if (!rec) { + editBtn.disable(); + return; + } + + let rowdef = me.rows[rec.data.key]; + editBtn.setDisabled(!rowdef.editor); + }; + + Ext.apply(me, { + url: `/api2/json${baseUrl}`, + tbar: [editBtn], + editorConfig: { + url: `/api2/extjs/${baseUrl}`, + }, + listeners: { + itemdblclick: me.run_editor, + selectionchange: setButtonStatus, + }, + }); + + me.callParent(); + + me.on('activate', me.rstore.startUpdate); + me.on('deactivate', me.rstore.stopUpdate); + me.on('destroy', me.rstore.stopUpdate); + }, +}); -- 2.30.2