From fffaefd120c4025ab96e119fed69e9914f1ec66c Mon Sep 17 00:00:00 2001 From: Franklin Date: Wed, 26 Apr 2023 08:41:19 -0400 Subject: [PATCH] Finished contact screen --- css/components/admin_project.css | 8 ++++++++ src/components/admin_agent.rs | 2 -- src/components/admin_contact.rs | 30 +++++++++++++++++++++++++++++ src/components/mod.rs | 1 + src/pages/admin/contacts.rs | 13 +++++++++++-- src/pages/admin/start.rs | 33 ++++++++++++++++++++++++++++---- 6 files changed, 79 insertions(+), 8 deletions(-) create mode 100644 src/components/admin_contact.rs diff --git a/css/components/admin_project.css b/css/components/admin_project.css index 9cdc363..669a52f 100644 --- a/css/components/admin_project.css +++ b/css/components/admin_project.css @@ -6,6 +6,7 @@ gap: 5px; height: 40px; + max-height: fit-content; width: 100%; } .admin-project-container:hover { @@ -51,6 +52,13 @@ text-align: start; width: 100px; } +.admin-project-column-long { + font-size: 13px; + font-family: Source Sans Pro; + font-weight: 100; + text-align: start; + width: 500px; +} .admin-project-index { font-size: 13px; font-family: Source Sans Pro; diff --git a/src/components/admin_agent.rs b/src/components/admin_agent.rs index a0b9ffc..12501fc 100644 --- a/src/components/admin_agent.rs +++ b/src/components/admin_agent.rs @@ -8,8 +8,6 @@ use crate::{ routes::main_router::Route, }; -//TODO: Add admin tag - #[function_component(AdminAgent)] pub fn admin_agent(props: &AdminAgentProps) -> Html { let navigator = use_navigator().unwrap(); diff --git a/src/components/admin_contact.rs b/src/components/admin_contact.rs new file mode 100644 index 0000000..fd9f941 --- /dev/null +++ b/src/components/admin_contact.rs @@ -0,0 +1,30 @@ +use jl_types::domain::{contact::Contact}; +use yew::prelude::*; + + +#[derive(PartialEq, Properties, Clone)] +pub struct AdminContactProps { + pub contact: Contact, + pub index: usize, +} + +#[function_component(AdminContact)] +pub fn admin_contact(props: &AdminContactProps) -> Html { + html! { +
+
+ {props.index + 1} +
+
+ {format!("{} {}", props.contact.first_name.clone(), props.contact.last_name.clone())} +
+
+ {props.contact.credential.clone()} +
+
+ {props.contact.message.clone()} +
+
+ + } +} \ No newline at end of file diff --git a/src/components/mod.rs b/src/components/mod.rs index 0b18c99..aee04c9 100644 --- a/src/components/mod.rs +++ b/src/components/mod.rs @@ -16,3 +16,4 @@ pub mod number_textfield; pub mod project_card; pub mod single_media_picker; pub mod textfield; +pub mod admin_contact; \ No newline at end of file diff --git a/src/pages/admin/contacts.rs b/src/pages/admin/contacts.rs index 700d4d4..51a4950 100644 --- a/src/pages/admin/contacts.rs +++ b/src/pages/admin/contacts.rs @@ -1,7 +1,7 @@ use yew::prelude::*; use yew_router::prelude::use_navigator; -use crate::{api::backend::get_all_contacts, components::admin_nav_bar::AdminNavigationBar, auth_present}; +use crate::{api::backend::get_all_contacts, components::{admin_nav_bar::AdminNavigationBar, admin_contact::AdminContact}, auth_present}; #[function_component(AdminContacts)] pub fn admin_contacts() -> Html { @@ -28,7 +28,16 @@ pub fn admin_contacts() -> Html {
{"Solicitudes de Contacto"}
- //TODO: Finish this +
{"Agentes"}
+
+
+ {(*contacts).clone().into_iter().enumerate().map(|(key, contact)| html! { + <> + +
+ + }).collect::()} +
diff --git a/src/pages/admin/start.rs b/src/pages/admin/start.rs index 1f03188..68e6eed 100644 --- a/src/pages/admin/start.rs +++ b/src/pages/admin/start.rs @@ -1,12 +1,36 @@ use yew::prelude::*; use yew_router::prelude::use_navigator; -use crate::{components::admin_nav_bar::AdminNavigationBar, auth_present}; +use crate::{components::admin_nav_bar::AdminNavigationBar, auth_present, api::backend, authed_call}; #[function_component(AdminStart)] pub fn admin_start() -> Html { let navigator = use_navigator().unwrap(); auth_present!(navigator); + + let page_loads = use_state(|| 0); + let contact_requests = use_state(|| 0); + use_state(|| { + let navigator = navigator.clone(); + let page_loads = page_loads.clone(); + let contact_requests = contact_requests.clone(); + wasm_bindgen_futures::spawn_local(async move { + match authed_call!(backend::get_all_page_visits_count(), navigator) { + Ok(loads) => page_loads.set(match loads.count { + Some(load) => load, + None => 0 + }), + Err(_) => {} + }; + match authed_call!(backend::get_all_contacts_count(), navigator) { + Ok(contacts) => contact_requests.set(match contacts.count { + Some(count) => count, + None => 0 + }), + Err(_) => {} + } + }); + }); html! { <> @@ -16,16 +40,17 @@ pub fn admin_start() -> Html {
{"Bienvenido Jorge, este es tu panel de administración."}
{"Cargas: "}
-
{"201"}
+
{*page_loads}
{"Solicitudes de Contacto: "}
-
{"10"}
+
{*contact_requests}
+ /*
{"Whatsapp Clicks"}
{"28"}
-
+ */