2023-05-21 16:45:12 +00:00
|
|
|
#![allow(non_snake_case)]
|
2023-05-22 15:26:08 +00:00
|
|
|
use yew::prelude::*;
|
2023-05-24 15:42:54 +00:00
|
|
|
use yewdux::prelude::*;
|
|
|
|
|
|
|
|
use super::states::{MainState, NewTransferState};
|
2023-05-21 16:45:12 +00:00
|
|
|
use super::plates::plate_container::PlateContainer;
|
|
|
|
use super::tree::Tree;
|
|
|
|
use super::transfer_menu::TransferMenu;
|
2023-05-22 22:31:02 +00:00
|
|
|
use super::new_plate_dialog::NewPlateDialog;
|
2023-05-21 16:45:12 +00:00
|
|
|
|
2023-05-24 15:42:54 +00:00
|
|
|
use crate::data::plate_instances::PlateInstance;
|
|
|
|
|
2023-05-22 15:26:08 +00:00
|
|
|
#[function_component]
|
|
|
|
pub fn MainWindow() -> Html {
|
2023-05-24 15:42:54 +00:00
|
|
|
let (main_state, main_dispatch) = use_store::<MainState>();
|
|
|
|
let (selection_state, selection_dispatch) = use_store::<NewTransferState>();
|
|
|
|
|
2023-05-24 20:10:33 +00:00
|
|
|
let source_plate_instance: Option<PlateInstance> = main_state.source_plates.iter()
|
|
|
|
.find(|spi| {spi.get_uuid() == selection_state.source_id})
|
|
|
|
.cloned();
|
|
|
|
let destination_plate_instance: Option<PlateInstance> = main_state.destination_plates.iter()
|
|
|
|
.find(|dpi| {dpi.get_uuid() == selection_state.destination_id})
|
|
|
|
.cloned();
|
2023-05-24 15:42:54 +00:00
|
|
|
|
2023-05-22 22:31:02 +00:00
|
|
|
let new_plate_dialog_is_open = use_state_eq(|| false);
|
|
|
|
let new_plate_dialog_callback = {
|
|
|
|
let new_plate_dialog_is_open = new_plate_dialog_is_open.clone();
|
|
|
|
Callback::from(move |_| {
|
|
|
|
new_plate_dialog_is_open.set(false);
|
|
|
|
})
|
|
|
|
};
|
|
|
|
let open_new_plate_dialog_callback = {
|
|
|
|
let new_plate_dialog_is_open = new_plate_dialog_is_open.clone();
|
|
|
|
Callback::from(move |_| {
|
|
|
|
new_plate_dialog_is_open.set(true);
|
|
|
|
})
|
|
|
|
};
|
|
|
|
|
2023-05-22 15:26:08 +00:00
|
|
|
html!{
|
|
|
|
<div class="main_container">
|
2023-05-22 22:31:02 +00:00
|
|
|
<Tree open_new_plate_callback={open_new_plate_dialog_callback}/>
|
2023-05-22 15:26:08 +00:00
|
|
|
<TransferMenu />
|
2023-05-24 20:10:33 +00:00
|
|
|
<PlateContainer source_dims={source_plate_instance}
|
|
|
|
destination_dims={destination_plate_instance}/>
|
2023-05-22 22:31:02 +00:00
|
|
|
if {*new_plate_dialog_is_open} {
|
|
|
|
<NewPlateDialog close_callback={new_plate_dialog_callback}/>
|
|
|
|
}
|
2023-05-22 15:26:08 +00:00
|
|
|
</div>
|
|
|
|
}
|
2023-05-21 16:45:12 +00:00
|
|
|
}
|