parent
e01468b63a
commit
0ec29f6783
|
@ -0,0 +1,74 @@
|
||||||
|
use uuid::Uuid;
|
||||||
|
use wasm_bindgen::JsCast;
|
||||||
|
use web_sys::{EventTarget, HtmlElement, HtmlInputElement, HtmlOptionElement, HtmlSelectElement};
|
||||||
|
use yew::prelude::*;
|
||||||
|
use yewdux::prelude::*;
|
||||||
|
|
||||||
|
use crate::components::states::MainState;
|
||||||
|
use plate_tool_lib::plate::PlateFormat;
|
||||||
|
|
||||||
|
type NoParamsCallback = Box<dyn Fn(())>;
|
||||||
|
|
||||||
|
pub fn open_plate_info_callback(
|
||||||
|
plate_menu_id: UseStateHandle<Option<Uuid>>,
|
||||||
|
) -> Callback<MouseEvent> {
|
||||||
|
Callback::from(move |e: MouseEvent| {
|
||||||
|
let target: Option<EventTarget> = e.target();
|
||||||
|
let li = target.and_then(|t| t.dyn_into::<HtmlElement>().ok());
|
||||||
|
if let Some(li) = li {
|
||||||
|
if let Ok(id) = li.id().as_str().parse::<u128>() {
|
||||||
|
plate_menu_id.set(Some(Uuid::from_u128(id)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn plate_info_close_callback(plate_menu_id: UseStateHandle<Option<Uuid>>) -> NoParamsCallback {
|
||||||
|
Box::new(move |_| {
|
||||||
|
plate_menu_id.set(None);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn plate_info_delete_callback(
|
||||||
|
main_dispatch: Dispatch<MainState>,
|
||||||
|
plate_menu_id: UseStateHandle<Option<Uuid>>,
|
||||||
|
) -> NoParamsCallback {
|
||||||
|
Box::new(move |_| {
|
||||||
|
if let Some(id) = *plate_menu_id {
|
||||||
|
main_dispatch.reduce_mut(|state| {
|
||||||
|
state.del_plate(id);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn rename_onchange(id: Uuid, main_dispatch: Dispatch<MainState>) -> Callback<Event> {
|
||||||
|
Callback::from(move |e: Event| {
|
||||||
|
log::debug!("Changed name");
|
||||||
|
let input = e
|
||||||
|
.target()
|
||||||
|
.expect("Event must have target")
|
||||||
|
.dyn_into::<HtmlInputElement>()
|
||||||
|
.unwrap();
|
||||||
|
main_dispatch.reduce_mut(|state| state.rename_plate(id, &input.value()))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn format_onchange(id: Uuid, main_dispatch: Dispatch<MainState>) -> Callback<Event> {
|
||||||
|
Callback::from(move |e: Event| {
|
||||||
|
log::debug!("Changing plate format");
|
||||||
|
let new_format: Option<PlateFormat> = e
|
||||||
|
.target()
|
||||||
|
.expect("Event must have target")
|
||||||
|
.dyn_into::<HtmlSelectElement>()
|
||||||
|
.unwrap()
|
||||||
|
.selected_options()
|
||||||
|
.get_with_index(0)
|
||||||
|
.map(|el| el.dyn_into::<HtmlOptionElement>().unwrap())
|
||||||
|
.map(|opt_el| opt_el.value())
|
||||||
|
.and_then(|value| PlateFormat::try_from(value.as_str()).ok());
|
||||||
|
if let Some(format) = new_format {
|
||||||
|
main_dispatch.reduce_mut(|state| state.change_format(id, &format));
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
mod select_callbacks;
|
||||||
|
mod info_dialog_callbacks;
|
||||||
|
|
||||||
|
pub use select_callbacks::*;
|
||||||
|
|
||||||
|
pub use info_dialog_callbacks::*;
|
|
@ -1,81 +1,12 @@
|
||||||
use std::rc::Rc;
|
use std::rc::Rc;
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
use wasm_bindgen::JsCast;
|
use wasm_bindgen::JsCast;
|
||||||
use web_sys::{EventTarget, HtmlElement, HtmlInputElement, HtmlSelectElement, HtmlOptionElement};
|
use web_sys::{EventTarget, HtmlElement};
|
||||||
use yew::prelude::*;
|
use yew::prelude::*;
|
||||||
use yewdux::prelude::*;
|
use yewdux::prelude::*;
|
||||||
|
|
||||||
use crate::components::states::{CurrentTransfer, MainState};
|
use crate::components::states::{CurrentTransfer, MainState};
|
||||||
use plate_tool_lib::{transfer_region::Region, plate::PlateFormat};
|
use plate_tool_lib::transfer_region::Region;
|
||||||
|
|
||||||
type NoParamsCallback = Box<dyn Fn(())>;
|
|
||||||
|
|
||||||
pub fn open_plate_info_callback(
|
|
||||||
plate_menu_id: UseStateHandle<Option<Uuid>>,
|
|
||||||
) -> Callback<MouseEvent> {
|
|
||||||
Callback::from(move |e: MouseEvent| {
|
|
||||||
let target: Option<EventTarget> = e.target();
|
|
||||||
let li = target.and_then(|t| t.dyn_into::<HtmlElement>().ok());
|
|
||||||
if let Some(li) = li {
|
|
||||||
if let Ok(id) = li.id().as_str().parse::<u128>() {
|
|
||||||
plate_menu_id.set(Some(Uuid::from_u128(id)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn plate_info_close_callback(
|
|
||||||
plate_menu_id: UseStateHandle<Option<Uuid>>,
|
|
||||||
) -> NoParamsCallback {
|
|
||||||
Box::new(move |_| {
|
|
||||||
plate_menu_id.set(None);
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn plate_info_delete_callback(
|
|
||||||
main_dispatch: Dispatch<MainState>,
|
|
||||||
plate_menu_id: UseStateHandle<Option<Uuid>>,
|
|
||||||
) -> NoParamsCallback {
|
|
||||||
Box::new(move |_| {
|
|
||||||
if let Some(id) = *plate_menu_id {
|
|
||||||
main_dispatch.reduce_mut(|state| {
|
|
||||||
state.del_plate(id);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn rename_onchange(id: Uuid, main_dispatch: Dispatch<MainState>) -> Callback<Event> {
|
|
||||||
Callback::from(move |e: Event| {
|
|
||||||
log::debug!("Changed name");
|
|
||||||
let input = e
|
|
||||||
.target()
|
|
||||||
.expect("Event must have target")
|
|
||||||
.dyn_into::<HtmlInputElement>()
|
|
||||||
.unwrap();
|
|
||||||
main_dispatch.reduce_mut(|state| state.rename_plate(id, &input.value()))
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn format_onchange(id: Uuid, main_dispatch: Dispatch<MainState>) -> Callback<Event> {
|
|
||||||
Callback::from(move |e: Event| {
|
|
||||||
log::debug!("Changing plate format");
|
|
||||||
let new_format: Option<PlateFormat> = e.target()
|
|
||||||
.expect("Event must have target")
|
|
||||||
.dyn_into::<HtmlSelectElement>()
|
|
||||||
.unwrap()
|
|
||||||
.selected_options()
|
|
||||||
.get_with_index(0)
|
|
||||||
.map(|el| {
|
|
||||||
el.dyn_into::<HtmlOptionElement>().unwrap()
|
|
||||||
})
|
|
||||||
.map(|opt_el| opt_el.value())
|
|
||||||
.and_then(|value| PlateFormat::try_from(value.as_str()).ok());
|
|
||||||
if let Some(format) = new_format {
|
|
||||||
main_dispatch.reduce_mut(|state| state.change_format(id, &format));
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn source_plate_select_callback(
|
pub fn source_plate_select_callback(
|
||||||
main_dispatch: Dispatch<MainState>,
|
main_dispatch: Dispatch<MainState>,
|
||||||
|
@ -121,7 +52,11 @@ pub fn destination_plate_select_callback(
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn transfer_select_callback(main_state: Rc<MainState>, main_dispatch: Dispatch<MainState>, ct_dispatch: Dispatch<CurrentTransfer>) -> Callback<MouseEvent> {
|
pub fn transfer_select_callback(
|
||||||
|
main_state: Rc<MainState>,
|
||||||
|
main_dispatch: Dispatch<MainState>,
|
||||||
|
ct_dispatch: Dispatch<CurrentTransfer>,
|
||||||
|
) -> Callback<MouseEvent> {
|
||||||
Callback::from(move |e: MouseEvent| {
|
Callback::from(move |e: MouseEvent| {
|
||||||
let target: Option<EventTarget> = e.target();
|
let target: Option<EventTarget> = e.target();
|
||||||
let li = target.and_then(|t| t.dyn_into::<HtmlElement>().ok());
|
let li = target.and_then(|t| t.dyn_into::<HtmlElement>().ok());
|
Loading…
Reference in New Issue