public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
* [PATCH yew-mobile-gui v2 0/3] fix #7330: dashboard: display CPU utilization correctly
@ 2026-02-19 12:05 Dominik Rusovac
  2026-02-19 12:05 ` [PATCH yew-mobile-gui v2 1/3] run cargo fmt Dominik Rusovac
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Dominik Rusovac @ 2026-02-19 12:05 UTC (permalink / raw)
  To: pve-devel

Fix CPU utilization presentation in dashboard

changes since v1:
* sum up products of cpu and maxcpu per node; and divide by total maxcpu
* make strings translatable

Dominik Rusovac (3):
  run cargo fmt
  fix #7330: dashboard: display CPU utilization correctly
  dashboard: clarify presentation of CPU utilization

 src/pages/page_dashboard.rs                   | 10 +++++-----
 src/pages/page_node_status/dashboard_panel.rs |  4 ++--
 src/pages/page_node_status/services_panel.rs  |  2 +-
 src/pages/page_not_found.rs                   |  2 +-
 src/widgets/guest_backup_panel.rs             |  6 +++---
 src/widgets/storage_content_panel.rs          |  2 +-
 src/widgets/task_list_button.rs               |  2 +-
 src/widgets/tasks_panel.rs                    |  2 +-
 8 files changed, 15 insertions(+), 15 deletions(-)

-- 
2.47.3





^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH yew-mobile-gui v2 1/3] run cargo fmt
  2026-02-19 12:05 [PATCH yew-mobile-gui v2 0/3] fix #7330: dashboard: display CPU utilization correctly Dominik Rusovac
@ 2026-02-19 12:05 ` Dominik Rusovac
  2026-02-19 12:05 ` [PATCH yew-mobile-gui v2 2/3] fix #7330: dashboard: display CPU utilization correctly Dominik Rusovac
  2026-02-19 12:05 ` [PATCH yew-mobile-gui v2 3/3] dashboard: clarify presentation of CPU utilization Dominik Rusovac
  2 siblings, 0 replies; 4+ messages in thread
From: Dominik Rusovac @ 2026-02-19 12:05 UTC (permalink / raw)
  To: pve-devel

Signed-off-by: Dominik Rusovac <d.rusovac@proxmox.com>
---
 
 no changes since v1

 src/pages/page_node_status/dashboard_panel.rs | 4 ++--
 src/pages/page_node_status/services_panel.rs  | 2 +-
 src/pages/page_not_found.rs                   | 2 +-
 src/widgets/guest_backup_panel.rs             | 6 +++---
 src/widgets/storage_content_panel.rs          | 2 +-
 src/widgets/task_list_button.rs               | 2 +-
 src/widgets/tasks_panel.rs                    | 2 +-
 7 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/src/pages/page_node_status/dashboard_panel.rs b/src/pages/page_node_status/dashboard_panel.rs
index c487d4e..1a723fe 100644
--- a/src/pages/page_node_status/dashboard_panel.rs
+++ b/src/pages/page_node_status/dashboard_panel.rs
@@ -10,14 +10,14 @@ use yew::prelude::*;
 use yew::virtual_dom::{VComp, VNode};
 use yew_router::scope_ext::RouterScopeExt;
 
+use pwt::AsyncAbortGuard;
 use pwt::prelude::*;
 use pwt::widget::{Button, Column, Fa, List, ListTile, MiniScroll, MiniScrollMode, Row};
-use pwt::AsyncAbortGuard;
 
 use proxmox_yew_comp::layout::card::standard_card;
 use proxmox_yew_comp::layout::list_tile::{icon_list_tile, list_tile_usage};
 use proxmox_yew_comp::layout::render_loaded_data;
-use proxmox_yew_comp::{http_get, http_post, percent_encoding::percent_encode_component, XTermJs};
+use proxmox_yew_comp::{XTermJs, http_get, http_post, percent_encoding::percent_encode_component};
 
 use pve_api_types::NodeStatus;
 
diff --git a/src/pages/page_node_status/services_panel.rs b/src/pages/page_node_status/services_panel.rs
index a4a0e00..6e3e2e0 100644
--- a/src/pages/page_node_status/services_panel.rs
+++ b/src/pages/page_node_status/services_panel.rs
@@ -5,8 +5,8 @@ use gloo_timers::callback::Timeout;
 
 use yew::virtual_dom::{VComp, VNode};
 
-use pwt::widget::{Column, Container, List};
 use pwt::AsyncAbortGuard;
+use pwt::widget::{Column, Container, List};
 use pwt::{prelude::*, widget::ListTile};
 
 use proxmox_yew_comp::layout::list_tile::title_subtitle_column;
