Toast message when scheduling a recipe
This commit is contained in:
parent
fbef990022
commit
ccb1248da3
11 changed files with 168 additions and 66 deletions
|
|
@ -1,24 +1,16 @@
|
|||
use std::{cell::RefCell, future::Future, rc::Rc, str::FromStr};
|
||||
use std::str::FromStr;
|
||||
|
||||
use chrono::Locale;
|
||||
use common::{ron_api, utils::substitute};
|
||||
use gloo::{
|
||||
console::log,
|
||||
events::EventListener,
|
||||
net::http::Request,
|
||||
utils::{document, window},
|
||||
};
|
||||
use common::{ron_api, utils::substitute_with_names};
|
||||
use gloo::events::EventListener;
|
||||
use wasm_bindgen::prelude::*;
|
||||
use wasm_bindgen_futures::spawn_local;
|
||||
use web_sys::{
|
||||
DragEvent, Element, HtmlDivElement, HtmlInputElement, HtmlSelectElement, HtmlTextAreaElement,
|
||||
KeyboardEvent,
|
||||
};
|
||||
use web_sys::{Element, HtmlInputElement};
|
||||
|
||||
use crate::{
|
||||
calendar, modal_dialog, request,
|
||||
toast::{self, Level},
|
||||
utils::{by_id, selector, selector_and_clone, SelectorExt},
|
||||
utils::{get_locale, selector, SelectorExt},
|
||||
};
|
||||
|
||||
pub fn setup_page(recipe_id: i64) -> Result<(), JsValue> {
|
||||
|
|
@ -38,7 +30,7 @@ pub fn setup_page(recipe_id: i64) -> Result<(), JsValue> {
|
|||
)
|
||||
.await
|
||||
{
|
||||
if request::post::<(), _>(
|
||||
if let Ok(result) = request::post::<ron_api::ScheduleRecipeResult, _>(
|
||||
"calendar/schedule_recipe",
|
||||
ron_api::ScheduleRecipe {
|
||||
recipe_id,
|
||||
|
|
@ -47,31 +39,37 @@ pub fn setup_page(recipe_id: i64) -> Result<(), JsValue> {
|
|||
},
|
||||
)
|
||||
.await
|
||||
.is_ok()
|
||||
{
|
||||
toast::show_element_and_initialize(
|
||||
Level::Success,
|
||||
"#hidden-templates .calendar-add-to-planner-success",
|
||||
match result {
|
||||
ron_api::ScheduleRecipeResult::Ok => Level::Success,
|
||||
ron_api::ScheduleRecipeResult::RecipeAlreadyScheduledAtThisDate => {
|
||||
Level::Warning
|
||||
}
|
||||
},
|
||||
match result {
|
||||
ron_api::ScheduleRecipeResult::Ok => {
|
||||
"#hidden-templates .calendar-add-to-planner-success"
|
||||
}
|
||||
ron_api::ScheduleRecipeResult::RecipeAlreadyScheduledAtThisDate => {
|
||||
"#hidden-templates .calendar-add-to-planner-already-exists"
|
||||
}
|
||||
},
|
||||
|element| {
|
||||
let title =
|
||||
selector::<Element>("#recipe-view .recipe-title").inner_html();
|
||||
let date_format =
|
||||
selector::<Element>("#hidden-templates .calendar-date-format")
|
||||
.inner_html();
|
||||
let locale = {
|
||||
let lang_and_territory = selector::<Element>("html")
|
||||
.get_attribute("lang")
|
||||
.unwrap()
|
||||
.replace("-", "_");
|
||||
Locale::from_str(&lang_and_territory).unwrap_or_default()
|
||||
};
|
||||
|
||||
element.set_inner_html(&substitute(
|
||||
element.set_inner_html(&substitute_with_names(
|
||||
&element.inner_html(),
|
||||
"{}",
|
||||
&["{title}", "{date}"],
|
||||
&[
|
||||
&title,
|
||||
&date.format_localized(&date_format, locale).to_string(),
|
||||
&date
|
||||
.format_localized(&date_format, get_locale())
|
||||
.to_string(),
|
||||
],
|
||||
));
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
use std::str::FromStr;
|
||||
|
||||
use chrono::Locale;
|
||||
use gloo::utils::document;
|
||||
use wasm_bindgen::prelude::*;
|
||||
use web_sys::Element;
|
||||
|
|
@ -86,3 +89,11 @@ where
|
|||
.dyn_into::<T>()
|
||||
.unwrap()
|
||||
}
|
||||
|
||||
pub fn get_locale() -> Locale {
|
||||
let lang_and_territory = selector::<Element>("html")
|
||||
.get_attribute("lang")
|
||||
.unwrap()
|
||||
.replace("-", "_");
|
||||
Locale::from_str(&lang_and_territory).unwrap_or_default()
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue