use crate::view::organizational::*; use super::*; #[derive(Clone,Debug,PartialEq)] pub struct Organizational { pub org: String, pub logo: Option, pub title: String, pub role: String, pub member: String, pub related: String, } impl VCardPropertyInputObject for Organizational { fn new() -> Self { Self { org: String::new(), logo: None, title: String::new(), role: String::new(), member: String::new(), related: String::new(), } } fn get_input_fields(&self, link: &yew::html::Scope) -> std::vec::Vec { let typ = String::from("text"); vec![ VCardPropertyInputField::Text{ label: "Organisation".to_string(), id: Some("org".to_string()), placeholder: None, oninput: link.callback(|e: InputData| Msg::UpdateOrg(e.value)), value: self.org.clone(), typ: typ.clone(), }, VCardPropertyInputField::File{ // TODO: Add Upload for logo label: "Logo".to_string(), name: "logo".to_string(), callback: link.callback(|file: Option| /* if let ChangeData::Files(files) = c { match files.item(0) { Some(file) => { let filereader = match FileReaderSync::new() { Ok(reader) => reader, Err(_) => { ConsoleService::warn("Couldn't create new filereader."); return Msg::UpdateLogo(None) }, }; let content = match filereader.read_as_data_url(&file) { Ok(content) => content, Err(_) => { ConsoleService::warn("Error: Couldn't get file as data url."); return Msg::UpdateLogo(None) }, }; Msg::UpdateLogo( Some(File { name: file.name(), content, }) ) }, None => Msg::UpdateLogo(None), } } else { Msg::UpdateLogo(None) } */ Msg::UpdateLogo(file) ), value: self.logo.clone(), }, VCardPropertyInputField::Text{ label: "Title".to_string(), id: Some("title".to_string()), placeholder: None, oninput: link.callback(|e: InputData| Msg::UpdateTitle(e.value)), value: self.title.clone(), typ: typ.clone(), }, VCardPropertyInputField::Text{ label: "Role".to_string(), id: Some("role".to_string()), placeholder: None, oninput: link.callback(|e: InputData| Msg::UpdateRole(e.value)), value: self.role.clone(), typ: typ.clone(), }, VCardPropertyInputField::Text{ label: "Member".to_string(), id: Some("member".to_string()), placeholder: None, oninput: link.callback(|e: InputData| Msg::UpdateMember(e.value)), value: self.member.clone(), typ: typ.clone(), }, VCardPropertyInputField::Text{ label: "Related".to_string(), id: Some("related".to_string()), placeholder: None, oninput: link.callback(|e: InputData| Msg::UpdateRelated(e.value)), value: self.related.clone(), typ: typ, }, ] } fn is_empty(&self) -> bool { self.org.is_empty() && self.logo.is_none() && self.title.is_empty() && self.role.is_empty() && self.member.is_empty() && self.related.is_empty() } }