Plate switching!
This commit is contained in:
parent
5be70675ee
commit
1b0be78e85
|
@ -1,12 +1,33 @@
|
|||
#![allow(non_snake_case)]
|
||||
use yew::prelude::*;
|
||||
use yewdux::prelude::*;
|
||||
|
||||
use super::states::{MainState, NewTransferState};
|
||||
use super::plates::plate_container::PlateContainer;
|
||||
use super::tree::Tree;
|
||||
use super::transfer_menu::TransferMenu;
|
||||
use super::new_plate_dialog::NewPlateDialog;
|
||||
|
||||
use crate::data::plate_instances::PlateInstance;
|
||||
|
||||
#[function_component]
|
||||
pub fn MainWindow() -> Html {
|
||||
let (main_state, main_dispatch) = use_store::<MainState>();
|
||||
let (selection_state, selection_dispatch) = use_store::<NewTransferState>();
|
||||
|
||||
let source_plate_instance = main_state.source_plates.iter()
|
||||
.find(|spi| {spi.get_uuid() == selection_state.source_id});
|
||||
let source_dims = match source_plate_instance {
|
||||
Some(spi) => Some(spi.plate.size()),
|
||||
None => None,
|
||||
};
|
||||
let destination_plate_instance = main_state.destination_plates.iter()
|
||||
.find(|dpi| {dpi.get_uuid() == selection_state.destination_id});
|
||||
let destination_dims = match destination_plate_instance {
|
||||
Some(dpi) => Some(dpi.plate.size()),
|
||||
None => None,
|
||||
};
|
||||
|
||||
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();
|
||||
|
@ -25,7 +46,7 @@ pub fn MainWindow() -> Html {
|
|||
<div class="main_container">
|
||||
<Tree open_new_plate_callback={open_new_plate_dialog_callback}/>
|
||||
<TransferMenu />
|
||||
<PlateContainer source_dims={(24,16)} destination_dims={(24,16)}/>
|
||||
<PlateContainer source_dims={source_dims} destination_dims={destination_dims}/>
|
||||
if {*new_plate_dialog_is_open} {
|
||||
<NewPlateDialog close_callback={new_plate_dialog_callback}/>
|
||||
}
|
||||
|
|
|
@ -1,25 +1,29 @@
|
|||
#![allow(non_snake_case)]
|
||||
use yew::prelude::*;
|
||||
use yewdux::prelude::*;
|
||||
use super::super::states::MainState;
|
||||
|
||||
use super::source_plate::SourcePlate;
|
||||
use super::destination_plate::DestinationPlate;
|
||||
|
||||
#[derive(Properties, PartialEq)]
|
||||
pub struct PlateContainerProps {
|
||||
pub source_dims: (u8,u8),
|
||||
pub destination_dims: (u8,u8)
|
||||
pub source_dims: Option<(u8,u8)>,
|
||||
pub destination_dims: Option<(u8,u8)>,
|
||||
}
|
||||
|
||||
#[function_component]
|
||||
pub fn PlateContainer(props: &PlateContainerProps) -> Html {
|
||||
let (state, dispatch) = use_store::<MainState>();
|
||||
|
||||
html! {
|
||||
<div class="plate_container">
|
||||
<SourcePlate width={props.source_dims.0} height={props.source_dims.1} />
|
||||
<DestinationPlate width={props.destination_dims.0} height={props.destination_dims.1} />
|
||||
if let Some((w,h)) = props.source_dims {
|
||||
<SourcePlate width={w} height={h} />
|
||||
} else {
|
||||
<h2>{"No Source Plate Selected"}</h2>
|
||||
}
|
||||
if let Some((w,h)) = props.destination_dims {
|
||||
<DestinationPlate width={w} height={h} />
|
||||
} else {
|
||||
<h2>{"No Destination Plate Selected"}</h2>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,6 +9,7 @@ use yewdux::prelude::*;
|
|||
use crate::data::{plate_instances::PlateInstance, transfer::Transfer};
|
||||
use crate::data::plate::*;
|
||||
use crate::components::states::{MainState, NewTransferState};
|
||||
use crate::components::transfer_menu::RegionDisplay;
|
||||
|
||||
#[derive(PartialEq, Properties)]
|
||||
pub struct TreeProps {
|
||||
|
@ -57,7 +58,10 @@ pub fn Tree(props: &TreeProps) -> Html {
|
|||
let li = target.and_then(|t| t.dyn_into::<HtmlElement>().ok());
|
||||
if let Some(li) = li {
|
||||
if let Ok(id) = u128::from_str_radix(li.id().as_str(), 10) {
|
||||
dispatch.reduce_mut(|state| state.source_id = Uuid::from_u128(id))
|
||||
dispatch.reduce_mut(|state| {
|
||||
state.source_region = RegionDisplay::default();
|
||||
state.source_id = Uuid::from_u128(id);
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
|
@ -69,7 +73,10 @@ pub fn Tree(props: &TreeProps) -> Html {
|
|||
let li = target.and_then(|t| t.dyn_into::<HtmlElement>().ok());
|
||||
if let Some(li) = li {
|
||||
if let Ok(id) = u128::from_str_radix(li.id().as_str(), 10) {
|
||||
dispatch.reduce_mut(|state| state.destination_id = Uuid::from_u128(id))
|
||||
dispatch.reduce_mut(|state| {
|
||||
state.destination_region = RegionDisplay::default();
|
||||
state.destination_id = Uuid::from_u128(id);
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
|
|
|
@ -54,14 +54,14 @@ impl std::fmt::Display for PlateFormat {
|
|||
impl PlateFormat {
|
||||
pub fn size(&self) -> (u8, u8) {
|
||||
match self {
|
||||
PlateFormat::W6 => (2, 3),
|
||||
PlateFormat::W12 => (3, 4),
|
||||
PlateFormat::W24 => (4, 6),
|
||||
PlateFormat::W48 => (6, 8),
|
||||
PlateFormat::W96 => (8, 12),
|
||||
PlateFormat::W384 => (16, 24),
|
||||
PlateFormat::W1536 => (32, 48),
|
||||
PlateFormat::W3456 => (48, 72),
|
||||
PlateFormat::W6 => (3, 2),
|
||||
PlateFormat::W12 => (4, 3),
|
||||
PlateFormat::W24 => (6, 4),
|
||||
PlateFormat::W48 => (8, 6),
|
||||
PlateFormat::W96 => (12, 8),
|
||||
PlateFormat::W384 => (24, 16),
|
||||
PlateFormat::W1536 => (48, 32),
|
||||
PlateFormat::W3456 => (72, 48),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue