#![allow(non_snake_case)] use wasm_bindgen::prelude::Closure; use wasm_bindgen::JsCast; use yew::prelude::*; use crate::data::plate::PlateType; use crate::data::plate_instances::PlateInstance; // use super::destination_plate::DestinationPlate; // use super::source_plate::SourcePlate; use super::plate::Plate; #[derive(Properties, PartialEq)] pub struct PlateContainerProps { pub source_dims: Option, pub destination_dims: Option, } #[function_component] pub fn PlateContainer(props: &PlateContainerProps) -> Html { let cell_height = { let height = web_sys::window() .unwrap() .inner_height() .unwrap() .as_f64() .unwrap(); let width = web_sys::window() .unwrap() .inner_width() .unwrap() .as_f64() .unwrap(); if let (Some(src_d), Some(dest_d)) = (&props.source_dims, &props.destination_dims) { let h = (0.78 * height) / (src_d.plate.size().0 + dest_d.plate.size().0) as f64; let w = (0.90 * width) / (src_d.plate.size().1 + dest_d.plate.size().1) as f64; f64::min(w, h) } else { 1f64 } }; let resize_trigger = use_force_update(); let onresize = Closure::::new(move |_: Event| { resize_trigger.force_update(); }); web_sys::window() .unwrap() .set_onresize(Some(onresize.as_ref().unchecked_ref())); onresize.forget(); // Magic! html! {
if let Some(spi) = props.source_dims.clone() { if let Some(dpi) = props.destination_dims.clone() {

{spi.name.clone()}

{"Source"}

{dpi.name.clone()}

{"Destination"}

} else {

{"No Destination Plate Selected"}

} } else {

{"No Source Plate Selected"}

}
} }