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 5EB03E4CE for ; Fri, 22 Apr 2022 12:12:43 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 222A626E80 for ; Fri, 22 Apr 2022 12:12:13 +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 16E2126E75 for ; Fri, 22 Apr 2022 12:12:12 +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 D957640435 for ; Fri, 22 Apr 2022 12:12:11 +0200 (CEST) Message-ID: Date: Fri, 22 Apr 2022 12:12:10 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:100.0) Gecko/20100101 Thunderbird/100.0 Content-Language: en-US To: Proxmox VE development discussion , Daniel Tschlatscher References: <20220420100916.67799-1-d.tschlatscher@proxmox.com> <20220420100916.67799-2-d.tschlatscher@proxmox.com> From: Thomas Lamprecht In-Reply-To: <20220420100916.67799-2-d.tschlatscher@proxmox.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-SPAM-LEVEL: Spam detection results: 0 AWL 1.628 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 NICE_REPLY_A -3.185 Looks like a legit reply (A) SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: Re: [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: Fri, 22 Apr 2022 10:12:43 -0000 On 20.04.22 12:09, Daniel Tschlatscher wrote: > 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. Why is this in widget toolkit if it's only PVE specific? (see below) I'd just add it in pve-manager, no point in adding the headache of splitting a feature over multiple packages if it cannot be reused anyway. > 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', pve specific > + 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', pve specific > + 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`; you use nodename before you check that it's set, not that it matters much but it's just not /that/ nice code-style wise (things tend to get copied and adapted, which such unnecessary subtleties may cause headache with). > + > + 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); you could try using a view controller for above, that could theoretically also allow to drop the whole initComponents. (search the code base for `ViewController`); not a requirement but good to check out as learning purpose and maybe you like it better.