edc_web_components/pages/
data_plane_page.rs1use crate::components::ShowDataPlane;
2use crate::contexts::use_edc_connector_context;
3use crate::models::DataPlane;
4use edc_connector_client::EdcConnectorApiVersion;
5use patternfly_yew::prelude::*;
6use yew::prelude::*;
7use yew::suspense::use_future;
8
9#[component]
10pub fn DataPlanePage() -> Html {
11 html! {
12 <Suspense fallback={html!(<Bullseye><Spinner /></Bullseye>)}>
13 <DataPlanePageInner />
14 </Suspense>
15 }
16}
17
18#[component]
19pub fn DataPlanePageInner() -> HtmlResult {
20 let edc_connector_context = use_edc_connector_context();
21
22 let data_planes = use_future(async move || {
23 if let Some(edc_connector_client) = edc_connector_context.get_client() {
24 edc_connector_client
25 .data_planes(EdcConnectorApiVersion::V4)
26 .list()
27 .await
28 .unwrap_or_default()
29 .into_iter()
30 .map(DataPlane::from)
31 .collect::<Vec<DataPlane>>()
32 } else {
33 Vec::new()
34 }
35 })?;
36
37 let data_planes = (*data_planes).clone();
38
39 let data_planes = data_planes.into_iter().map(|data_plane| {
40 html! { <ShowDataPlane {data_plane} /> }
41 });
42
43 Ok(html! { { for data_planes } })
44}