From ad9ba30ed217ec9907d1faf389c321a1dcf5c13a Mon Sep 17 00:00:00 2001 From: jelemux Date: Sun, 7 Feb 2021 21:43:48 +0100 Subject: add organizational properties --- src/viewmodel/organizational.rs | 86 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 src/viewmodel/organizational.rs (limited to 'src/viewmodel/organizational.rs') diff --git a/src/viewmodel/organizational.rs b/src/viewmodel/organizational.rs new file mode 100644 index 0000000..e7a4ae7 --- /dev/null +++ b/src/viewmodel/organizational.rs @@ -0,0 +1,86 @@ +use crate::view::organizational::*; +use super::*; + +#[derive(Clone,Debug,PartialEq)] +pub struct Organizational { + pub org: String, + pub logo: String, + pub title: String, + pub role: String, + pub member: String, + pub related: String, +} + +impl VCardPropertyInputObject for Organizational { + fn new() -> Self { + Self { + org: String::new(), + logo: String::new(), + 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::Text{ // TODO: Add Upload for logo + label: "Logo".to_string(), + id: Some("logo".to_string()), + placeholder: None, + oninput: link.callback(|e: InputData| Msg::UpdateLogo(e.value)), + value: self.logo.clone(), + typ: typ.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_empty() && + self.title.is_empty() && + self.role.is_empty() && + self.member.is_empty() && + self.related.is_empty() + } +} \ No newline at end of file -- cgit v1.2.3