From 7d35959ac2bbb5f1585a11376bf0d6fbc0372ed3 Mon Sep 17 00:00:00 2001 From: Emilia Date: Sun, 11 Feb 2024 19:46:43 -0500 Subject: [PATCH] lib migration pt 2 --- lib/src/csv.rs | 25 ++-------------- lib/src/plate_instances.rs | 7 +++++ .../callbacks/import_csv_callbacks.rs | 18 +++++------- .../callbacks/main_window_callbacks.rs | 6 +--- .../callbacks/new_plate_dialog_callbacks.rs | 4 +-- .../callbacks/transfer_menu_callbacks.rs | 2 +- src/components/callbacks/tree_callbacks.rs | 2 +- src/components/main_window.rs | 6 +--- src/components/new_plate_dialog.rs | 9 +----- src/components/plates/plate.rs | 8 ++--- src/components/plates/plate_callbacks.rs | 2 +- src/components/plates/plate_container.rs | 4 +-- src/components/plates/plate_data.rs | 4 +-- src/components/plates/util.rs | 4 --- src/components/states.rs | 6 ++-- src/components/transfer_menu.rs | 5 +++- src/lib.rs | 29 +++++++++++++++++-- 17 files changed, 67 insertions(+), 74 deletions(-) diff --git a/lib/src/csv.rs b/lib/src/csv.rs index 8a4ee25..02feb01 100644 --- a/lib/src/csv.rs +++ b/lib/src/csv.rs @@ -22,30 +22,9 @@ pub struct TransferRecord { } /* -pub fn state_to_csv(state: &MainState) -> Result> { - let mut records: Vec = Vec::new(); - for transfer in &state.transfers { - let src_barcode = state - .source_plates - .iter() - .find(|spi| spi.get_uuid() == transfer.source_id) - .ok_or("Found unpurged transfer")?; - let dest_barcode = state - .destination_plates - .iter() - .find(|dpi| dpi.get_uuid() == transfer.dest_id) - .ok_or("Found unpurged transfer")?; - records.append(&mut transfer_to_records( - transfer, - &src_barcode.name, - &dest_barcode.name, - )) - } - records_to_csv(records) -} */ -fn transfer_to_records( +pub fn transfer_to_records( tr: &Transfer, src_barcode: &str, dest_barcode: &str, @@ -73,7 +52,7 @@ fn transfer_to_records( records } -fn records_to_csv(trs: Vec) -> Result> { +pub fn records_to_csv(trs: Vec) -> Result> { let mut wtr = csv::WriterBuilder::new().from_writer(vec![]); for record in trs { wtr.serialize(record)? diff --git a/lib/src/plate_instances.rs b/lib/src/plate_instances.rs index f444c18..c8a1e6d 100644 --- a/lib/src/plate_instances.rs +++ b/lib/src/plate_instances.rs @@ -41,3 +41,10 @@ impl From for PlateInstance { } } } + +impl From<&PlateInstance> for String { + fn from(value: &PlateInstance) -> Self { + // Could have other formatting here + format!("{}, {}", value.name, value.plate.plate_format) + } +} diff --git a/src/components/callbacks/import_csv_callbacks.rs b/src/components/callbacks/import_csv_callbacks.rs index f498d9c..2abccd9 100644 --- a/src/components/callbacks/import_csv_callbacks.rs +++ b/src/components/callbacks/import_csv_callbacks.rs @@ -1,24 +1,22 @@ use std::collections::HashSet; - - use lazy_static::lazy_static; use regex::Regex; use wasm_bindgen::{prelude::*, JsCast}; use web_sys::{ - FileReader, HtmlButtonElement, HtmlDialogElement, - HtmlFormElement, HtmlInputElement, HtmlOptionElement, HtmlSelectElement, + FileReader, HtmlButtonElement, HtmlDialogElement, HtmlFormElement, HtmlInputElement, + HtmlOptionElement, HtmlSelectElement, }; use yew::prelude::*; use yewdux::prelude::*; -use crate::components::states::{MainState}; -use crate::components::transfer_menu::letters_to_num; +use crate::components::states::MainState; +use plate_tool_lib::util::letters_to_num; -use crate::data::transfer::Transfer; -use crate::data::transfer_region::{Region, TransferRegion}; +use plate_tool_lib::transfer::Transfer; +use plate_tool_lib::transfer_region::{Region, TransferRegion}; -use crate::data::csv::{TransferRecord}; +use plate_tool_lib::csv::TransferRecord; use super::main_window_callbacks::create_close_button; @@ -111,7 +109,7 @@ pub fn import_transfer_csv_onload_callback( log::info!("{}", modified); let mut rdr = csv::Reader::from_reader(value.as_bytes()); let mut records = Vec::new(); - for record in rdr.deserialize::() { + for record in rdr.deserialize::() { match record { Ok(r) => { //log::debug!("{:?}", r); diff --git a/src/components/callbacks/main_window_callbacks.rs b/src/components/callbacks/main_window_callbacks.rs index 5393240..73b262c 100644 --- a/src/components/callbacks/main_window_callbacks.rs +++ b/src/components/callbacks/main_window_callbacks.rs @@ -14,11 +14,7 @@ use yewdux::prelude::*; use crate::components::states::{CurrentTransfer, MainState}; - - - - -use crate::data::csv::{state_to_csv}; +use crate::state_to_csv; type NoParamsCallback = Box; diff --git a/src/components/callbacks/new_plate_dialog_callbacks.rs b/src/components/callbacks/new_plate_dialog_callbacks.rs index 71cb8ec..5bb7b09 100644 --- a/src/components/callbacks/new_plate_dialog_callbacks.rs +++ b/src/components/callbacks/new_plate_dialog_callbacks.rs @@ -5,8 +5,8 @@ use wasm_bindgen::JsCast; use web_sys::{EventTarget, FormData, HtmlFormElement}; use crate::components::states::MainState; -use crate::data::plate::*; -use crate::data::plate_instances::PlateInstance; +use plate_tool_lib::plate::*; +use plate_tool_lib::plate_instances::PlateInstance; pub fn new_plate_callback( dispatch: Dispatch, diff --git a/src/components/callbacks/transfer_menu_callbacks.rs b/src/components/callbacks/transfer_menu_callbacks.rs index 2803ac1..ae8d005 100644 --- a/src/components/callbacks/transfer_menu_callbacks.rs +++ b/src/components/callbacks/transfer_menu_callbacks.rs @@ -6,7 +6,7 @@ use yew::prelude::*; use yewdux::prelude::*; use crate::components::transfer_menu::RegionDisplay; -use crate::data::{transfer::Transfer, transfer_region::Region}; +use plate_tool_lib::{transfer::Transfer, transfer_region::Region}; use crate::components::states::{CurrentTransfer, MainState}; diff --git a/src/components/callbacks/tree_callbacks.rs b/src/components/callbacks/tree_callbacks.rs index e7c00df..457af4b 100644 --- a/src/components/callbacks/tree_callbacks.rs +++ b/src/components/callbacks/tree_callbacks.rs @@ -6,7 +6,7 @@ use yew::prelude::*; use yewdux::prelude::*; use crate::components::states::{CurrentTransfer, MainState}; -use crate::data::transfer_region::Region; +use plate_tool_lib::transfer_region::Region; type NoParamsCallback = Box; diff --git a/src/components/main_window.rs b/src/components/main_window.rs index 7a9f407..1b6175f 100644 --- a/src/components/main_window.rs +++ b/src/components/main_window.rs @@ -1,8 +1,4 @@ #![allow(non_snake_case)] - - - - use yew::prelude::*; use yewdux::prelude::*; @@ -12,7 +8,7 @@ use crate::components::states::{CurrentTransfer, MainState}; use crate::components::transfer_menu::TransferMenu; use crate::components::tree::Tree; -use crate::data::plate_instances::PlateInstance; +use plate_tool_lib::plate_instances::PlateInstance; use crate::components::callbacks::main_window_callbacks; diff --git a/src/components/new_plate_dialog.rs b/src/components/new_plate_dialog.rs index 31fee6c..e6dd722 100644 --- a/src/components/new_plate_dialog.rs +++ b/src/components/new_plate_dialog.rs @@ -4,7 +4,7 @@ use yewdux::prelude::*; use web_sys::HtmlDialogElement; use crate::components::states::MainState; -use crate::data::plate_instances::PlateInstance; +use plate_tool_lib::plate_instances::PlateInstance; use crate::components::callbacks::new_plate_dialog_callbacks; @@ -69,10 +69,3 @@ pub fn NewPlateDialog(props: &NewPlateDialogProps) -> Html { } } - -impl From<&PlateInstance> for String { - fn from(value: &PlateInstance) -> Self { - // Could have other formatting here - format!("{}, {}", value.name, value.plate.plate_format) - } -} diff --git a/src/components/plates/plate.rs b/src/components/plates/plate.rs index f029d5f..137451a 100644 --- a/src/components/plates/plate.rs +++ b/src/components/plates/plate.rs @@ -5,15 +5,15 @@ use yew::prelude::*; use yewdux::prelude::*; use crate::components::states::{CurrentTransfer, MainState}; -use crate::data::plate::PlateType; -use crate::data::transfer::Transfer; -use crate::data::transfer_region::Region; +use plate_tool_lib::plate::PlateType; +use plate_tool_lib::transfer::Transfer; +use plate_tool_lib::transfer_region::Region; // Color Palette for the Source Plates, can be changed here use crate::components::plates::util::Palettes; const PALETTE: super::util::ColorPalette = Palettes::RAINBOW; -use super::super::transfer_menu::{num_to_letters}; +use plate_tool_lib::util::num_to_letters; use super::plate_data::*; use super::plate_callbacks; diff --git a/src/components/plates/plate_callbacks.rs b/src/components/plates/plate_callbacks.rs index 692403d..089fcbf 100644 --- a/src/components/plates/plate_callbacks.rs +++ b/src/components/plates/plate_callbacks.rs @@ -2,7 +2,7 @@ use yew::prelude::*; use yewdux::prelude::*; use crate::components::states::CurrentTransfer; -use crate::data::transfer_region::Region; +use plate_tool_lib::transfer_region::Region; // Color Palette for the Source Plates, can be changed here diff --git a/src/components/plates/plate_container.rs b/src/components/plates/plate_container.rs index 88a50ee..27232f9 100644 --- a/src/components/plates/plate_container.rs +++ b/src/components/plates/plate_container.rs @@ -3,8 +3,8 @@ use wasm_bindgen::prelude::Closure; use wasm_bindgen::JsCast; use yew::prelude::*; -use crate::data::plate::PlateType; -use crate::data::plate_instances::PlateInstance; +use plate_tool_lib::plate::PlateType; +use plate_tool_lib::plate_instances::PlateInstance; // use super::destination_plate::DestinationPlate; // use super::source_plate::SourcePlate; diff --git a/src/components/plates/plate_data.rs b/src/components/plates/plate_data.rs index 622eb96..fdd63e2 100644 --- a/src/components/plates/plate_data.rs +++ b/src/components/plates/plate_data.rs @@ -1,8 +1,8 @@ use yew::prelude::*; -use crate::data::plate_instances::PlateInstance; -use crate::data::plate::PlateType; +use plate_tool_lib::plate_instances::PlateInstance; +use plate_tool_lib::plate::PlateType; #[derive(PartialEq, Properties)] pub struct PlateProps { diff --git a/src/components/plates/util.rs b/src/components/plates/util.rs index 2e36724..5baf8ad 100644 --- a/src/components/plates/util.rs +++ b/src/components/plates/util.rs @@ -2,10 +2,6 @@ // https://iquilezles.org/articles/palettes/ // http://dev.thi.ng/gradients/ - - - - #[derive(Clone, Copy, PartialEq, Debug)] pub struct ColorPalette { a: [f64; 3], diff --git a/src/components/states.rs b/src/components/states.rs index 51bea91..c3fed9b 100644 --- a/src/components/states.rs +++ b/src/components/states.rs @@ -2,9 +2,9 @@ use serde::{Deserialize, Serialize}; use uuid::Uuid; use yewdux::{prelude::*, storage}; -use crate::data::plate::*; -use crate::data::plate_instances::PlateInstance; -use crate::data::transfer::Transfer; +use plate_tool_lib::plate::*; +use plate_tool_lib::plate_instances::PlateInstance; +use plate_tool_lib::transfer::Transfer; #[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize, Store)] #[store(storage = "session")] diff --git a/src/components/transfer_menu.rs b/src/components/transfer_menu.rs index 125d478..789f014 100644 --- a/src/components/transfer_menu.rs +++ b/src/components/transfer_menu.rs @@ -7,7 +7,8 @@ use yew::prelude::*; use yewdux::prelude::*; use crate::components::callbacks::transfer_menu_callbacks; -use crate::data::transfer_region::Region; +use plate_tool_lib::transfer_region::Region; +use plate_tool_lib::util::{letters_to_num, num_to_letters}; use super::states::{CurrentTransfer, MainState}; @@ -282,6 +283,8 @@ impl TryFrom<(u8, u8, u8, u8)> for RegionDisplay { mod tests { use wasm_bindgen_test::*; + use super::*; + #[test] #[wasm_bindgen_test] fn test_try_from_string_for_regiondisplay() { diff --git a/src/lib.rs b/src/lib.rs index d5b84f8..ebc70a0 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,12 +1,15 @@ #![allow(non_snake_case)] mod components; -mod data; + +use std::error::Error; use components::main_window::MainWindow; +use components::states::MainState; +use plate_tool_lib::csv::*; use yew::prelude::*; #[cfg(debug_assertions)] -use data::*; +use plate_tool_lib::*; #[function_component] pub fn App() -> Html { @@ -35,3 +38,25 @@ pub fn plate_test() { println!("{:?} -> {:?}", w, m(w)); } } + +pub fn state_to_csv(state: &MainState) -> Result> { + let mut records: Vec = Vec::new(); + for transfer in &state.transfers { + let src_barcode = state + .source_plates + .iter() + .find(|spi| spi.get_uuid() == transfer.source_id) + .ok_or("Found unpurged transfer")?; + let dest_barcode = state + .destination_plates + .iter() + .find(|dpi| dpi.get_uuid() == transfer.dest_id) + .ok_or("Found unpurged transfer")?; + records.append(&mut transfer_to_records( + transfer, + &src_barcode.name, + &dest_barcode.name, + )) + } + records_to_csv(records) +}