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 429821FF191 for ; Tue, 21 Oct 2025 16:08:09 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id D7D2392B; Tue, 21 Oct 2025 16:08:34 +0200 (CEST) From: Dominik Csapak To: pdm-devel@lists.proxmox.com Date: Tue, 21 Oct 2025 16:03:19 +0200 Message-ID: <20251021140801.3611022-4-d.csapak@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251021140801.3611022-1-d.csapak@proxmox.com> References: <20251021140801.3611022-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 PROLO_LEO1 0.1 Meta Catches all Leo drug variations so far SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [mod.rs] Subject: [pdm-devel] [PATCH datacenter-manager 03/15] ui: dashboard: refactor remote panel creation into its own module 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" so we can more easily reuse them outside the dashboard struct. Signed-off-by: Dominik Csapak --- ui/src/dashboard/mod.rs | 39 ++++++++------------------- ui/src/dashboard/remote_panel.rs | 46 ++++++++++++++++++++++++-------- 2 files changed, 46 insertions(+), 39 deletions(-) diff --git a/ui/src/dashboard/mod.rs b/ui/src/dashboard/mod.rs index 2e170443..2fe4d7fa 100644 --- a/ui/src/dashboard/mod.rs +++ b/ui/src/dashboard/mod.rs @@ -19,7 +19,6 @@ use pwt::{ widget::{ error_message, form::{DisplayField, FormContext, Number}, - menu::{Menu, MenuButton, MenuItem}, Column, Container, Fa, InputPanel, Panel, Row, }, AsyncPool, @@ -41,7 +40,7 @@ mod node_panel; pub use node_panel::create_node_panel; mod remote_panel; -use remote_panel::RemotePanel; +pub use remote_panel::create_remote_panel; mod guest_panel; pub use guest_panel::create_guest_panel; @@ -422,32 +421,16 @@ impl Component for PdmDashboard { .class(FlexWrap::Wrap) .padding_top(0) .with_child( - Panel::new() - .title(create_title_with_icon("server", tr!("Remotes"))) - .flex(1.0) - //.border(true) - .width(300) - .min_height(175) - .with_tool( - MenuButton::new(tr!("Add")).show_arrow(true).menu( - Menu::new() - .with_item( - MenuItem::new("Proxmox VE") - .icon_class("fa fa-building") - .on_select(ctx.link().callback(|_| { - Msg::CreateWizard(Some(RemoteType::Pve)) - })), - ) - .with_item( - MenuItem::new("Proxmox Backup Server") - .icon_class("fa fa-floppy-o") - .on_select(ctx.link().callback(|_| { - Msg::CreateWizard(Some(RemoteType::Pbs)) - })), - ), - ), - ) - .with_child(RemotePanel::new(self.status.clone())), + create_remote_panel( + self.status.clone(), + ctx.link() + .callback(|_| Msg::CreateWizard(Some(RemoteType::Pve))), + ctx.link() + .callback(|_| Msg::CreateWizard(Some(RemoteType::Pbs))), + ) + .flex(1.0) + .width(300) + .min_height(175), ) .with_child( create_node_panel(Some(RemoteType::Pve), self.status.clone()) diff --git a/ui/src/dashboard/remote_panel.rs b/ui/src/dashboard/remote_panel.rs index 75f772fb..27eebac2 100644 --- a/ui/src/dashboard/remote_panel.rs +++ b/ui/src/dashboard/remote_panel.rs @@ -1,21 +1,19 @@ use std::rc::Rc; +use yew::html::IntoEventCallback; +use yew::virtual_dom::{VComp, VNode}; + use pdm_search::{Search, SearchTerm}; use proxmox_yew_comp::Status; -use pwt::{ - css, - prelude::*, - props::{ContainerBuilder, WidgetBuilder}, - widget::{Column, Container, Fa}, -}; -use yew::{ - virtual_dom::{VComp, VNode}, - Component, Properties, -}; +use pwt::css; +use pwt::prelude::*; +use pwt::props::{ContainerBuilder, WidgetBuilder}; +use pwt::widget::menu::{Menu, MenuButton, MenuEvent, MenuItem}; +use pwt::widget::{Column, Container, Fa, Panel}; use pdm_api_types::resource::ResourcesStatus; -use crate::search_provider::get_search_provider; +use crate::{dashboard::create_title_with_icon, search_provider::get_search_provider}; #[derive(Properties, PartialEq)] /// A panel for showing the overall remotes status @@ -116,3 +114,29 @@ fn create_search_term(failure: bool) -> Search { Search::with_terms(vec![SearchTerm::new("remote").category(Some("type"))]) } } + +pub fn create_remote_panel( + status: Option, + on_pve_wizard: impl IntoEventCallback, + on_pbs_wizard: impl IntoEventCallback, +) -> Panel { + Panel::new() + .title(create_title_with_icon("server", tr!("Remotes"))) + .border(true) + .with_tool( + MenuButton::new(tr!("Add")).show_arrow(true).menu( + Menu::new() + .with_item( + MenuItem::new("Proxmox VE") + .icon_class("fa fa-building") + .on_select(on_pve_wizard), + ) + .with_item( + MenuItem::new("Proxmox Backup Server") + .icon_class("fa fa-floppy-o") + .on_select(on_pbs_wizard), + ), + ), + ) + .with_child(RemotePanel::new(status)) +} -- 2.47.3 _______________________________________________ pdm-devel mailing list pdm-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel