From 0414ddba3ada4e1904b7cd2a20fafbcf7e1644b2 Mon Sep 17 00:00:00 2001 From: Emilia Date: Wed, 24 May 2023 16:10:33 -0400 Subject: [PATCH] Give plate components their instance --- src/components/main_window.rs | 21 ++++++++------------- src/components/plates/destination_plate.rs | 10 +++++----- src/components/plates/plate_container.rs | 20 ++++++++++++++------ src/components/plates/source_plate.rs | 10 ++++++---- 4 files changed, 33 insertions(+), 28 deletions(-) diff --git a/src/components/main_window.rs b/src/components/main_window.rs index fc9d5bd..b4e2d30 100644 --- a/src/components/main_window.rs +++ b/src/components/main_window.rs @@ -15,18 +15,12 @@ pub fn MainWindow() -> Html { let (main_state, main_dispatch) = use_store::(); let (selection_state, selection_dispatch) = use_store::(); - 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 source_plate_instance: Option = main_state.source_plates.iter() + .find(|spi| {spi.get_uuid() == selection_state.source_id}) + .cloned(); + let destination_plate_instance: Option = main_state.destination_plates.iter() + .find(|dpi| {dpi.get_uuid() == selection_state.destination_id}) + .cloned(); let new_plate_dialog_is_open = use_state_eq(|| false); let new_plate_dialog_callback = { @@ -46,7 +40,8 @@ pub fn MainWindow() -> Html {
- + if {*new_plate_dialog_is_open} { } diff --git a/src/components/plates/destination_plate.rs b/src/components/plates/destination_plate.rs index 44fd58d..b1236eb 100644 --- a/src/components/plates/destination_plate.rs +++ b/src/components/plates/destination_plate.rs @@ -1,16 +1,16 @@ #![allow(non_snake_case)] use yew::prelude::*; use yewdux::prelude::*; -use std::intrinsics::discriminant_value; use std::rc::Rc; +use crate::data::plate_instances::PlateInstance; + use super::super::states::NewTransferState; use super::super::transfer_menu::RegionDisplay; #[derive(Properties, PartialEq)] pub struct DestinationPlateProps { - pub width: u8, - pub height: u8, + pub plate: PlateInstance, } #[function_component] @@ -80,8 +80,8 @@ pub fn DestinationPlate(props: &DestinationPlateProps) -> Html { let mouseleave_callback = Callback::clone(&mouseup_callback); - let rows = (1..=props.height).map(|i| { - let row = (1..=props.width).map(|j| { + let rows = (1..=props.plate.plate.size().1).map(|i| { + let row = (1..=props.plate.plate.size().0).map(|j| { html! { , - pub destination_dims: Option<(u8,u8)>, + pub source_dims: Option, + pub destination_dims: Option, } #[function_component] pub fn PlateContainer(props: &PlateContainerProps) -> Html { html! {
- if let Some((w,h)) = props.source_dims { - + if let Some(spi) = props.source_dims.clone() { +
+

{spi.name.clone()}

+ +
} else {

{"No Source Plate Selected"}

} - if let Some((w,h)) = props.destination_dims { - + if let Some(dpi) = props.destination_dims.clone() { +
+

{dpi.name.clone()}

+ +
} else {

{"No Destination Plate Selected"}

} diff --git a/src/components/plates/source_plate.rs b/src/components/plates/source_plate.rs index e7a83df..6557d80 100644 --- a/src/components/plates/source_plate.rs +++ b/src/components/plates/source_plate.rs @@ -4,13 +4,15 @@ use yew::prelude::*; use yewdux::prelude::*; use std::rc::Rc; +use crate::data::plate_instances::PlateInstance; +use crate::data::transfer_region::TransferRegion; + use super::super::states::NewTransferState; use super::super::transfer_menu::RegionDisplay; #[derive(PartialEq, Properties)] pub struct SourcePlateProps { - pub width: u8, - pub height: u8, + pub plate: PlateInstance, } #[function_component] @@ -79,8 +81,8 @@ pub fn SourcePlate(props: &SourcePlateProps) -> Html { let mouseleave_callback = Callback::clone(&mouseup_callback); - let rows = (1..=props.height).map(|i| { - let row = (1..=props.width).map(|j| { + let rows = (1..=props.plate.plate.size().1).map(|i| { + let row = (1..=props.plate.plate.size().0).map(|j| { html! {