diff --git a/src/pages/page_not_found.rs b/src/pages/page_not_found.rs
index ecf9534..352f509 100644
--- a/src/pages/page_not_found.rs
+++ b/src/pages/page_not_found.rs
@@ -1,5 +1,5 @@
 use pwt::prelude::*;
-use pwt::widget::{error_message, Column};
+use pwt::widget::{Column, error_message};
 
 use crate::widgets::TopNavBar;
 
diff --git a/src/widgets/guest_backup_panel.rs b/src/widgets/guest_backup_panel.rs
index 7fa46cb..fac281b 100644
--- a/src/widgets/guest_backup_panel.rs
+++ b/src/widgets/guest_backup_panel.rs
@@ -1,16 +1,16 @@
 use std::rc::Rc;
 
 use anyhow::Error;
-use proxmox_yew_comp::{http_post, LogView};
+use proxmox_yew_comp::{LogView, http_post};
 use pwt::touch::{Fab, FabSize, SideDialog};
 use pwt::widget::form::{Combobox, Field, Form, FormContext, SubmitButton};
 use serde_json::json;
 use yew::prelude::*;
 use yew::virtual_dom::{VComp, VNode};
 
+use pwt::AsyncAbortGuard;
 use pwt::prelude::*;
 use pwt::widget::{Column, MiniScroll, Row};
-use pwt::AsyncAbortGuard;
 
 use proxmox_yew_comp::layout::mobile_form::label_field;
 use proxmox_yew_comp::layout::render_loaded_data;
@@ -18,7 +18,7 @@ use proxmox_yew_comp::{http_get, percent_encoding::percent_encode_component};
 
 use pve_api_types::{StorageContent, StorageInfo};
 
-use crate::widgets::{storage_card, StorageContentPanel};
+use crate::widgets::{StorageContentPanel, storage_card};
 
 #[derive(Clone, PartialEq, Properties)]
 pub struct GuestBackupPanel {
diff --git a/src/widgets/storage_content_panel.rs b/src/widgets/storage_content_panel.rs
index 7793563..dd0513a 100644
--- a/src/widgets/storage_content_panel.rs
+++ b/src/widgets/storage_content_panel.rs
@@ -9,10 +9,10 @@ use yew::html::IntoPropValue;
 use yew::prelude::*;
 use yew::virtual_dom::{VComp, VNode};
 
+use pwt::AsyncAbortGuard;
 use pwt::prelude::*;
 use pwt::touch::MaterialAppScopeExt;
 use pwt::widget::{Column, Container, Dialog, Fa, List, ListTile, Row, Trigger};
-use pwt::AsyncAbortGuard;
 
 use proxmox_yew_comp::layout::list_tile::icon_list_tile;
 use proxmox_yew_comp::layout::render_loaded_data;
diff --git a/src/widgets/task_list_button.rs b/src/widgets/task_list_button.rs
index 66b6e17..7321b1d 100644
--- a/src/widgets/task_list_button.rs
+++ b/src/widgets/task_list_button.rs
@@ -8,7 +8,7 @@ use yew::html::{IntoEventCallback, IntoPropValue};
 use yew::virtual_dom::{VComp, VNode};
 
 use pwt::widget::{Button, Column, Container};
-use pwt::{prelude::*, AsyncAbortGuard};
+use pwt::{AsyncAbortGuard, prelude::*};
 
 use proxmox_yew_comp::http_get;
 use proxmox_yew_comp::percent_encoding::percent_encode_component;
diff --git a/src/widgets/tasks_panel.rs b/src/widgets/tasks_panel.rs
index 466cad1..36f8c29 100644
--- a/src/widgets/tasks_panel.rs
+++ b/src/widgets/tasks_panel.rs
@@ -5,9 +5,9 @@ use yew::html::IntoEventCallback;
 use yew::prelude::*;
 use yew::virtual_dom::{VComp, VNode};
 
+use pwt::AsyncAbortGuard;
 use pwt::prelude::*;
 use pwt::widget::{Column, Container, Fa, List, ListTile};
-use pwt::AsyncAbortGuard;
 
 use pwt_macros::builder;
 
-- 
2.47.3





^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH yew-mobile-gui v2 2/3] fix #7330: dashboard: display CPU utilization correctly
  2026-02-19 12:05 [PATCH yew-mobile-gui v2 0/3] fix #7330: dashboard: display CPU utilization correctly Dominik Rusovac
  2026-02-19 12:05 ` [PATCH yew-mobile-gui v2 1/3] run cargo fmt Dominik Rusovac
@ 2026-02-19 12:05 ` Dominik Rusovac
  2026-02-19 12:05 ` [PATCH yew-mobile-gui v2 3/3] dashboard: clarify presentation of CPU utilization Dominik Rusovac
  2 siblings, 0 replies; 4+ messages in thread
From: Dominik Rusovac @ 2026-02-19 12:05 UTC (permalink / raw)
  To: pve-devel

This displays CPU utilization across all nodes like "Summary" of
"Resources" in "Datacenter" of PVE web ui.

Signed-off-by: Dominik Rusovac <d.rusovac@proxmox.com>
---

 changes since v1:
 * sum up products of cpu and maxcpu per node; and divide by total maxcpu

 src/pages/page_dashboard.rs | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/pages/page_dashboard.rs b/src/pages/page_dashboard.rs
index f637c63..ac8e3e7 100644
--- a/src/pages/page_dashboard.rs
+++ b/src/pages/page_dashboard.rs
@@ -100,7 +100,7 @@ impl PvePageDashboard {
 
                 for node in node_list.iter() {
                     if let (Some(node_cpu), Some(node_maxcpu)) = (node.cpu, node.maxcpu) {
-                        cpu += node_cpu;
+                        cpu += node_cpu * node_maxcpu as f64;
                         maxcpu += node_maxcpu;
                     }
                     if let (Some(node_mem), Some(node_maxmem)) = (node.mem, node.maxmem) {
@@ -109,7 +109,7 @@ impl PvePageDashboard {
                     }
                 }
 
-                let cpu_percentage = if maxcpu == 0 {
+                let cpu_proportion = if maxcpu == 0 {
                     0.0
                 } else {
                     (cpu as f32) / (maxcpu as f32)
@@ -125,9 +125,9 @@ impl PvePageDashboard {
 
                 tiles.push(
                     icon_list_tile(Fa::new("cpu"), tr!("CPU"), (), ()).with_child(list_tile_usage(
-                        format!("{:.2}", cpu),
+                        format!("{:.2}", cpu_proportion * 100.0),
                         maxcpu.to_string(),
-                        cpu_percentage,
+                        cpu_proportion,
                     )),
                 );
 
-- 
2.47.3





^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH yew-mobile-gui v2 3/3] dashboard: clarify presentation of CPU utilization
  2026-02-19 12:05 [PATCH yew-mobile-gui v2 0/3] fix #7330: dashboard: display CPU utilization correctly Dominik Rusovac
  2026-02-19 12:05 ` [PATCH yew-mobile-gui v2 1/3] run cargo fmt Dominik Rusovac
  2026-02-19 12:05 ` [PATCH yew-mobile-gui v2 2/3] fix #7330: dashboard: display CPU utilization correctly Dominik Rusovac
@ 2026-02-19 12:05 ` Dominik Rusovac
  2 siblings, 0 replies; 4+ messages in thread
