[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