More robust CSV parsing
Permit lowercases, alternative column names
This commit is contained in:
parent
8a3bbc8b92
commit
0625854895
|
@ -1,4 +1,5 @@
|
||||||
use std::collections::HashSet;
|
use std::collections::HashSet;
|
||||||
|
use std::str::FromStr;
|
||||||
|
|
||||||
use js_sys::Array;
|
use js_sys::Array;
|
||||||
use lazy_static::lazy_static;
|
use lazy_static::lazy_static;
|
||||||
|
@ -107,6 +108,9 @@ pub fn import_transfer_csv_onload_callback(
|
||||||
) -> Closure<dyn FnMut(Event)> {
|
) -> Closure<dyn FnMut(Event)> {
|
||||||
Closure::<dyn FnMut(_)>::new(move |_: Event| {
|
Closure::<dyn FnMut(_)>::new(move |_: Event| {
|
||||||
if let Some(value) = &file_reader.result().ok().and_then(|v| v.as_string()) {
|
if let Some(value) = &file_reader.result().ok().and_then(|v| v.as_string()) {
|
||||||
|
let (header, data) = value.split_at(value.find("\n").unwrap());
|
||||||
|
let modified: String = header.to_lowercase() + data;
|
||||||
|
log::info!("{}", modified);
|
||||||
let mut rdr = csv::Reader::from_reader(value.as_bytes());
|
let mut rdr = csv::Reader::from_reader(value.as_bytes());
|
||||||
let mut records = Vec::new();
|
let mut records = Vec::new();
|
||||||
for record in rdr.deserialize::<crate::data::csv::TransferRecord>() {
|
for record in rdr.deserialize::<crate::data::csv::TransferRecord>() {
|
||||||
|
@ -245,7 +249,7 @@ pub fn import_transfer_csv_submit_callback(
|
||||||
let to_dest = to_dest.value();
|
let to_dest = to_dest.value();
|
||||||
|
|
||||||
lazy_static! {
|
lazy_static! {
|
||||||
static ref REGEX: Regex = Regex::new(r"([A-Z]+)(\d+)").unwrap();
|
static ref REGEX: Regex = Regex::new(r"([A-Z,a-z]+)(\d+)").unwrap();
|
||||||
}
|
}
|
||||||
let records: Vec<((u8, u8), (u8, u8))> = records
|
let records: Vec<((u8, u8), (u8, u8))> = records
|
||||||
.iter()
|
.iter()
|
||||||
|
|
|
@ -7,17 +7,17 @@ use std::error::Error;
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
#[derive(Serialize, Deserialize, Debug)]
|
||||||
pub struct TransferRecord {
|
pub struct TransferRecord {
|
||||||
#[serde(rename = "Source Plate")]
|
#[serde(rename = "Source Plate", alias = "source plate", alias = "src plate")]
|
||||||
pub source_plate: String,
|
pub source_plate: String,
|
||||||
#[serde(rename = "Source Well")]
|
#[serde(rename = "Source Well", alias = "source well", alias = "src well")]
|
||||||
pub source_well: String,
|
pub source_well: String,
|
||||||
#[serde(rename = "Dest Plate")]
|
#[serde(rename = "Dest Plate", alias = "dest plate", alias = "destination plate")]
|
||||||
pub destination_plate: String,
|
pub destination_plate: String,
|
||||||
#[serde(rename = "Destination Well")]
|
#[serde(rename = "Destination Well", alias = "destination well", alias = "dest well")]
|
||||||
pub destination_well: String,
|
pub destination_well: String,
|
||||||
#[serde(rename = "Transfer Volume")]
|
#[serde(rename = "Transfer Volume", alias = "transfer volume")]
|
||||||
pub volume: f32,
|
pub volume: f32,
|
||||||
#[serde(rename = "Concentration")]
|
#[serde(rename = "Concentration", alias = "concentration")]
|
||||||
pub concentration: Option<f32>,
|
pub concentration: Option<f32>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue