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 9853E1FF184 for ; Thu, 4 Dec 2025 15:24:58 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id BDC9918EF; Thu, 4 Dec 2025 15:25:25 +0100 (CET) From: Dominik Csapak To: pdm-devel@lists.proxmox.com Date: Thu, 4 Dec 2025 15:20:26 +0100 Message-ID: <20251204142451.2992215-3-d.csapak@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251204142451.2992215-1-d.csapak@proxmox.com> References: <20251204142451.2992215-1-d.csapak@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.030 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 2/5] ui: remote updates: show progress on 'refresh all' 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" The subscription check can take a bit, so show a loading bar and disable the refresh button while that is loading. Signed-off-by: Dominik Csapak --- ui/src/remotes/updates.rs | 35 ++++++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/ui/src/remotes/updates.rs b/ui/src/remotes/updates.rs index 12eaec87..418aad98 100644 --- a/ui/src/remotes/updates.rs +++ b/ui/src/remotes/updates.rs @@ -22,7 +22,7 @@ use proxmox_yew_comp::{ LoadableComponentContext, LoadableComponentMaster, }; use pwt::props::{CssBorderBuilder, CssPaddingBuilder, WidgetStyleBuilder}; -use pwt::widget::{Button, Container, Panel, Tooltip}; +use pwt::widget::{Button, Container, Panel, Progress, Tooltip}; use pwt::{ css, css::FontColor, @@ -123,6 +123,7 @@ enum RemoteUpdateTreeMsg { LoadFinished(UpdateSummary), KeySelected(Option), RefreshAll, + RefreshFinished, CheckSubscription, } @@ -130,6 +131,7 @@ struct UpdateTreeComponent { store: TreeStore, selection: Selection, selected_entry: Option, + refreshing: bool, } fn default_sorter(a: &UpdateTreeEntry, b: &UpdateTreeEntry) -> Ordering { @@ -333,6 +335,7 @@ impl LoadableComponent for UpdateTreeComponent { store: store.clone(), selection, selected_entry: None, + refreshing: false, } } @@ -378,6 +381,10 @@ impl LoadableComponent for UpdateTreeComponent { return true; } + Self::Message::RefreshFinished => { + self.refreshing = false; + return true; + } Self::Message::KeySelected(key) => { if let Some(key) = key { let read_guard = self.store.read(); @@ -392,6 +399,7 @@ impl LoadableComponent for UpdateTreeComponent { Self::Message::CheckSubscription => { let link = ctx.link(); + self.refreshing = true; link.clone().spawn(async move { // Use the PDM subscription check for the global refresh all. let is_active = check_pdm_subscription().await; @@ -400,6 +408,7 @@ impl LoadableComponent for UpdateTreeComponent { } else { link.send_message(RemoteUpdateTreeMsg::RefreshAll); } + link.send_message(RemoteUpdateTreeMsg::RefreshFinished); }); } Self::Message::RefreshAll => { @@ -443,12 +452,14 @@ impl UpdateTreeComponent { .show_header(true) .class(css::FlexFit); - let refresh_all_button = Button::new(tr!("Refresh all")).on_activate({ - let link = ctx.link().clone(); - move |_| { - link.send_message(RemoteUpdateTreeMsg::CheckSubscription); - } - }); + let refresh_all_button = Button::new(tr!("Refresh all")) + .disabled(self.refreshing) + .on_activate({ + let link = ctx.link().clone(); + move |_| { + link.send_message(RemoteUpdateTreeMsg::CheckSubscription); + } + }); let title: Html = Row::new() .gap(2) @@ -466,6 +477,16 @@ impl UpdateTreeComponent { .style("flex", "1 1 0") .class(FlexFit) .border(true) + .with_optional_child( + self.refreshing.then_some( + Container::new().style("position", "relative").with_child( + Progress::new() + .style("position", "absolute") + .style("left", "0") + .style("right", "0"), + ), + ), + ) .with_child(table) } -- 2.47.3 _______________________________________________ pdm-devel mailing list pdm-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel