Re: [PATCH datacenter-manager v2 3/4] ui: dashboard: add new gauge panels widget type

Lukas Wagner
2026-04-01T11:37:00Z

On Mon Mar 30, 2026 at 3:07 PM CEST, Dominik Csapak wrote:
> diff --git a/ui/src/dashboard/view/row_view.rs b/ui/src/dashboard/view/row_view.rs
> index 673b4627..f220f954 100644
> --- a/ui/src/dashboard/view/row_view.rs
> +++ b/ui/src/dashboard/view/row_view.rs
> @@ -21,7 +21,7 @@ use crate::dashboard::view::EditingMessage;
>
> use pdm_api_types::remotes::RemoteType;
> use pdm_api_types::views::{
> - LeaderboardType, RowWidget, TaskSummaryGrouping, ViewLayout, WidgetType,
> + LeaderboardType, NodeResourceType, RowWidget, TaskSummaryGrouping, ViewLayout, WidgetType,
> };
>
> #[derive(Properties, PartialEq)]
> @@ -539,6 +539,35 @@ fn create_menu(ctx: &yew::Context<RowViewComp>, new_coords: Position) -> Menu {
> ctx.link()
> .callback(move |_| Msg::AddWidget(new_coords, widget.clone()))
> };
> + let create_gauge_menu = |remote_type: Option<RemoteType>| -> Menu {
> + Menu::new()
> + .with_item(
> + MenuItem::new(tr!("All Resources")).on_select(create_callback(
> + WidgetType::NodeResourceGauge {
> + resource: None,
> + remote_type,
> + },
> + )),
> + )
> + .with_item(MenuItem::new(tr!("CPU")).on_select(create_callback(
> + WidgetType::NodeResourceGauge {
> + resource: Some(NodeResourceType::Cpu),
> + remote_type,
> + },
> + )))
> + .with_item(MenuItem::new(tr!("Memory")).on_select(create_callback(
> + WidgetType::NodeResourceGauge {
> + resource: Some(NodeResourceType::Memory),
> + remote_type,
> + },
> + )))
> + .with_item(MenuItem::new(tr!("Storage")).on_select(create_callback(
> + WidgetType::NodeResourceGauge {
> + resource: Some(NodeResourceType::Storage),
> + remote_type,
> + },
> + )))
> + };
> Menu::new()
> .with_item(
> MenuItem::new(tr!("Remote Panel"))
> @@ -642,4 +671,16 @@ fn create_menu(ctx: &yew::Context<RowViewComp>, new_coords: Position) -> Menu {
> MenuItem::new(tr!("Resource Tree"))
> .on_select(create_callback(WidgetType::ResourceTree)),
> )
> + .with_item(
> + MenuItem::new(tr!("Resource Usage")).menu(
> + Menu::new()
> + .with_item(MenuItem::new(tr!("All")).menu(create_gauge_menu(None)))
> + .with_item(
> + MenuItem::new(tr!("PVE")).menu(create_gauge_menu(Some(RemoteType::Pve))),
> + )
> + .with_item(
> + MenuItem::new(tr!("PBS")).menu(create_gauge_menu(Some(RemoteType::Pbs))),
> + ),

Sorry, forgot this in my initial reply:

I'd also use the full product name here instead of the colloquially used
acronyms.

> + ),
> + )
> }