Recipe can now be scheduled

This commit is contained in:
Greg Burri 2025-02-04 22:29:56 +01:00
parent ae6da1a5ae
commit fbef990022
18 changed files with 233 additions and 51 deletions

View file

@ -1,4 +1,7 @@
use gloo::{timers::callback::Timeout, utils::document};
use web_sys::Element;
use crate::utils::{by_id, selector_and_clone, SelectorExt};
pub enum Level {
Success,
@ -7,12 +10,36 @@ pub enum Level {
Warning,
}
pub fn show(level: Level, message: &str) {
const TIME_DISPLAYED: u32 = 10_000; // [ms].
pub fn show_message(level: Level, message: &str) {
let toast_element = document().get_element_by_id("toast").unwrap();
toast_element.set_inner_html(message);
toast_element.set_class_name("show");
Timeout::new(4_000, move || {
Timeout::new(TIME_DISPLAYED, move || {
toast_element.set_class_name("");
})
.forget();
}
pub fn show_element(level: Level, selector: &str) {
show_element_and_initialize(level, selector, |_| {})
}
pub fn show_element_and_initialize<T>(level: Level, selector: &str, initializer: T)
where
T: Fn(Element),
{
let toast_element = document().get_element_by_id("toast").unwrap();
let element: Element = selector_and_clone(selector);
toast_element.set_inner_html("");
toast_element.append_child(&element).unwrap();
initializer(element.clone());
toast_element.set_class_name("show");
Timeout::new(TIME_DISPLAYED, move || {
toast_element.set_class_name("");
})
.forget();