Add a calendar to schedule a recipe to a chosen date (WIP)
This commit is contained in:
parent
d9449de02b
commit
9d3f9e9c60
15 changed files with 441 additions and 62 deletions
|
|
@ -20,22 +20,6 @@ use crate::{
|
|||
utils::{by_id, selector, selector_and_clone, SelectorExt},
|
||||
};
|
||||
|
||||
async fn reload_recipes_list(current_recipe_id: i64) {
|
||||
match Request::get("/fragments/recipes_list")
|
||||
.query([("current_recipe_id", current_recipe_id.to_string())])
|
||||
.send()
|
||||
.await
|
||||
{
|
||||
Err(error) => {
|
||||
toast::show(Level::Info, &format!("Internal server error: {}", error));
|
||||
}
|
||||
Ok(response) => {
|
||||
let list = document().get_element_by_id("recipes-list").unwrap();
|
||||
list.set_outer_html(&response.text().await.unwrap());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn setup_page(recipe_id: i64) -> Result<(), JsValue> {
|
||||
// Title.
|
||||
{
|
||||
|
|
@ -266,10 +250,10 @@ pub fn setup_page(recipe_id: i64) -> Result<(), JsValue> {
|
|||
EventListener::new(&delete_button, "click", move |_event| {
|
||||
let title: HtmlInputElement = by_id("input-title");
|
||||
spawn_local(async move {
|
||||
if modal_dialog::show(&format!(
|
||||
if modal_dialog::show(modal_dialog::DialogContent::<fn(&Element)>::Text(&format!(
|
||||
"Are you sure to delete the recipe '{}'",
|
||||
title.value()
|
||||
))
|
||||
)))
|
||||
.await
|
||||
{
|
||||
let body = ron_api::Id { id: recipe_id };
|
||||
|
|
@ -314,7 +298,7 @@ pub fn setup_page(recipe_id: i64) -> Result<(), JsValue> {
|
|||
// Add a new group.
|
||||
{
|
||||
let button_add_group: HtmlInputElement = by_id("input-add-group");
|
||||
let on_click_add_group = EventListener::new(&button_add_group, "click", move |_event| {
|
||||
EventListener::new(&button_add_group, "click", move |_event| {
|
||||
let body = ron_api::Id { id: recipe_id };
|
||||
spawn_local(async move {
|
||||
let response: ron_api::Id = request::post("recipe/add_group", body).await.unwrap();
|
||||
|
|
@ -325,8 +309,8 @@ pub fn setup_page(recipe_id: i64) -> Result<(), JsValue> {
|
|||
steps: vec![],
|
||||
});
|
||||
});
|
||||
});
|
||||
on_click_add_group.forget();
|
||||
})
|
||||
.forget();
|
||||
}
|
||||
|
||||
Ok(())
|
||||
|
|
@ -397,7 +381,12 @@ fn create_group_element(group: &ron_api::Group) -> Element {
|
|||
.selector::<HtmlInputElement>(".input-group-name")
|
||||
.value();
|
||||
spawn_local(async move {
|
||||
if modal_dialog::show(&format!("Are you sure to delete the group '{}'", name)).await {
|
||||
if modal_dialog::show(modal_dialog::DialogContent::<fn(&Element)>::Text(&format!(
|
||||
"Are you sure to delete the group '{}'",
|
||||
name
|
||||
)))
|
||||
.await
|
||||
{
|
||||
let body = ron_api::Id { id: group_id };
|
||||
let _ = request::delete::<(), _>("recipe/remove_group", body).await;
|
||||
let group_element = by_id::<Element>(&format!("group-{}", group_id));
|
||||
|
|
@ -530,7 +519,12 @@ fn create_step_element(group_element: &Element, step: &ron_api::Step) -> Element
|
|||
.selector::<HtmlTextAreaElement>(".text-area-step-action")
|
||||
.value();
|
||||
spawn_local(async move {
|
||||
if modal_dialog::show(&format!("Are you sure to delete the step '{}'", action)).await {
|
||||
if modal_dialog::show(modal_dialog::DialogContent::<fn(&Element)>::Text(&format!(
|
||||
"Are you sure to delete the step '{}'",
|
||||
action
|
||||
)))
|
||||
.await
|
||||
{
|
||||
let body = ron_api::Id { id: step_id };
|
||||
let _ = request::delete::<(), _>("recipe/remove_step", body).await;
|
||||
let step_element = by_id::<Element>(&format!("step-{}", step_id));
|
||||
|
|
@ -675,12 +669,17 @@ fn create_ingredient_element(step_element: &Element, ingredient: &ron_api::Ingre
|
|||
.selector::<HtmlInputElement>(".input-ingredient-name")
|
||||
.value();
|
||||
spawn_local(async move {
|
||||
if modal_dialog::show(&format!("Are you sure to delete the ingredient '{}'", name))
|
||||
.await
|
||||
if modal_dialog::show(modal_dialog::DialogContent::<fn(&Element)>::Text(&format!(
|
||||
"Are you sure to delete the ingredient '{}'",
|
||||
name
|
||||
)))
|
||||
.await
|
||||
{
|
||||
let body = ron_api::Id { id: ingredient_id };
|
||||
let _ = request::delete::<(), _>("recipe/remove_ingredient", body).await;
|
||||
by_id::<Element>(&format!("ingredient-{}", ingredient_id)).remove();
|
||||
let ingredient_element = by_id::<Element>(&format!("ingredient-{}", ingredient_id));
|
||||
ingredient_element.next_element_sibling().unwrap().remove();
|
||||
ingredient_element.remove();
|
||||
}
|
||||
});
|
||||
})
|
||||
|
|
@ -689,6 +688,22 @@ fn create_ingredient_element(step_element: &Element, ingredient: &ron_api::Ingre
|
|||
ingredient_element
|
||||
}
|
||||
|
||||
async fn reload_recipes_list(current_recipe_id: i64) {
|
||||
match Request::get("/fragments/recipes_list")
|
||||
.query([("current_recipe_id", current_recipe_id.to_string())])
|
||||
.send()
|
||||
.await
|
||||
{
|
||||
Err(error) => {
|
||||
toast::show(Level::Info, &format!("Internal server error: {}", error));
|
||||
}
|
||||
Ok(response) => {
|
||||
let list = document().get_element_by_id("recipes-list").unwrap();
|
||||
list.set_outer_html(&response.text().await.unwrap());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
enum CursorPosition {
|
||||
UpperPart,
|
||||
LowerPart,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue