From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id A256D1FF191 for ; Tue, 23 Sep 2025 11:51:34 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id B032D9FF2; Tue, 23 Sep 2025 11:52:02 +0200 (CEST) From: Dominik Csapak To: pdm-devel@lists.proxmox.com Date: Tue, 23 Sep 2025 11:51:12 +0200 Message-ID: <20250923095124.1679038-10-d.csapak@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20250923095124.1679038-1-d.csapak@proxmox.com> References: <20250923095124.1679038-1-d.csapak@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.027 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pdm-devel] [PATCH datacenter-manager 1/2] ui: pve: node: use `node_info` helper from yew-comp X-BeenThere: pdm-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Datacenter Manager development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox Datacenter Manager development discussion Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pdm-devel-bounces@lists.proxmox.com Sender: "pdm-devel" Contains more information that is presented like on PVE, and does not use much more space. Signed-off-by: Dominik Csapak --- ui/src/pve/node/overview.rs | 76 ++++--------------------------------- 1 file changed, 8 insertions(+), 68 deletions(-) diff --git a/ui/src/pve/node/overview.rs b/ui/src/pve/node/overview.rs index 2b659e54..1a98c004 100644 --- a/ui/src/pve/node/overview.rs +++ b/ui/src/pve/node/overview.rs @@ -5,13 +5,12 @@ use yew::{ Context, }; -use proxmox_human_byte::HumanByte; -use proxmox_yew_comp::{RRDGraph, RRDTimeframe, RRDTimeframeSelector, Series}; +use proxmox_yew_comp::{node_info, RRDGraph, RRDTimeframe, RRDTimeframeSelector, Series}; use pwt::{ css::{ColorScheme, FlexFit, JustifyContent}, prelude::*, props::{ContainerBuilder, WidgetBuilder}, - widget::{error_message, Column, Container, Fa, Progress, Row}, + widget::{error_message, Column, Container, Progress, Row}, AsyncPool, }; @@ -210,67 +209,7 @@ impl yew::Component for NodeOverviewPanelComp { } fn view(&self, ctx: &yew::Context) -> yew::Html { - let mut status_comp = Column::new().gap(2).padding(4); - let status = self.status.as_ref(); - let cpu = status.map(|s| s.cpu).unwrap_or_default(); - let maxcpu = status.map(|s| s.cpuinfo.cpus).unwrap_or_default(); - let load = status.map(|s| s.loadavg.join(", ")).unwrap_or_default(); - - let memory = status.map(|s| s.memory.used as u64).unwrap_or_default(); - let maxmem = status.map(|s| s.memory.total as u64).unwrap_or(1); - - let root = status.map(|s| s.rootfs.used as u64).unwrap_or_default(); - let maxroot = status.map(|s| s.rootfs.total as u64).unwrap_or(1); - - let root_used = root as f64 / maxroot as f64; - - status_comp = status_comp - .with_child(make_row( - tr!("CPU usage"), - Fa::new("cpu"), - tr!("{0}% of {1} CPU(s)", format!("{:.2}", cpu * 100.0), maxcpu), - Some(cpu as f32), - )) - .with_child(make_row( - tr!("Load average"), - Fa::new("line-chart"), - load, - None, - )) - .with_child(crate::renderer::memory_status_row(memory, maxmem)) - .with_child(make_row( - tr!("Root filesystem usage"), - Fa::new("database"), - tr!( - "{0}% ({1} of {2})", - format!("{:.2}", root_used * 100.0), - HumanByte::from(root), - HumanByte::from(maxroot), - ), - Some(root_used as f32), - )) - .with_child(Container::new().padding(1)) // spacer - .with_child( - Row::new() - .with_child(tr!("Version")) - .with_flex_spacer() - .with_optional_child(status.map(|s| s.pveversion.as_str())), - ) - .with_child( - Row::new() - .with_child(tr!("CPU Model")) - .with_flex_spacer() - .with_child(tr!( - "{0} ({1} sockets)", - status.map(|s| s.cpuinfo.model.as_str()).unwrap_or_default(), - status.map(|s| s.cpuinfo.sockets).unwrap_or_default() - )), - ); - - if let Some(err) = &self.last_status_error { - status_comp.add_child(error_message(&err.to_string())); - } - + let status_comp = node_info(self.status.as_ref().map(|s| s.into())); let loading = self.status.is_none() && self.last_status_error.is_none(); Container::new() .class(FlexFit) @@ -282,6 +221,11 @@ impl yew::Component for NodeOverviewPanelComp { .style("opacity", (!loading).then_some("0")), ) .with_child(status_comp) + .with_optional_child( + self.last_status_error + .as_ref() + .map(|err| error_message(&err.to_string())), + ) .with_child(separator().padding_x(4)) .with_child( Row::new() @@ -341,7 +285,3 @@ impl yew::Component for NodeOverviewPanelComp { .into() } } - -fn make_row(title: String, icon: Fa, text: String, meter_value: Option) -> Column { - crate::renderer::status_row(title, icon, text, meter_value, false) -} -- 2.47.3 _______________________________________________ pdm-devel mailing list pdm-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel