all: Set steps to be a single Vec & fix 'ingerdient' typo

This commit is contained in:
traxys 2023-06-25 21:37:28 +02:00
parent b01f08ba2f
commit 0c7e52bd8b
9 changed files with 78 additions and 81 deletions

View file

@ -421,7 +421,7 @@ fn AddIngredientInner(props: &AddIngredientProps) -> HtmlResult {
}
Err(e) => {
err.set(Some(format!("Could not add ingredient: {e}")));
},
}
}
});
}
@ -612,8 +612,8 @@ fn RecipeViewerInner(props: &RecipeViewerInnerProps) -> HtmlResult {
}})}
</ul>
<AddIngredient
token={props.token.clone()}
household={props.household}
token={props.token.clone()}
household={props.household}
recipe={props.id}
update={update.clone()}
/>
@ -622,7 +622,7 @@ fn RecipeViewerInner(props: &RecipeViewerInnerProps) -> HtmlResult {
<div class="text-start">
<h2>{"Steps"}</h2>
<ul class="list-group list-group-flush">
{for r.steps.iter().map(|text| html!{
{for r.steps.split('\n').map(|text| html!{
<li class="list-group-item">{text}</li>
})}
</ul>

View file

@ -290,26 +290,9 @@ pub fn RecipeCreator() -> Html {
})
};
let steps = use_state(im::Vector::new);
let s = steps.clone();
let on_add_step = Callback::from(move |_| {
let mut steps = (*s).clone();
steps.push_back(String::new());
s.set(steps);
});
let mk_step_del = |idx| {
let s = steps.clone();
Callback::from(move |_| {
let mut steps = (*s).clone();
steps.remove(idx);
s.set(steps);
})
};
let mk_step_change = |idx| {
let s = steps.clone();
let steps = use_state(String::new);
let on_step_change = {
let steps = steps.clone();
Callback::from(move |e: Event| {
let Some(target) = e.target() else {
return;
@ -319,9 +302,7 @@ pub fn RecipeCreator() -> Html {
return;
};
let mut steps = (*s).clone();
steps[idx] = target.value();
s.set(steps);
steps.set(target.value());
})
};
@ -376,7 +357,7 @@ pub fn RecipeCreator() -> Html {
.iter()
.map(|rcp_ig: &RecipeIngredient| (rcp_ig.id, rcp_ig.amount / (*pc) as f64))
.collect(),
steps: (*s).iter().cloned().collect(),
steps: (*s).clone(),
},
)
.await
@ -519,27 +500,11 @@ pub fn RecipeCreator() -> Html {
</div>
<div>
<h2>{"Steps"}</h2>
<ul class="list-group list-group-flush">
{for (*steps).iter().enumerate().map(|(idx, step)| {
html!{
<li class="list-group-item">
<textarea
class="form-control"
value={step.clone()}
onchange={mk_step_change(idx)}
/>
<button
class="btn btn-danger mt-1"
onclick={mk_step_del(idx)}
>
{"Remove"}
</button>
</li>
}
})
}
</ul>
<button class="btn btn-primary" onclick={on_add_step}>{"Add Step"}</button>
<textarea
class="form-control"
value={(*steps).clone()}
onchange={on_step_change}
/>
</div>
<hr />
<ModalToggleButton classes={classes!("btn", "btn-lg", "btn-primary")} modal_id="newRcpModal">