From: Dominik Rusovac @ 2026-02-19 12:05 UTC (permalink / raw)
  To: pve-devel

To align "Summary" of "Resources" in "Datacenter" of the PVE web ui,
this adds "CPU(s)" as the unit of the total number of CPUs displayed
above to the right of the CPU utilization bar. In addition, this makes
the involved strings translatable.

Signed-off-by: Dominik Rusovac <d.rusovac@proxmox.com>
---

 changes since v1:
 * make strings translatable

 src/pages/page_dashboard.rs | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/pages/page_dashboard.rs b/src/pages/page_dashboard.rs
index ac8e3e7..f33f182 100644
--- a/src/pages/page_dashboard.rs
+++ b/src/pages/page_dashboard.rs
@@ -125,8 +125,8 @@ impl PvePageDashboard {
 
                 tiles.push(
                     icon_list_tile(Fa::new("cpu"), tr!("CPU"), (), ()).with_child(list_tile_usage(
-                        format!("{:.2}", cpu_proportion * 100.0),
-                        maxcpu.to_string(),
+                        tr!("{0}%", format!("{:.2}", cpu_proportion * 100.0)),
+                        tr!("{0} CPU(s)", maxcpu.to_string()),
                         cpu_proportion,
                     )),
                 );
-- 
2.47.3





^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-02-19 12:05 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-02-19 12:05 [PATCH yew-mobile-gui v2 0/3] fix #7330: dashboard: display CPU utilization correctly Dominik Rusovac
2026-02-19 12:05 ` [PATCH yew-mobile-gui v2 1/3] run cargo fmt Dominik Rusovac
2026-02-19 12:05 ` [PATCH yew-mobile-gui v2 2/3] fix #7330: dashboard: display CPU utilization correctly Dominik Rusovac
2026-02-19 12:05 ` [PATCH yew-mobile-gui v2 3/3] dashboard: clarify presentation of CPU utilization Dominik Rusovac

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal