Skip to main content

edc_web_components/components/
show_data_plane.rs

1use crate::models::DataPlane;
2use edc_connector_client::types::dataplane::DataPlaneInstanceState;
3use patternfly_yew::prelude::*;
4use yew::prelude::*;
5
6#[derive(Clone, Debug, PartialEq, Properties)]
7pub struct ShowDataPlaneProps {
8  pub data_plane: DataPlane,
9}
10
11#[component]
12pub fn ShowDataPlane(props: &ShowDataPlaneProps) -> Html {
13  let state = match &props.data_plane.state {
14    DataPlaneInstanceState::Available => "Available".to_string(),
15    DataPlaneInstanceState::Registered => "Registered".to_string(),
16    DataPlaneInstanceState::Unavailable => "Unavailable".to_string(),
17    DataPlaneInstanceState::Unregistered => "Unregistered".to_string(),
18    DataPlaneInstanceState::Other(state) => state.to_string(),
19  };
20
21  let allowed_source_types =
22    props
23      .data_plane
24      .allowed_source_types
25      .iter()
26      .map(|allowed_source_type| {
27        html_nested!(
28          <FlexItem>
29            <Label label={allowed_source_type.to_string()} />
30          </FlexItem>
31        )
32      });
33
34  let allowed_dest_types = props
35    .data_plane
36    .allowed_dest_types
37    .iter()
38    .map(|allowed_dest_type| {
39      html_nested!(
40        <FlexItem>
41          <Label label={allowed_dest_type.to_string()} />
42        </FlexItem>
43      )
44    });
45
46  let allowed_transfer_types =
47    props
48      .data_plane
49      .allowed_transfer_types
50      .iter()
51      .map(|allowed_transfer_type| {
52        html_nested!(
53          <FlexItem>
54            <Label label={allowed_transfer_type.to_string()} />
55          </FlexItem>
56        )
57      });
58
59  html! {
60    <Card>
61      <CardTitle>{ "Data Plane" }</CardTitle>
62      <CardBody>
63        <DescriptionList mode={[DescriptionListMode::Horizontal]}>
64          <DescriptionGroup term="Id">{ &props.data_plane.id }</DescriptionGroup>
65          <DescriptionGroup term="URL">{ &props.data_plane.url }</DescriptionGroup>
66          <DescriptionGroup term="Allowed Source Types">
67            <Flex>{ for allowed_source_types }</Flex>
68          </DescriptionGroup>
69          <DescriptionGroup term="Allowed Destination Types">
70            <Flex>{ for allowed_dest_types }</Flex>
71          </DescriptionGroup>
72          <DescriptionGroup term="Allowed Transfer Types">
73            <Flex>{ for allowed_transfer_types }</Flex>
74          </DescriptionGroup>
75          <DescriptionGroup term="State">{ state }</DescriptionGroup>
76        </DescriptionList>
77      </CardBody>
78    </Card>
79  }
80}