Make constraints editable

This commit is contained in:
Aaron Fenyes 2024-10-29 22:32:00 -07:00
parent e5f4d523f9
commit e0880d2ad2
5 changed files with 49 additions and 13 deletions

View file

@ -1,6 +1,7 @@
use itertools::Itertools;
use sycamore::{prelude::*, web::tags::div};
use web_sys::{Element, KeyboardEvent, MouseEvent, wasm_bindgen::JsCast};
use web_sys::{Element, Event, HtmlInputElement, KeyboardEvent, MouseEvent, wasm_bindgen::JsCast};
use web_sys::{console, wasm_bindgen::JsValue}; /* DEBUG */
use crate::AppState;
@ -51,8 +52,6 @@ pub fn Outline() -> View {
let constrained = elt.constraints.len() > 0;
let details_node = create_node_ref();
view! {
/* [TO DO] switch to integer-valued parameters whenever
that becomes possible again */
li {
details(ref=details_node) {
summary(
@ -138,7 +137,25 @@ pub fn Outline() -> View {
li(class="cst") {
input(r#type="checkbox", bind:checked=cst.active)
div(class="cst-label") { (other_arg_label) }
div(class="cst-rep") { (cst.rep) }
input(
r#type="number",
step="0.01",
bind:value=cst.rep_text,
on:change=move |event: Event| {
let target: HtmlInputElement = event.target().unwrap().unchecked_into();
let rep_valid = target.check_validity() && !target.value().is_empty();
batch(|| {
cst.rep_valid.set(rep_valid);
if rep_valid {
console::log_2(
&JsValue::from("Constraint rep parsed to"),
&JsValue::from(target.value_as_number())
);
cst.rep.set(target.value_as_number());
}
});
}
)
}
}
},