diff options
author | jelemux <jeremias.weber@protonmail.com> | 2021-02-17 19:43:30 +0100 |
---|---|---|
committer | jelemux <jeremias.weber@protonmail.com> | 2021-02-17 19:43:30 +0100 |
commit | d0d42c5ae00560e4464479a98df90ed063a1c773 (patch) | |
tree | 09ffff29b239768422bd3a9e147b75a3b3866a13 /src/view | |
parent | cb310a66e94db4e0c4f7d0373a670156b012412a (diff) | |
download | wasm-card-d0d42c5ae00560e4464479a98df90ed063a1c773.tar.gz wasm-card-d0d42c5ae00560e4464479a98df90ed063a1c773.tar.bz2 |
change dates to other_identification and add some stuff
Diffstat (limited to 'src/view')
-rw-r--r-- | src/view/main.rs | 93 | ||||
-rw-r--r-- | src/view/property_group.rs | 8 |
2 files changed, 58 insertions, 43 deletions
diff --git a/src/view/main.rs b/src/view/main.rs index d35fb59..808b160 100644 --- a/src/view/main.rs +++ b/src/view/main.rs @@ -1,14 +1,14 @@ -use crate::view::property_group::PropertyGroupInputComponent; -use crate::view::weak_links::WeakComponentLink; use crate::model::address::*; -use crate::model::dates::*; use crate::model::name::*; use crate::model::organizational::*; +use crate::model::other_identification::*; use crate::model::telephone::*; use crate::model::utility::*; use crate::model::vcard::VCardData; use crate::model::Error; -use crate::model::VCardPropertyInputObject; +use crate::model::VCardPropertyInputGroupObject; +use crate::view::property_group::PropertyGroupInputComponent; +use crate::view::weak_links::WeakComponentLink; use boolinator::Boolinator; use chrono::prelude::*; use genpdf::Element as _; @@ -23,7 +23,8 @@ use yewtil::ptr::Mrc; type NameView = PropertyGroupInputComponent<Name, NameMsg>; type AddressView = PropertyGroupInputComponent<Address, AddressMsg>; -type DatesView = PropertyGroupInputComponent<Dates, DatesMsg>; +type OtherIdentificationView = + PropertyGroupInputComponent<OtherIdentification, OtherIdentificationMsg>; type OrganizationalView = PropertyGroupInputComponent<Organizational, OrganizationalMsg>; type TelephoneView = PropertyGroupInputComponent<Telephone, TelephoneMsg>; @@ -37,7 +38,7 @@ pub struct MainView { name_links: Vec<WeakComponentLink<NameView>>, address_links: Vec<WeakComponentLink<AddressView>>, telephone_links: Vec<WeakComponentLink<TelephoneView>>, - dates_links: Vec<WeakComponentLink<DatesView>>, + other_identifications_links: Vec<WeakComponentLink<OtherIdentificationView>>, organizational_links: Vec<WeakComponentLink<OrganizationalView>>, answer_count: usize, @@ -54,9 +55,9 @@ pub enum Msg { Generate, GeneratedName(Name), + GeneratedOtherIdentification(OtherIdentification), GeneratedAddress(Address), GeneratedTelephone(Telephone), - GeneratedDates(Dates), GeneratedOrganizational(Organizational), GenerationComplete, @@ -78,7 +79,7 @@ impl Component for MainView { name_links: vec![WeakComponentLink::default()], address_links: vec![WeakComponentLink::default()], telephone_links: vec![WeakComponentLink::default()], - dates_links: vec![WeakComponentLink::default()], + other_identifications_links: vec![WeakComponentLink::default()], organizational_links: vec![WeakComponentLink::default()], answer_count: 0, } @@ -102,7 +103,7 @@ impl Component for MainView { shouldrender = true; } Msg::AddDates => { - self.dates_links.push(WeakComponentLink::default()); + self.other_identifications_links.push(WeakComponentLink::default()); shouldrender = true; } Msg::AddOrganizational => { @@ -132,9 +133,9 @@ impl Component for MainView { telephone_link.send_message(TelephoneMsg::Generate); } - for dates_link in self.dates_links.iter() { + for dates_link in self.other_identifications_links.iter() { let dates_link = dates_link.borrow().clone().unwrap(); - dates_link.send_message(DatesMsg::Generate) + dates_link.send_message(OtherIdentificationMsg::Generate) } for organizational_links in self.organizational_links.iter() { @@ -172,37 +173,37 @@ impl Component for MainView { shouldrender = true; } - Msg::GeneratedAddress(address) => { + Msg::GeneratedOtherIdentification(other_identification) => { self.answer_count += 1; match self.vcard_data.get_mut() { - Some(vcard_data) => vcard_data.add_address(address), + Some(vcard_data) => vcard_data.add_other_identification(other_identification), None => ConsoleService::info( - "Error in GeneratedAddress: Couldn't get mutable borrow of VCardData", + "Error in GeneratedOtherIdentification: Couldn't get mutable borrow of VCardData", ), }; shouldrender = true; } - Msg::GeneratedTelephone(telephone) => { + Msg::GeneratedAddress(address) => { self.answer_count += 1; match self.vcard_data.get_mut() { - Some(vcard_data) => vcard_data.add_telephone(telephone), + Some(vcard_data) => vcard_data.add_address(address), None => ConsoleService::info( - "Error in GeneratedTelephone: Couldn't get mutable borrow of VCardData", + "Error in GeneratedAddress: Couldn't get mutable borrow of VCardData", ), }; shouldrender = true; } - Msg::GeneratedDates(dates) => { + Msg::GeneratedTelephone(telephone) => { self.answer_count += 1; match self.vcard_data.get_mut() { - Some(vcard_data) => vcard_data.add_dates(dates), + Some(vcard_data) => vcard_data.add_telephone(telephone), None => ConsoleService::info( - "Error in GeneratedDates: Couldn't get mutable borrow of VCardData", + "Error in GeneratedTelephone: Couldn't get mutable borrow of VCardData", ), }; @@ -336,13 +337,27 @@ impl Component for MainView { } } - for dates in vcard_data.datess { - if !dates.anniversary.is_empty() { - builder = builder.with_anniversary(dates.anniversary); + for other_identification in vcard_data.other_identifications { + if !other_identification.nickname.is_empty() { + builder = + builder.with_nickname(parameters!(), other_identification.nickname); + } + + match other_identification.photo { + Some(file) => builder = builder.with_photo(parameters!(), file.content), + None => (), + }; + + if !other_identification.anniversary.is_empty() { + builder = builder.with_anniversary(other_identification.anniversary); } - if !dates.birthday.is_empty() { - builder = builder.with_bday(parameters!(), dates.birthday); + if !other_identification.birthday.is_empty() { + builder = builder.with_bday(parameters!(), other_identification.birthday); + } + + if !other_identification.gender.is_empty() { + builder = builder.with_gender(parameters!(), other_identification.gender); } } @@ -484,6 +499,19 @@ impl Component for MainView { } { + for self.other_identifications_links.iter().map(|link| + html!{ + <OtherIdentificationView weak_link=link + generated=self.link.callback( + |d: OtherIdentification| + Msg::GeneratedOtherIdentification(d) + ) + /> + } + ) + } + + { for self.address_links.iter().map(|link| html!{ <AddressView weak_link=link @@ -510,19 +538,6 @@ impl Component for MainView { } { - for self.dates_links.iter().map(|link| - html!{ - <DatesView weak_link=link - generated=self.link.callback( - |d: Dates| - Msg::GeneratedDates(d) - ) - /> - } - ) - } - - { for self.organizational_links.iter().map(|link| html!{ <OrganizationalView weak_link=link @@ -695,7 +710,7 @@ impl MainView { self.name_links.len() + self.address_links.len() + self.telephone_links.len() - + self.dates_links.len() + + self.other_identifications_links.len() + self.organizational_links.len() } } diff --git a/src/view/property_group.rs b/src/view/property_group.rs index 9c86e80..f4b62a4 100644 --- a/src/view/property_group.rs +++ b/src/view/property_group.rs @@ -5,7 +5,7 @@ use yewtil::NeqAssign; #[derive(Clone, PartialEq, Properties)] pub struct InputProps< - O: 'static + VCardPropertyInputObject<M> + Clone, + O: 'static + VCardPropertyInputGroupObject<M> + Clone, M: 'static + PartialEq + Clone, > { pub generated: Callback<O>, @@ -14,7 +14,7 @@ pub struct InputProps< #[derive(Clone, PartialEq)] pub struct PropertyGroupInputComponent< - O: 'static + VCardPropertyInputObject<M>, + O: 'static + VCardPropertyInputGroupObject<M>, M: 'static + PartialEq + Clone, > { pub props: InputProps<O, M>, @@ -22,7 +22,7 @@ pub struct PropertyGroupInputComponent< pub error: Option<Error>, } -impl<O: 'static + VCardPropertyInputObject<M>, M: 'static + PartialEq + Clone> Component +impl<O: 'static + VCardPropertyInputGroupObject<M>, M: 'static + PartialEq + Clone> Component for PropertyGroupInputComponent<O, M> { type Message = M; @@ -57,7 +57,7 @@ impl<O: 'static + VCardPropertyInputObject<M>, M: 'static + PartialEq + Clone> C } } -impl<O: VCardPropertyInputObject<M>, M: 'static + PartialEq + Clone> +impl<O: VCardPropertyInputGroupObject<M>, M: 'static + PartialEq + Clone> PropertyGroupInputComponent<O, M> { /// Returns the error as `Html` |