From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id C99B91FF16B for ; Tue, 26 Aug 2025 12:22:31 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id BFA8A2F110; Tue, 26 Aug 2025 12:22:33 +0200 (CEST) From: Dominik Csapak To: pdm-devel@lists.proxmox.com Date: Tue, 26 Aug 2025 12:15:14 +0200 Message-ID: <20250826102229.2271453-5-d.csapak@proxmox.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250826102229.2271453-1-d.csapak@proxmox.com> References: <20250826102229.2271453-1-d.csapak@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.022 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 v4 4/8] ui: refactor remote upid formatter 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" since that is often the same (aside from the option to render the remote), and we'll want to reuse that even further. Signed-off-by: Dominik Csapak Reviewed-by: Stefan Hanreich Tested-by: Stefan Hanreich --- changes from v3: * fixed a clippy lint with unnecessary taking a reference on a reference ui/src/remotes/tasks.rs | 19 ++++--------------- ui/src/tasks.rs | 24 +++++++++++++++++++++++- ui/src/top_nav_bar.rs | 18 +++--------------- 3 files changed, 30 insertions(+), 31 deletions(-) diff --git a/ui/src/remotes/tasks.rs b/ui/src/remotes/tasks.rs index 3398647..138b899 100644 --- a/ui/src/remotes/tasks.rs +++ b/ui/src/remotes/tasks.rs @@ -7,12 +7,9 @@ use yew::{ }; use pdm_api_types::RemoteUpid; -use pdm_client::types::PveUpid; use proxmox_yew_comp::{ - common_api_types::TaskListItem, - utils::{format_task_description, format_upid, render_epoch_short}, - TaskViewer, Tasks, + common_api_types::TaskListItem, utils::render_epoch_short, TaskViewer, Tasks, }; use pwt::{ css::{FlexFit, JustifyContent}, @@ -24,6 +21,8 @@ use pwt::{ }, }; +use crate::tasks::format_optional_remote_upid; + #[derive(PartialEq, Properties)] pub struct RemoteTaskList; impl RemoteTaskList { @@ -77,17 +76,7 @@ fn columns() -> Rc>> { DataTableColumn::new(tr!("Description")) .flex(4) .render(move |item: &TaskListItem| { - if let Ok(remote_upid) = item.upid.parse::() { - match remote_upid.upid.parse::() { - Ok(upid) => { - format_task_description(&upid.worker_type, upid.worker_id.as_deref()) - } - Err(_) => format_upid(&remote_upid.upid), - } - } else { - format_upid(&item.upid) - } - .into() + format_optional_remote_upid(&item.upid, false).into() }) .into(), DataTableColumn::new(tr!("Status")) diff --git a/ui/src/tasks.rs b/ui/src/tasks.rs index 6aa202a..1129e6a 100644 --- a/ui/src/tasks.rs +++ b/ui/src/tasks.rs @@ -1,6 +1,10 @@ -use proxmox_yew_comp::utils::register_task_description; +use proxmox_yew_comp::utils::{format_task_description, format_upid, register_task_description}; use pwt::tr; +use pdm_api_types::RemoteUpid; +use pdm_client::types::PveUpid; +use yew::virtual_dom::Key; + pub fn register_pve_tasks() { register_task_description("qmstart", ("VM", tr!("Start"))); register_task_description("acmedeactivate", ("ACME Account", tr!("Deactivate"))); @@ -99,3 +103,21 @@ pub fn register_pve_tasks() { register_task_description("zfscreate", (tr!("ZFS Storage"), tr!("Create"))); register_task_description("zfsremove", ("ZFS Pool", tr!("Remove"))); } + +/// Format a UPID that is either [`RemoteUpid`] or a [`UPID`] +/// If it's a [`RemoteUpid`], prefixes it with the remote name +pub fn format_optional_remote_upid(upid: &str, include_remote: bool) -> String { + if let Ok(remote_upid) = upid.parse::() { + let description = match remote_upid.upid.parse::() { + Ok(upid) => format_task_description(&upid.worker_type, upid.worker_id.as_deref()), + Err(_) => format_upid(&remote_upid.upid), + }; + if include_remote { + format!("{} - {}", remote_upid.remote(), description) + } else { + description + } + } else { + format_upid(upid) + } +} diff --git a/ui/src/top_nav_bar.rs b/ui/src/top_nav_bar.rs index 78aace5..069e831 100644 --- a/ui/src/top_nav_bar.rs +++ b/ui/src/top_nav_bar.rs @@ -13,15 +13,15 @@ use pwt::state::{Loader, Theme, ThemeObserver}; use pwt::widget::{Button, Container, Row, ThemeModeSelector, Tooltip}; use proxmox_yew_comp::common_api_types::TaskListItem; -use proxmox_yew_comp::utils::{format_task_description, format_upid, set_location_href}; +use proxmox_yew_comp::utils::set_location_href; use proxmox_yew_comp::RunningTasksButton; use proxmox_yew_comp::{http_get, HelpButton, LanguageDialog, TaskViewer, ThemeDialog}; use pwt_macros::builder; use pdm_api_types::RemoteUpid; -use pdm_client::types::PveUpid; +use crate::tasks::format_optional_remote_upid; use crate::widget::SearchBox; #[derive(Deserialize)] @@ -207,19 +207,7 @@ impl Component for PdmTopNavBar { }), ]) .render(|item: &TaskListItem| { - if let Ok(remote_upid) = (&item.upid).parse::() { - let description = match remote_upid.upid.parse::() { - Ok(upid) => format_task_description( - &upid.worker_type, - upid.worker_id.as_deref(), - ), - Err(_) => format_upid(&remote_upid.upid), - }; - format!("{} - {}", remote_upid.remote(), description) - } else { - format_upid(&item.upid) - } - .into() + format_optional_remote_upid(&item.upid, true).into() }), ); -- 2.47.2 _______________________________________________ pdm-devel mailing list pdm-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel