From 22dc406d70c5f15b86af42efa08bdb56830a1bc4 Mon Sep 17 00:00:00 2001 From: rmm Date: Sun, 25 Feb 2024 12:50:06 +0100 Subject: [PATCH 1/3] Merge with master --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 298981f..4d2983d 100644 --- a/readme.md +++ b/readme.md @@ -4,7 +4,7 @@ A small collection of script and mods for Proxmox If you find this helpful, a small donation is appreciated, [![Donate](https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=K8XPMSEBERH3W). ## Node temperature view -(Tested compatibility: 7.x & 8.0) +(Tested compatibility: 7.x, 8.0.x, 8.1.3) This bash script installs a modification to the Proxmox Virtual Environment (PVE) web user interface (UI) to display temperature information in a flexible manner for CPU, NVME and HDDs/SSDs. From f2bc76d1b3d06708de738c207bc99aa1e5966e4f Mon Sep 17 00:00:00 2001 From: rmm Date: Sun, 25 Feb 2024 12:52:53 +0100 Subject: [PATCH 2/3] Improve layout of thermal state items - move CPU summary item and make it to a logical group for CPU temperatures - add a new group/header for drives temperatures - disable the default limit of items per row (can be still set if needed) --- pve-mod-gui-temp.sh | 59 +++++++++++++++++++++++++++++++++------------ readme.md | 2 +- 2 files changed, 44 insertions(+), 17 deletions(-) diff --git a/pve-mod-gui-temp.sh b/pve-mod-gui-temp.sh index d2bb7fd..1fe7d54 100644 --- a/pve-mod-gui-temp.sh +++ b/pve-mod-gui-temp.sh @@ -6,9 +6,10 @@ ################### Configuration ############# # Display configuration for HDD, NVME, CPU -CPU_ITEMS_PER_ROW=4; -NVME_ITEMS_PER_ROW=4; -HDD_ITEMS_PER_ROW=4; +# Set to 0 to disable line breaks +CPU_ITEMS_PER_ROW=0; +NVME_ITEMS_PER_ROW=0; +HDD_ITEMS_PER_ROW=0; # Known CPU sensor names. They can be full or partial but should ensure unambiguous identification. # Should new ones be added, also update logic in configure() function. @@ -198,12 +199,12 @@ function install_mod { :a; /items:/!{N;ba;} :b; - /swap.*},/!{N;bb;} + /cpus.*},/!{N;bb;} a\ \\ {\n\ itemId: 'thermalCpu',\n\ - colspan: 1,\n\ + colspan: 2,\n\ printBar: false,\n\ title: gettext('CPU Thermal State'),\n\ iconCls: 'fa fa-fw fa-thermometer-half',\n\ @@ -240,8 +241,8 @@ function install_mod { })\n\ } catch(e) { /*_*/ }\n\ });\n\ - const result = temps.map((strTemp, index, arr) => { return strTemp + (index + 1 < arr.length ? ((index + 1) % itemsPerRow === 0 ? '
' : ' | ') : '')});\n\ - return result.length > 0 ? result.join('') : 'N/A';\n\ + const result = temps.map((strTemp, index, arr) => { return strTemp + (index + 1 < arr.length ? (itemsPerRow > 0 && (index + 1) % itemsPerRow === 0 ? '
' : ' | ') : '')});\n\ + return '
' + (result.length > 0 ? result.join('') : 'N/A') + '
';\n\ }\n\ }\n\ }, @@ -260,7 +261,7 @@ function install_mod { \\ {\n\ itemId: 'thermalHdd',\n\ - colspan: 1,\n\ + colspan: 2,\n\ printBar: false,\n\ title: gettext('HDD/SSD Thermal State'),\n\ iconCls: 'fa fa-fw fa-thermometer-half',\n\ @@ -285,8 +286,8 @@ function install_mod { })\n\ } catch(e) { /*_*/ }\n\ });\n\ - const result = temps.map((strTemp, index, arr) => { return strTemp + (index + 1 < arr.length ? ((index + 1) % itemsPerRow === 0 ? '
' : ' | ') : ''); });\n\ - return result.length > 0 ? result.join('') : 'N/A';\n\ + const result = temps.map((strTemp, index, arr) => { return strTemp + (index + 1 < arr.length ? ((index + 1) % itemsPerRow === 0 ? '
' : ' | ') : ''); });\n\ + return '
' + (result.length > 0 ? result.join('') : 'N/A') + '
';\n\ }\n\ }, }" "$pvemanagerlibjs" @@ -302,7 +303,7 @@ function install_mod { \\ {\n\ itemId: 'thermalNvme',\n\ - colspan: 1,\n\ + colspan: 2,\n\ printBar: false,\n\ title: gettext('NVMe Thermal State'),\n\ iconCls: 'fa fa-fw fa-thermometer-half',\n\ @@ -327,22 +328,48 @@ function install_mod { })\n\ } catch(e) { /*_*/ }\n\ });\n\ - const result = temps.map((strTemp, index, arr) => { return strTemp + (index + 1 < arr.length ? ((index + 1) % itemsPerRow === 0 ? '
' : ' | ') : ''); });\n\ - return result.length > 0 ? result.join('') : 'N/A';\n\ + const result = temps.map((strTemp, index, arr) => { return strTemp + (index + 1 < arr.length ? ((index + 1) % itemsPerRow === 0 ? '
' : ' | ') : ''); });\n\ + return '
' + (result.length > 0 ? result.join('') : 'N/A') + '
';\n\ }\n\ }, }" "$pvemanagerlibjs" fi - if [ $enableNvmeTemp = true -a $enableHddTemp = true ]; then + if [ $enableNvmeTemp = true -o $enableHddTemp = true ]; then sed -i "/^Ext.define('PVE.node.StatusView',/ { :a; - /^.*{.*'thermalNvme'.*},/!{N;ba;} + /items:/!{N;ba;} + :b; + /'thermal.*},/!{N;bb;} a\ \\ {\n\ xtype: 'box',\n\ - colspan: 1,\n\ + colspan: 2,\n\ + html: gettext('Drive(s)'),\n\ + }, + }" "$pvemanagerlibjs" + fi + + + # Add an empty line to separate modified items as a visual group + # NOTE: Check for the presence of items in the reverse order of display + local lastItemId="" + if [ $enableHddTemp = true ]; then + lastItemId="thermalHdd" + elif [ $enableNvmeTemp = true ]; then + lastItemId="thermalNvme" + fi + + if [ -n "$lastItemId" ]; then + sed -i "/^Ext.define('PVE.node.StatusView',/ { + :a; + /^.*{.*'$lastItemId'.*},/!{N;ba;} + a\ + \\ + {\n\ + xtype: 'box',\n\ + colspan: 2,\n\ padding: '0 0 20 0',\n\ }, }" "$pvemanagerlibjs" diff --git a/readme.md b/readme.md index 4d2983d..db74636 100644 --- a/readme.md +++ b/readme.md @@ -4,7 +4,7 @@ A small collection of script and mods for Proxmox If you find this helpful, a small donation is appreciated, [![Donate](https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=K8XPMSEBERH3W). ## Node temperature view -(Tested compatibility: 7.x, 8.0.x, 8.1.3) +(Tested compatibility: 7.x, 8.0.x, 8.1.4) This bash script installs a modification to the Proxmox Virtual Environment (PVE) web user interface (UI) to display temperature information in a flexible manner for CPU, NVME and HDDs/SSDs. From 9d6592dee7d3f96cdef623dd57b11c6ca7dfac42 Mon Sep 17 00:00:00 2001 From: rmm Date: Tue, 27 Feb 2024 22:00:24 +0100 Subject: [PATCH 3/3] Move node summary box into its own container --- pve-mod-gui-temp.sh | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/pve-mod-gui-temp.sh b/pve-mod-gui-temp.sh index 1fe7d54..a79c66b 100644 --- a/pve-mod-gui-temp.sh +++ b/pve-mod-gui-temp.sh @@ -359,6 +359,8 @@ function install_mod { lastItemId="thermalHdd" elif [ $enableNvmeTemp = true ]; then lastItemId="thermalNvme" + else + lastItemId="thermalCpu" fi if [ -n "$lastItemId" ]; then @@ -374,6 +376,38 @@ function install_mod { }, }" "$pvemanagerlibjs" fi + + # Move the node summary box into its own container + sed -i "/^\s*nodeStatus: nodeStatus,/ { + :a + /items: \[/ !{N;ba;} + a\ + \\ + {\n\ + xtype: 'container',\n\ + itemId: 'summarycontainer',\n\ + layout: 'column',\n\ + minWidth: 700,\n\ + defaults: {\n\ + minHeight: 350,\n\ + padding: 5,\n\ + columnWidth: 1,\n\ + },\n\ + items: [\n\ + nodeStatus,\n\ + ]\n\ + }, + }" "$pvemanagerlibjs" + + # Deactivate the original box instance + sed -i "/^\s*nodeStatus: nodeStatus,/ { + :a + /itemId: 'itemcontainer',/ !{N;ba;} + n; + :b + /nodeStatus,/ !{N;bb;} + s/nodeStatus/\/\/nodeStatus/ + }" "$pvemanagerlibjs" msg "New temperature display items added to the summary panel in \"$pvemanagerlibjs\"."