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 4CCFC1FF187 for ; Mon, 25 Aug 2025 12:57:02 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 15BEA10253; Mon, 25 Aug 2025 12:57:06 +0200 (CEST) Message-ID: <3ef8e5fa-0d82-4151-897a-f95884d44a7d@proxmox.com> Date: Mon, 25 Aug 2025 12:56:32 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: Proxmox Datacenter Manager development discussion , Dominik Csapak References: <20250825081042.797559-1-d.csapak@proxmox.com> <20250825081042.797559-5-d.csapak@proxmox.com> Content-Language: en-US From: Stefan Hanreich In-Reply-To: <20250825081042.797559-5-d.csapak@proxmox.com> X-SPAM-LEVEL: Spam detection results: 0 AWL 0.708 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 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_RPBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_SAFE_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: Re: [pdm-devel] [PATCH datacenter-manager v3 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" one comment inline On 8/25/25 10:10 AM, Dominik Csapak wrote: > 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 > --- > ui/src/remotes/tasks.rs | 19 ++++--------------- > ui/src/tasks.rs | 23 ++++++++++++++++++++++- > ui/src/top_nav_bar.rs | 18 +++--------------- > 3 files changed, 29 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..0e7899c 100644 > --- a/ui/src/tasks.rs > +++ b/ui/src/tasks.rs > @@ -1,6 +1,9 @@ > -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; > + > pub fn register_pve_tasks() { > register_task_description("qmstart", ("VM", tr!("Start"))); > register_task_description("acmedeactivate", ("ACME Account", tr!("Deactivate"))); > @@ -99,3 +102,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) > + } > +} Maybe some error handling if the &str is not a valid Upid? Maybe we want an enum / Either type that holds both RemoteUpid / PveUpid in the future? > 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() > }), > ); > _______________________________________________ pdm-devel mailing list pdm-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel