#![allow(non_snake_case)] use wasm_bindgen::JsCast; use wasm_bindgen::prelude::Closure; use yew::prelude::*; use crate::data::plate_instances::PlateInstance; use super::destination_plate::DestinationPlate; use super::source_plate::SourcePlate; #[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()}

{dpi.name.clone()}

} else {

{"No Destination Plate Selected"}

} } else {

{"No Source Plate Selected"}

}
} }