[pve-devel] [PATCH manager v2] fix #3994: Options menu entry in the System menu
Markus Frank
m.frank at proxmox.com
Wed May 11 14:27:45 CEST 2022
I tested it on a vm-cluster.
GUI works as intended and only allows input which can be handled by the
backend. Node-Config-Files get updated on change in GUI, and vice versa.
I can also verify that startall-on-boot-delay works fine.
Tested-by: Markus Frank <m.frank at proxmox.com>
On 5/6/22 14:39, Daniel Tschlatscher wrote:
> Add the subentry "Options" in the "System" menu to expose some options
> in the GUI which were not exposed before.
>
> 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. Edited the Makefile
> to include the newly created file.
>
> Signed-off-by: Daniel Tschlatscher <d.tschlatscher at proxmox.com>
> ---
> Changes from v2:
>
> - Moved the file from the widget-toolkit to the pve-manager repository
> because it implements PVE specific functionality.
> - I originally rewrote this class to use a ViewController, but then
> found out that the ObjectGrid does most of what I wanted already, I
> just had to address it correctly.
> This means the code is now a bit shorter and a lot more concise.
>
> www/manager6/Makefile | 1 +
> www/manager6/node/Config.js | 9 ++++
> www/manager6/node/NodeOptionsView.js | 67 ++++++++++++++++++++++++++++
> 3 files changed, 77 insertions(+)
> create mode 100644 www/manager6/node/NodeOptionsView.js
>
> diff --git a/www/manager6/Makefile b/www/manager6/Makefile
> index 2c7b1e70..d16770b1 100644
> --- a/www/manager6/Makefile
> +++ b/www/manager6/Makefile
> @@ -195,6 +195,7 @@ JSSRC= \
> node/Subscription.js \
> node/Summary.js \
> node/ZFS.js \
> + node/NodeOptionsView.js \
> pool/Config.js \
> pool/StatusView.js \
> pool/Summary.js \
> diff --git a/www/manager6/node/Config.js b/www/manager6/node/Config.js
> index 52357df8..7e7d45f7 100644
> --- a/www/manager6/node/Config.js
> +++ b/www/manager6/node/Config.js
> @@ -195,6 +195,15 @@ Ext.define('PVE.node.Config', {
> nodename: nodename,
> onlineHelp: 'sysadmin_network_configuration',
> },
> + {
> + xtype: 'proxmoxNodeOptionsView',
> + title: gettext('Options'),
> + iconCls: 'fa fa-gear',
> + groups: ['services'],
> + itemId: 'options',
> + nodename: nodename,
> + onlineHelp: 'proxmox_node_management',
> + },
> {
> xtype: 'proxmoxNodeHostsView',
> title: gettext('Hosts'),
> diff --git a/www/manager6/node/NodeOptionsView.js b/www/manager6/node/NodeOptionsView.js
> new file mode 100644
> index 00000000..b841b7b0
> --- /dev/null
> +++ b/www/manager6/node/NodeOptionsView.js
> @@ -0,0 +1,67 @@
> +Ext.define('Proxmox.node.NodeOptionsView', {
> + extend: 'Proxmox.grid.ObjectGrid',
> + alias: ['widget.proxmoxNodeOptionsView'],
> + mixins: ['Proxmox.Mixin.CBind'],
> +
> + cbindData: function(_initialconfig) {
> + let me = this;
> +
> + let baseUrl = `/nodes/${me.nodename}/config`;
> + me.url = `/api2/json${baseUrl}`;
> + me.editorConfig = {
> + url: `/api2/extjs/${baseUrl}`,
> + };
> +
> + return {};
> + },
> +
> + listeners: {
> + itemdblclick: function() { this.run_editor(); },
> + activate: function() { this.rstore.startUpdate(); },
> + destroy: function() { this.rstore.stopUpdate(); },
> + deactivate: function() { this.rstore.stopUpdate(); },
> + },
> +
> + tbar: [
> + {
> + text: gettext('Edit'),
> + xtype: 'proxmoxButton',
> + disabled: true,
> + handler: btn => btn.up('grid').run_editor(),
> + },
> + ],
> +
> + 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;
> + },
> + },
> + ],
> +});
More information about the pve-devel
mailing list