[pdm-devel] [PATCH datacenter-manager v5 22/26] ui: resource tree: use `ViewContext` to limit the api calls to a view
Dominik Csapak
d.csapak at proxmox.com
Wed Nov 26 16:18:15 CET 2025
this automatically limits the resource tree to a view when the context
exist, such as in a 'view'.
Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
ui/src/widget/resource_tree.rs | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/ui/src/widget/resource_tree.rs b/ui/src/widget/resource_tree.rs
index 795e9f49..0fa0e340 100644
--- a/ui/src/widget/resource_tree.rs
+++ b/ui/src/widget/resource_tree.rs
@@ -26,6 +26,7 @@ use proxmox_yew_comp::{http_get, Status};
use pdm_api_types::resource::{RemoteResources, Resource};
use crate::{
+ dashboard::view::ViewContext,
get_deep_url, get_resource_node,
renderer::{render_resource_name, render_status_icon},
RemoteList,
@@ -84,11 +85,17 @@ impl ExtractPrimaryKey for PdmTreeEntry {
}
}
-async fn load_resources(search_term: String) -> Result<Vec<RemoteResources>, Error> {
+async fn load_resources(
+ search_term: String,
+ view: Option<AttrValue>,
+) -> Result<Vec<RemoteResources>, Error> {
let mut params = json!({ "max-age": REFRESH_TIME_S });
if !search_term.is_empty() {
params["search"] = search_term.into();
}
+ if let Some(view) = view {
+ params["view"] = view.to_string().into();
+ }
http_get("/resources/list", Some(params)).await
}
@@ -146,10 +153,16 @@ impl Component for PdmResourceTree {
let props = ctx.props();
let link = ctx.link().clone();
let search_term = props.search_term.clone();
+
+ let view = ctx
+ .link()
+ .context::<ViewContext>(Callback::from(|_| {}))
+ .and_then(|(context, _)| context.name);
+
if !props.search_only || !search_term.is_empty() {
self._load_timeout = Some(Timeout::new(INPUT_BUFFER_MS, move || {
link.send_future(async move {
- Msg::LoadResult(load_resources(search_term).await)
+ Msg::LoadResult(load_resources(search_term, view).await)
});
}));
self.loading = true;
--
2.47.3
More information about the pdm-devel
mailing list