[pve-devel] [RFC widget-toolkit] ui: add InfoMultiWidget, to be used for RAM

Dominik Csapak d.csapak at proxmox.com
Wed Mar 15 12:10:52 CET 2023


in general i'm not really happy with the manual insertion of a div here,
wouldn't it also be possible to extend the progressbar
and change the rendertemplate?

that way we could have a way nicer interface than
"get the dom element if it exists, and manually set the css classes"

further comments inline

On 1/25/23 12:29, Matthias Heiserer wrote:
> Signed-off-by: Matthias Heiserer <m.heiserer at proxmox.com>
> ---
>   src/Makefile                  |  1 +
>   src/panel/NodeMemoryWidget.js | 28 ++++++++++++++++++++++++++++
>   src/panel/StatusView.js       |  2 +-
>   3 files changed, 30 insertions(+), 1 deletion(-)
>   create mode 100644 src/panel/NodeMemoryWidget.js
> 
> diff --git a/src/Makefile b/src/Makefile
> index 95da5aa..5a0213a 100644
> --- a/src/Makefile
> +++ b/src/Makefile
> @@ -54,6 +54,7 @@ JSSRC=					\
>   	panel/EOLNotice.js		\
>   	panel/InputPanel.js		\
>   	panel/InfoWidget.js		\
> +	panel/NodeMemoryWidget.js	\
>   	panel/LogView.js		\
>   	panel/NodeInfoRepoStatus.js	\
>   	panel/JournalView.js		\
> diff --git a/src/panel/NodeMemoryWidget.js b/src/panel/NodeMemoryWidget.js
> new file mode 100644
> index 0000000..e54899e
> --- /dev/null
> +++ b/src/panel/NodeMemoryWidget.js
> @@ -0,0 +1,28 @@
> +Ext.define('Proxmox.widget.NodeMemory', {
> +    extend: 'Proxmox.widget.Info',
> +    alias: 'widget.pmxNodeMemoryWidget',
> +
> +    updateValue: function(text, usage, mem) {
> +	let me = this;
> +
> +	let arcUse = me.el?.getById("arcsize")?.dom;
> +	if (arcUse) {
> +	    usage = (mem.used - mem.arcsize) / mem.total;

here you have to check if arcsize is set, because if it's
not, the result here is 'NaN' which gets interpreted as width: 0%

> +	    arcUse.style["margin-right"] = `${(mem.free / mem.total) * 100}%`;
> +	}
> +	me.callParent([text, usage]);
> +    },
> +
> +    initComponent: function() {
> +	let me = this;
> +	me.callParent();
> +
> +	me.down("#progress").on('boxready', (self) => {
> +	    self.bar.dom.insertAdjacentHTML("beforebegin",
> +		`<div id='arcsize'
> +		    style='margin-right: 100%; background-color: #86424c; width: auto;'

i know this was before the dark theme, but this should probably be a css variable?

> +		    class='x-progress-bar'>
> +		</div>`);
> +	});
> +    },
> +});
> diff --git a/src/panel/StatusView.js b/src/panel/StatusView.js
> index e2e81e2..7258f36 100644
> --- a/src/panel/StatusView.js
> +++ b/src/panel/StatusView.js
> @@ -72,7 +72,7 @@ Ext.define('Proxmox.panel.StatusView', {
>   	    if (Ext.isFunction(field.calculate)) {
>   		calculate = field.calculate;
>   	    }
> -	    field.updateValue(renderer.call(field, used, max), calculate(used, max));
> +	    field.updateValue(renderer.call(field, used, max), calculate(used, max), used);
>   	}
>       },
>   






More information about the pve-devel mailing list