A bit of clean up
This commit is contained in:
parent
cb2483eab1
commit
a590d7e1e9
24 changed files with 259 additions and 237 deletions
|
|
@ -2,7 +2,7 @@
|
|||
name = "frontend"
|
||||
version = "0.1.0"
|
||||
authors = ["Greg Burri <greg.burri@gmail.com>"]
|
||||
edition = "2021"
|
||||
edition = "2024"
|
||||
|
||||
[lib]
|
||||
crate-type = ["cdylib"]
|
||||
|
|
|
|||
13
frontend/src/error.rs
Normal file
13
frontend/src/error.rs
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
// TODO: Not used at the moment. Remove?
|
||||
|
||||
use gloo::utils::errors::JsError;
|
||||
// use wasm_bindgen::JsValue;
|
||||
|
||||
#[derive(Debug, thiserror::Error)]
|
||||
pub enum Error {
|
||||
#[error("Javascript error: {0}")]
|
||||
JsError(#[from] JsError),
|
||||
|
||||
#[error("Path unknown: {0}")]
|
||||
UnknownPath(String),
|
||||
}
|
||||
|
|
@ -1,23 +1,16 @@
|
|||
use std::str::FromStr;
|
||||
|
||||
use chrono::Locale;
|
||||
use common::{ron_api, utils::substitute_with_names};
|
||||
use futures::TryFutureExt;
|
||||
use gloo::events::EventListener;
|
||||
use wasm_bindgen::prelude::*;
|
||||
use wasm_bindgen_futures::spawn_local;
|
||||
use web_sys::{Element, HtmlElement, HtmlInputElement};
|
||||
use web_sys::{Element, HtmlInputElement};
|
||||
|
||||
use crate::{
|
||||
calendar, modal_dialog,
|
||||
calendar,
|
||||
recipe_scheduler::RecipeScheduler,
|
||||
request,
|
||||
shopping_list::ShoppingList,
|
||||
toast::{self, Level},
|
||||
utils::{by_id, get_locale, selector, SelectorExt},
|
||||
utils::{SelectorExt, by_id, get_locale, selector},
|
||||
};
|
||||
|
||||
pub fn setup_page(is_user_logged: bool) -> Result<(), JsValue> {
|
||||
pub fn setup_page(is_user_logged: bool) {
|
||||
let recipe_scheduler = RecipeScheduler::new(!is_user_logged);
|
||||
|
||||
calendar::setup(
|
||||
|
|
@ -111,6 +104,4 @@ pub fn setup_page(is_user_logged: bool) -> Result<(), JsValue> {
|
|||
}
|
||||
}
|
||||
});
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
use chrono::Local;
|
||||
use common::ron_api;
|
||||
use gloo::{console::log, events::EventListener, utils::window};
|
||||
use utils::by_id;
|
||||
|
|
@ -5,9 +6,10 @@ use wasm_bindgen::prelude::*;
|
|||
use wasm_bindgen_futures::spawn_local;
|
||||
use web_sys::{HtmlElement, HtmlSelectElement};
|
||||
|
||||
use crate::utils::selector;
|
||||
use crate::{error::Error, utils::selector};
|
||||
|
||||
mod calendar;
|
||||
mod error;
|
||||
mod home;
|
||||
mod modal_dialog;
|
||||
mod on_click;
|
||||
|
|
@ -32,30 +34,18 @@ pub fn main() -> Result<(), JsValue> {
|
|||
.map(|v| v == "true")
|
||||
.unwrap_or_default();
|
||||
|
||||
// if let ["recipe", "edit", id] = path[..] {
|
||||
match path[..] {
|
||||
["recipe", "edit", id] => {
|
||||
let id = id.parse::<i64>().unwrap(); // TODO: remove unwrap.
|
||||
if let Err(error) = recipe_edit::setup_page(id) {
|
||||
log!(error);
|
||||
}
|
||||
recipe_edit::setup_page(id)
|
||||
}
|
||||
["recipe", "view", id] => {
|
||||
let id = id.parse::<i64>().unwrap(); // TODO: remove unwrap.
|
||||
if let Err(error) = recipe_view::setup_page(id, is_user_logged) {
|
||||
log!(error);
|
||||
}
|
||||
recipe_view::setup_page(id, is_user_logged)
|
||||
}
|
||||
// Home.
|
||||
[""] => {
|
||||
if let Err(error) = home::setup_page(is_user_logged) {
|
||||
log!(error);
|
||||
}
|
||||
}
|
||||
_ => (), // Disable: user editing data are now submitted as classic form data.
|
||||
// ["user", "edit"] => {
|
||||
// handles::user_edit(document)?;
|
||||
// }
|
||||
[""] => home::setup_page(is_user_logged),
|
||||
_ => log!("Path unknown: ", location),
|
||||
}
|
||||
|
||||
let select_language: HtmlSelectElement = by_id("select-website-language");
|
||||
|
|
|
|||
|
|
@ -16,17 +16,13 @@ use web_sys::{
|
|||
use crate::{
|
||||
modal_dialog, request,
|
||||
toast::{self, Level},
|
||||
utils::{by_id, selector, selector_and_clone, SelectorExt},
|
||||
utils::{SelectorExt, by_id, selector, selector_and_clone},
|
||||
};
|
||||
|
||||
pub fn setup_page(recipe_id: i64) -> Result<(), JsValue> {
|
||||
pub fn setup_page(recipe_id: i64) {
|
||||
// Title.
|
||||
{
|
||||
let Some(title) = document().get_element_by_id("input-title") else {
|
||||
return Err(JsValue::from_str("Unable to find 'input-title' element"));
|
||||
};
|
||||
|
||||
let title: HtmlInputElement = title.dyn_into().unwrap();
|
||||
let title: HtmlInputElement = by_id("input-title");
|
||||
|
||||
// Check if the recipe has been loaded.
|
||||
|
||||
|
|
@ -315,8 +311,6 @@ pub fn setup_page(recipe_id: i64) -> Result<(), JsValue> {
|
|||
})
|
||||
.forget();
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn create_group_element(group: &ron_api::Group) -> Element {
|
||||
|
|
|
|||
|
|
@ -1,9 +1,5 @@
|
|||
use std::str::FromStr;
|
||||
|
||||
use chrono::Locale;
|
||||
use common::{ron_api, utils::substitute_with_names};
|
||||
use common::utils::substitute_with_names;
|
||||
use gloo::events::EventListener;
|
||||
use wasm_bindgen::prelude::*;
|
||||
use wasm_bindgen_futures::spawn_local;
|
||||
use web_sys::{Element, HtmlInputElement};
|
||||
|
||||
|
|
@ -11,10 +7,10 @@ use crate::{
|
|||
calendar, modal_dialog,
|
||||
recipe_scheduler::{RecipeScheduler, ScheduleRecipeResult},
|
||||
toast::{self, Level},
|
||||
utils::{get_locale, selector, SelectorExt},
|
||||
utils::{SelectorExt, get_locale, selector},
|
||||
};
|
||||
|
||||
pub fn setup_page(recipe_id: i64, is_user_logged: bool) -> Result<(), JsValue> {
|
||||
pub fn setup_page(recipe_id: i64, is_user_logged: bool) {
|
||||
let recipe_scheduler = RecipeScheduler::new(!is_user_logged);
|
||||
|
||||
let add_to_planner: Element = selector("#recipe-view .add-to-planner");
|
||||
|
|
@ -93,6 +89,4 @@ pub fn setup_page(recipe_id: i64, is_user_logged: bool) -> Result<(), JsValue> {
|
|||
});
|
||||
})
|
||||
.forget();
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue