diff --git a/src/app.rs b/src/app.rs index 5358b9c..dfdd2e2 100644 --- a/src/app.rs +++ b/src/app.rs @@ -1,4 +1,4 @@ -use crate::pages::{ProviderPortal, ScholarshipInfoPage, ProviderContactPage, LoanerShell, LoanerFallback, LoanerBorrowForm, LoanerReturnForm, AuthCallbackPage, ApplicantsPageFallback, AdminShell, AdminHomePage, AdminProviderPage, AdminScholarshipPage, StudentShell, StudentHomePage, StudentDemographicsPage, AdditionalPage}; +use crate::pages::{ProviderPortal, ScholarshipInfoPage, ProviderContactPage, LoanerShell, LoanerFallback, LoanerBorrowForm, LoanerReturnForm, AuthCallbackPage, ApplicantsPageFallback, AdminShell, AdminHomePage, AdminProviderPage, AdminScholarshipPage, StudentShell, StudentHomePage, StudentDemographicsPage, AdditionalPage, AdminUtilsPage}; use leptos::prelude::*; use leptos_meta::{MetaTags, Stylesheet, Title, provide_meta_context}; use leptos_oidc::AuthSignal; @@ -110,6 +110,7 @@ fn AdminRoutes() -> impl MatchNestedRoutes + Clone { + } .into_inner() diff --git a/src/pages/admin/mod.rs b/src/pages/admin/mod.rs index d5400ea..3bb847a 100644 --- a/src/pages/admin/mod.rs +++ b/src/pages/admin/mod.rs @@ -1,8 +1,11 @@ mod shell; -pub use shell::*; mod home_page; -pub use home_page::*; mod provider_page; -pub use provider_page::*; mod scholarship_page; +mod utils_page; + +pub use shell::*; +pub use home_page::*; +pub use provider_page::*; pub use scholarship_page::*; +pub use utils_page::*; diff --git a/src/pages/admin/shell.rs b/src/pages/admin/shell.rs index c5d78a7..84add78 100644 --- a/src/pages/admin/shell.rs +++ b/src/pages/admin/shell.rs @@ -18,25 +18,8 @@ pub fn AdminShell() -> impl IntoView { TabInfo::new("Home", "/admin/home", None), TabInfo::new("Providers", "/admin/providers", None), TabInfo::new("Scholarships", "/admin/scholarships", None), + TabInfo::new("Utilities", "/admin/utilities", None), ] /> } } - -#[component] -pub fn AdminFallback() -> impl IntoView { - view! { -
-

"This is a fallback page"

-
- } -} - -#[component] -pub fn AdminTesting() -> impl IntoView { - view! { -
-

"This is a testing page"

-
- } -} diff --git a/src/pages/admin/utils_page.rs b/src/pages/admin/utils_page.rs new file mode 100644 index 0000000..218b7b8 --- /dev/null +++ b/src/pages/admin/utils_page.rs @@ -0,0 +1,77 @@ +use chrono::DateTime; +use crate::components::ActionButton; +use leptos::prelude::*; +use crate::common::{DateInfo, DateRange}; +use crate::pages::api::{CreateDates, CreateTestComparisons}; + +fn get_important_dates() -> Vec { + vec! [ + DateInfo { + id: uuid::Uuid::new_v4().to_string(), + title: "Provider Forms Open".to_string(), + date: DateRange::Range( + DateTime::parse_from_rfc3339("2026-01-20T07:15:00-05:00").unwrap(), + DateTime::parse_from_rfc3339("2026-03-03T23:59:00-05:00").unwrap() + ), + description: "".to_string(), + }, + DateInfo { + id: uuid::Uuid::new_v4().to_string(), + title: "Student Forms Open".to_string(), + date: DateRange::Range( + DateTime::parse_from_rfc3339("2026-03-03T07:15:00-05:00").unwrap(), + DateTime::parse_from_rfc3339("2026-03-27T14:05:00-05:00").unwrap() + ), + description: "".to_string(), + }, + DateInfo { + id: uuid::Uuid::new_v4().to_string(), + title: "Scholarship Decision Window".to_string(), + date: DateRange::Range( + DateTime::parse_from_rfc3339("2026-04-10T07:15:00-05:00").unwrap(), + DateTime::parse_from_rfc3339("2026-05-01T23:59:00-05:00").unwrap() + ), + description: "Start date may change if available sooner.".to_string(), + }, + DateInfo { + id: uuid::Uuid::new_v4().to_string(), + title: "PHS Scholarship Committee".to_string(), + date: DateRange::Single( + DateTime::parse_from_rfc3339("2026-05-18T00:00:00-05:00").unwrap(), + ), + description: "Time TBD".to_string(), + }, + DateInfo { + id: uuid::Uuid::new_v4().to_string(), + title: "Scholarship and Awards Night".to_string(), + date: DateRange::Single( + DateTime::parse_from_rfc3339("2026-06-09T00:00:00-05:00").unwrap(), + ), + description: "Time TBD".to_string(), + }, + ] +} + +#[component] +pub fn AdminUtilsPage() -> impl IntoView { + let create_comparisons = ServerAction::::new(); + let create_dates = ServerAction::::new(); + + let on_click_comparisons = move |_| { + create_comparisons.dispatch(CreateTestComparisons{}); + }; + + let on_click_dates = move |_| { + create_dates.dispatch(CreateDates{dates: get_important_dates()}); + }; + + view! { +
+
+
"This utility page provides buttons to initialize the corresponding lists of information."
+ "Create Comparisons" + "Create Dates" +
+
+ }.into_any() +}