[pdm-devel] [PATCH datacenter-manager 2/2] ui: dashboard: make refresh button force the update

Dominik Csapak d.csapak at proxmox.com
Fri Sep 5 10:32:47 CEST 2025


by setting 'max-age' to 0 in that case. Introduce a 'force' parameter
to the reload messges/functions so we can easily control that.

Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
 ui/src/dashboard/mod.rs        | 20 ++++++++++++--------
 ui/src/dashboard/status_row.rs | 14 +++++++-------
 2 files changed, 19 insertions(+), 15 deletions(-)

diff --git a/ui/src/dashboard/mod.rs b/ui/src/dashboard/mod.rs
index 9d65122..cc7dc58 100644
--- a/ui/src/dashboard/mod.rs
+++ b/ui/src/dashboard/mod.rs
@@ -100,7 +100,7 @@ pub enum Msg {
     LoadingFinished(LoadingResult),
     RemoteListChanged(RemoteList),
     CreateWizard(bool),
-    Reload,
+    Reload(bool), // force
     UpdateConfig(DashboardConfig),
     ConfigWindow(bool),
     Search(Search),
@@ -289,9 +289,13 @@ impl PdmDashboard {
             )
     }
 
-    fn reload(&mut self, ctx: &yew::Context<Self>) {
+    fn reload(&mut self, ctx: &yew::Context<Self>, force: bool) {
         let link = ctx.link().clone();
-        let max_age = self.config.max_age.unwrap_or(DEFAULT_MAX_AGE_S);
+        let max_age = if force {
+            0
+        } else {
+            self.config.max_age.unwrap_or(DEFAULT_MAX_AGE_S)
+        };
         let (_, since) = Self::get_task_options(&self.config);
 
         self.load_finished_time = None;
@@ -360,7 +364,7 @@ impl Component for PdmDashboard {
             config,
         };
 
-        this.reload(ctx);
+        this.reload(ctx, false);
 
         this
     }
@@ -402,8 +406,8 @@ impl Component for PdmDashboard {
                 self.show_wizard = show;
                 true
             }
-            Msg::Reload => {
-                self.reload(ctx);
+            Msg::Reload(force) => {
+                self.reload(ctx, force);
                 true
             }
             Msg::ConfigWindow(show) => {
@@ -416,7 +420,7 @@ impl Component for PdmDashboard {
                 let (new_hours, _) = Self::get_task_options(&self.config);
 
                 if old_hours != new_hours {
-                    self.reload(ctx);
+                    self.reload(ctx, false);
                 }
 
                 self.show_config_window = false;
@@ -445,7 +449,7 @@ impl Component for PdmDashboard {
                         self.config
                             .refresh_interval
                             .unwrap_or(DEFAULT_REFRESH_INTERVAL_S),
-                        ctx.link().callback(|_| Msg::Reload),
+                        ctx.link().callback(|force| Msg::Reload(force)),
                         ctx.link().callback(|_| Msg::ConfigWindow(true)),
                     )),
             )
diff --git a/ui/src/dashboard/status_row.rs b/ui/src/dashboard/status_row.rs
index 26e3319..99cc3b5 100644
--- a/ui/src/dashboard/status_row.rs
+++ b/ui/src/dashboard/status_row.rs
@@ -17,7 +17,7 @@ pub struct DashboardStatusRow {
     last_refresh: Option<f64>,
     reload_interval_s: u64,
 
-    on_reload: Callback<()>,
+    on_reload: Callback<bool>,
 
     on_settings_click: Callback<()>,
 }
@@ -26,7 +26,7 @@ impl DashboardStatusRow {
     pub fn new(
         last_refresh: Option<f64>,
         reload_interval_s: u64,
-        on_reload: impl Into<Callback<()>>,
+        on_reload: impl Into<Callback<bool>>,
         on_settings_click: impl Into<Callback<()>>,
     ) -> Self {
         yew::props!(Self {
@@ -39,7 +39,7 @@ impl DashboardStatusRow {
 }
 
 pub enum Msg {
-    Reload,
+    Reload(bool), // force
     CheckReload,
 }
 
@@ -74,15 +74,15 @@ impl Component for PdmDashboardStatusRow {
     fn update(&mut self, ctx: &Context<Self>, msg: Self::Message) -> bool {
         let props = ctx.props();
         match msg {
-            Msg::Reload => {
-                props.on_reload.emit(());
+            Msg::Reload(force) => {
+                props.on_reload.emit(force);
                 true
             }
             Msg::CheckReload => match ctx.props().last_refresh {
                 Some(last_refresh) => {
                     let duration = Date::now() / 1000.0 - last_refresh;
                     if duration >= props.reload_interval_s as f64 {
-                        ctx.link().send_message(Msg::Reload);
+                        ctx.link().send_message(Msg::Reload(false));
                     }
                     true
                 }
@@ -112,7 +112,7 @@ impl Component for PdmDashboardStatusRow {
                     })
                     .tabindex(0)
                     .disabled(is_loading)
-                    .on_activate(ctx.link().callback(|_| Msg::Reload)),
+                    .on_activate(ctx.link().callback(|_| Msg::Reload(true))),
                 )
                 .tip(tr!("Refresh now")),
             )
-- 
2.47.2





More information about the pdm-devel mailing list