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"}
-
+ */
>