Add default servings to profile + choose servings when scheduling

This commit is contained in:
Greg Burri 2025-02-03 23:42:07 +01:00
parent d8641d4db6
commit ae6da1a5ae
13 changed files with 70 additions and 34 deletions

View file

@ -1,4 +1,4 @@
use std::sync::{Arc, Mutex};
use std::{cell::RefCell, rc::Rc};
use chrono::{offset::Local, DateTime, Datelike, Days, Months, Weekday};
use common::ron_api;
@ -19,14 +19,14 @@ struct CalendarStateInternal {
#[derive(Clone)]
struct CalendarState {
internal_state: Arc<Mutex<CalendarStateInternal>>,
internal_state: Rc<RefCell<CalendarStateInternal>>,
}
impl CalendarState {
pub fn new() -> Self {
let current_date = Local::now();
Self {
internal_state: Arc::new(Mutex::new(CalendarStateInternal {
internal_state: Rc::new(RefCell::new(CalendarStateInternal {
displayed_date: current_date,
selected_date: current_date,
})),
@ -34,25 +34,25 @@ impl CalendarState {
}
pub fn displayed_date_next_month(&self) {
let mut locker = self.internal_state.lock().unwrap();
locker.displayed_date = locker.displayed_date + Months::new(1);
let mut state_borrowed = self.internal_state.borrow_mut();
state_borrowed.displayed_date = state_borrowed.displayed_date + Months::new(1);
}
pub fn displayed_date_previous_month(&self) {
let mut locker = self.internal_state.lock().unwrap();
locker.displayed_date = locker.displayed_date - Months::new(1);
let mut state_borrowed = self.internal_state.borrow_mut();
state_borrowed.displayed_date = state_borrowed.displayed_date - Months::new(1);
}
pub fn get_displayed_date(&self) -> DateTime<Local> {
self.internal_state.lock().unwrap().displayed_date
self.internal_state.borrow().displayed_date
}
pub fn get_selected_date(&self) -> DateTime<Local> {
self.internal_state.lock().unwrap().selected_date
self.internal_state.borrow().selected_date
}
pub fn set_selected_date(&self, date: DateTime<Local>) {
self.internal_state.lock().unwrap().selected_date = date;
self.internal_state.borrow_mut().selected_date = date;
}
}
@ -173,7 +173,8 @@ fn display_month(calendar: &Element, state: CalendarState) {
.unwrap();
for recipe in scheduled_recipes.recipes {
log!(recipe.1);
// log!(recipe.1);
// TODO
}
});
}

View file

@ -24,9 +24,12 @@ pub fn setup_page(recipe_id: i64) -> Result<(), JsValue> {
let add_to_planner: Element = selector("#recipe-view .add-to-planner");
EventListener::new(&add_to_planner, "click", move |_event| {
spawn_local(async move {
modal_dialog::show_and_initialize("#hidden-templates .calendar", async |element| {
calendar::setup(element);
})
modal_dialog::show_and_initialize(
"#hidden-templates .date-and-servings",
async |element| {
calendar::setup(element.selector(".calendar"));
},
)
.await;
});
})