[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