feat: create full provider list setup

This commit is contained in:
alphafetus committed 2026-01-27 14:13:55 -05:00
1 parent 12a980f327
commit a95e9a1034
8 files changed
+198 -90

No files matched your search

+57 -14
View File
@@ -1,26 +1,69 @@
use leptos::logging::log;
use leptos::prelude::*;
use crate::common::ValueType;
use crate::components::{NavListInfo, SelectableNavList};
use crate::pages::api::get_all_providers;
#[component]
pub fn AdminProviderPage() -> impl IntoView {
let selected_items = RwSignal::new(Vec::new());
let provider_list = RwSignal::new(vec![
NavListInfo {
text: vec!["Testing 1".to_string(), 3.to_string(), 500.to_string()],
id: "1".to_string(),
slug: "1".to_string(),
},
NavListInfo {
text: vec!["Testing 2".to_string(), 2.to_string(), 1000.to_string()],
id: "2".to_string(),
slug: "2".to_string(),
let provider_list = RwSignal::new(Vec::new());
let provider_trigger = Trigger::new();
let provider_resource = Resource::new(
move || provider_trigger.track(),
async move |_| {
get_all_providers().await
}
]);
);
Effect::new(move || {
if let Some(Err(err)) = provider_resource.get() {
log!("Found error: {}", err.to_string());
}
let Some(Ok(list)) = provider_resource.get() else {
return;
};
let members_list = vec![
"contact_email".to_string(),
"first_name".to_string(),
"last_name".to_string(),
];
// Convert the list into a series of NavListInfo
let converted = list
.into_iter()
.map(|info| {
let mut text_list = vec![];
members_list.iter().for_each(|member| {
let val = info.get(member)
.unwrap_or(&ValueType::String(None))
.as_string()
.ok().flatten()
.unwrap_or_default();
text_list.push(val);
});
let subject = info.get("subject")
.unwrap_or(&ValueType::String(None))
.to_string();
NavListInfo {
text: text_list,
id: subject.clone(),
slug: subject,
}
})
.collect();
provider_list.set(converted);
});
let headers = vec![
"Scholarship Name",
"Number of Awards",
"Amount of Awards"
"Email",
"First Name",
"Last Name"
]
.iter()
.map(|s| s.to_string())