Render constraint lists dynamically

This commit is contained in:
Aaron Fenyes 2024-11-01 04:25:03 -07:00
parent a3fce9d298
commit fb292d8b5b
3 changed files with 28 additions and 25 deletions

View file

@ -76,7 +76,10 @@ fn ElementOutlineItem(key: usize, element: assembly::Element) -> View {
let u_coord = format!("{:.3}", u).replace("-", "\u{2212}");
View::from(div().children(u_coord))
}).collect::<Vec<_>>();
let constrained = element.constraints.len() > 0;
let constrained = element.constraints.map(|csts| csts.len() > 0);
let constraint_list = element.constraints.map(
|csts| csts.clone().into_iter().collect()
);
let details_node = create_node_ref();
view! {
li {
@ -101,7 +104,7 @@ fn ElementOutlineItem(key: usize, element: assembly::Element) -> View {
}
event.prevent_default();
},
"ArrowRight" if constrained => {
"ArrowRight" if constrained.get() => {
let _ = details_node
.get()
.unchecked_into::<web_sys::Element>()
@ -150,7 +153,7 @@ fn ElementOutlineItem(key: usize, element: assembly::Element) -> View {
}
ul(class="constraints") {
Keyed(
list=element.constraints.into_iter().collect::<Vec<_>>(),
list=constraint_list,
view=move |cst_key| view! {
ConstraintOutlineItem(
constraint_key=cst_key,
@ -200,8 +203,7 @@ pub fn Outline() -> View {
key.clone(),
elt.id.clone(),
elt.label.clone(),
elt.rep.into_iter().map(|u| u.to_bits()).collect::<Vec<_>>(),
elt.constraints.clone()
elt.rep.into_iter().map(|u| u.to_bits()).collect::<Vec<_>>()
)
)
}