web: auto button
This commit is contained in:
		
							parent
							
								
									1aa4c1b7bb
								
							
						
					
					
						commit
						c2a64d679a
					
				| 
						 | 
					@ -24,7 +24,7 @@ const W384_ROW_MAX: u8 = 16;
 | 
				
			||||||
const W1536_COL_MAX: u8 = 48;
 | 
					const W1536_COL_MAX: u8 = 48;
 | 
				
			||||||
const W1536_ROW_MAX: u8 = 32;
 | 
					const W1536_ROW_MAX: u8 = 32;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pub fn auto(records: &Vec<TransferRecord>) -> AutoOutput {
 | 
					pub fn auto(records: &[TransferRecord]) -> AutoOutput {
 | 
				
			||||||
    let unique_plates = find_unique_plates(records);
 | 
					    let unique_plates = find_unique_plates(records);
 | 
				
			||||||
    let transfers = get_transfer_for_all_pairs(records, &unique_plates);
 | 
					    let transfers = get_transfer_for_all_pairs(records, &unique_plates);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,22 +1,19 @@
 | 
				
			||||||
use std::collections::HashSet;
 | 
					use std::collections::HashSet;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use lazy_static::lazy_static;
 | 
					 | 
				
			||||||
use regex::Regex;
 | 
					 | 
				
			||||||
use wasm_bindgen::{prelude::*, JsCast};
 | 
					use wasm_bindgen::{prelude::*, JsCast};
 | 
				
			||||||
use web_sys::{
 | 
					use web_sys::{
 | 
				
			||||||
    FileReader, HtmlButtonElement, HtmlDialogElement, HtmlFormElement, HtmlInputElement,
 | 
					    FileReader, HtmlButtonElement, HtmlDialogElement, HtmlElement, HtmlFormElement,
 | 
				
			||||||
    HtmlOptionElement, HtmlSelectElement,
 | 
					    HtmlInputElement, HtmlOptionElement, HtmlSelectElement,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
use yew::prelude::*;
 | 
					use yew::prelude::*;
 | 
				
			||||||
use yewdux::prelude::*;
 | 
					use yewdux::prelude::*;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use crate::components::states::MainState;
 | 
					use crate::components::states::MainState;
 | 
				
			||||||
use plate_tool_lib::util::letters_to_num;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
use plate_tool_lib::transfer::Transfer;
 | 
					use plate_tool_lib::transfer::Transfer;
 | 
				
			||||||
use plate_tool_lib::transfer_region::{Region, TransferRegion};
 | 
					use plate_tool_lib::transfer_region::{Region, TransferRegion};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use plate_tool_lib::csv::{TransferRecord, string_well_to_pt};
 | 
					use plate_tool_lib::csv::{auto, string_well_to_pt, TransferRecord};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use super::main_window_callbacks::create_close_button;
 | 
					use super::main_window_callbacks::create_close_button;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -115,6 +112,17 @@ pub fn import_transfer_csv_onload_callback(
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            let window = web_sys::window().unwrap();
 | 
					            let window = web_sys::window().unwrap();
 | 
				
			||||||
            let document = window.document().unwrap();
 | 
					            let document = window.document().unwrap();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            let auto_button = document
 | 
				
			||||||
 | 
					                .create_element("button")
 | 
				
			||||||
 | 
					                .unwrap()
 | 
				
			||||||
 | 
					                .dyn_into::<HtmlElement>()
 | 
				
			||||||
 | 
					                .unwrap();
 | 
				
			||||||
 | 
					            auto_button.set_inner_text("Auto");
 | 
				
			||||||
 | 
					            let auto_button_callback = auto_callback(main_dispatch.clone(), &records);
 | 
				
			||||||
 | 
					            auto_button.set_onclick(Some(auto_button_callback.as_ref().unchecked_ref()));
 | 
				
			||||||
 | 
					            auto_button_callback.forget();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            let form = document
 | 
					            let form = document
 | 
				
			||||||
                .create_element("form")
 | 
					                .create_element("form")
 | 
				
			||||||
                .unwrap()
 | 
					                .unwrap()
 | 
				
			||||||
| 
						 | 
					@ -211,6 +219,7 @@ pub fn import_transfer_csv_onload_callback(
 | 
				
			||||||
            form.append_child(&to_dest).unwrap();
 | 
					            form.append_child(&to_dest).unwrap();
 | 
				
			||||||
            modal.append_child(&submit).unwrap();
 | 
					            modal.append_child(&submit).unwrap();
 | 
				
			||||||
            modal.append_child(&form).unwrap();
 | 
					            modal.append_child(&form).unwrap();
 | 
				
			||||||
 | 
					            modal.append_child(&auto_button).unwrap();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -236,7 +245,7 @@ pub fn import_transfer_csv_submit_callback(
 | 
				
			||||||
            .map(|record| {
 | 
					            .map(|record| {
 | 
				
			||||||
                (
 | 
					                (
 | 
				
			||||||
                    string_well_to_pt(&record.source_well).unwrap(),
 | 
					                    string_well_to_pt(&record.source_well).unwrap(),
 | 
				
			||||||
                    string_well_to_pt(&record.destination_well).unwrap()
 | 
					                    string_well_to_pt(&record.destination_well).unwrap(),
 | 
				
			||||||
                )
 | 
					                )
 | 
				
			||||||
            })
 | 
					            })
 | 
				
			||||||
            .collect();
 | 
					            .collect();
 | 
				
			||||||
| 
						 | 
					@ -277,3 +286,20 @@ pub fn import_transfer_csv_submit_callback(
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fn auto_callback(
 | 
				
			||||||
 | 
					    main_dispatch: Dispatch<MainState>,
 | 
				
			||||||
 | 
					    records: &[TransferRecord],
 | 
				
			||||||
 | 
					) -> Closure<dyn FnMut(Event)> {
 | 
				
			||||||
 | 
					    let records = Vec::from(records);
 | 
				
			||||||
 | 
					    Closure::<dyn FnMut(_)>::new(move |_| {
 | 
				
			||||||
 | 
					        let res = auto(&records);
 | 
				
			||||||
 | 
					        main_dispatch.reduce_mut(|state| {
 | 
				
			||||||
 | 
					            state.source_plates.extend(res.sources.into_iter());
 | 
				
			||||||
 | 
					            state
 | 
				
			||||||
 | 
					                .destination_plates
 | 
				
			||||||
 | 
					                .extend(res.destinations.into_iter());
 | 
				
			||||||
 | 
					            state.transfers.extend(res.transfers.into_iter());
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue