From 00b32704c4d243a44982e1ec13c94c5607b83e58 Mon Sep 17 00:00:00 2001 From: jx163 Date: Wed, 1 Oct 2025 14:27:43 +1300 Subject: [PATCH 1/3] Add Glances multi-system monitoring widget --- src/components/Widgets/GlCompactMetrics.vue | 702 ++++++++++++++++++++ src/components/Widgets/WidgetBase.vue | 1 + 2 files changed, 703 insertions(+) create mode 100644 src/components/Widgets/GlCompactMetrics.vue diff --git a/src/components/Widgets/GlCompactMetrics.vue b/src/components/Widgets/GlCompactMetrics.vue new file mode 100644 index 00000000..1e59290e --- /dev/null +++ b/src/components/Widgets/GlCompactMetrics.vue @@ -0,0 +1,702 @@ + + + + + diff --git a/src/components/Widgets/WidgetBase.vue b/src/components/Widgets/WidgetBase.vue index a148b476..977d88c0 100644 --- a/src/components/Widgets/WidgetBase.vue +++ b/src/components/Widgets/WidgetBase.vue @@ -127,6 +127,7 @@ const COMPAT = { weather: 'Weather', 'weather-forecast': 'WeatherForecast', 'xkcd-comic': 'XkcdComic', + 'gl-compact-metrics': 'GlCompactMetrics', }; export default { From e1f040ce89beaea20866f3ab0f3625539504a380 Mon Sep 17 00:00:00 2001 From: jx163 Date: Thu, 2 Oct 2025 11:41:40 +1300 Subject: [PATCH 2/3] resolve lint issues in uptime and metric handling --- src/components/Widgets/GlCompactMetrics.vue | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/Widgets/GlCompactMetrics.vue b/src/components/Widgets/GlCompactMetrics.vue index 1e59290e..0c8517eb 100644 --- a/src/components/Widgets/GlCompactMetrics.vue +++ b/src/components/Widgets/GlCompactMetrics.vue @@ -325,7 +325,7 @@ export default { }, formatBytes(bytes) { - if (!bytes || bytes === 0 || Number.isNaN(bytes)) return '0 B'; + if (!bytes || Number.isNaN(bytes)) return '0 B'; const k = 1024; const sizes = ['B', 'KB', 'MB', 'GB', 'TB']; const i = Math.floor(Math.log(bytes) / Math.log(k)); @@ -333,7 +333,7 @@ export default { }, formatUptime(seconds) { - if (!seconds || Number.isNaN(seconds) || seconds <= 0) return '-'; + if (!seconds || seconds <= 0) return '-'; const days = Math.floor(seconds / 86400); const hours = Math.floor((seconds % 86400) / 3600); @@ -360,7 +360,7 @@ export default { uptime = this.detailData.uptime; if (typeof uptime === 'string') { - return uptime.replace('days', 'days').replace('day', 'day'); + return uptime; } } else if (this.detailData.system && this.detailData.system.uptime) { // 3. System object uptime From 98f4a38683b67c83db122ce7154bcf767ff5e356 Mon Sep 17 00:00:00 2001 From: jx163 Date: Thu, 2 Oct 2025 11:54:02 +1300 Subject: [PATCH 3/3] fix lint issues --- src/components/Widgets/GlCompactMetrics.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Widgets/GlCompactMetrics.vue b/src/components/Widgets/GlCompactMetrics.vue index 0c8517eb..8030d44e 100644 --- a/src/components/Widgets/GlCompactMetrics.vue +++ b/src/components/Widgets/GlCompactMetrics.vue @@ -325,7 +325,7 @@ export default { }, formatBytes(bytes) { - if (!bytes || Number.isNaN(bytes)) return '0 B'; + if (bytes == null || isNaN(bytes)) return '0 B'; const k = 1024; const sizes = ['B', 'KB', 'MB', 'GB', 'TB']; const i = Math.floor(Math.log(bytes) / Math.log(k));