Some more minor improvements in the UI and updating some libraries

This commit is contained in:
Lol3rrr
2024-11-01 16:13:51 +01:00
parent edecf885b0
commit 2019c66c23
7 changed files with 143 additions and 130 deletions

View File

@@ -1,15 +1,17 @@
use leptos::*;
#[leptos::component]
pub fn homepage() -> impl leptos::IntoView {
pub fn homepage(get_notification: ReadSignal<u8>) -> impl leptos::IntoView {
let demo_data = create_resource(
|| (),
move || {
get_notification.get()
},
|_| async move {
let res = reqwasm::http::Request::get("/api/demos/list")
.send()
.await
.unwrap();
let demos: Vec<common::BaseDemoInfo> = res.json().await.unwrap();
let demos: common::DemoList = res.json().await.unwrap();
demos
},
);
@@ -26,7 +28,7 @@ pub fn homepage() -> impl leptos::IntoView {
#[leptos::component]
fn demo_list(
demos: impl SignalGet<Value = Option<Vec<common::BaseDemoInfo>>> + 'static,
demos: impl SignalGet<Value = Option<common::DemoList>> + 'static,
) -> impl leptos::IntoView {
let style = stylers::style! {
"DemoList",
@@ -45,7 +47,7 @@ fn demo_list(
<span>Date</span>
<span>Map</span>
{ move || demos.get().unwrap_or_default().into_iter().enumerate().map(|(i, demo)| view! { <DemoListEntry demo idx=i+1 /> }).collect::<Vec<_>>() }
{ move || demos.get().map(|d| d.done).unwrap_or_default().into_iter().enumerate().map(|(i, demo)| view! { <DemoListEntry demo idx=i+1 /> }).collect::<Vec<_>>() }
</div>
}
}

View File

@@ -19,6 +19,7 @@ pub enum DemoUploadStatus {
pub fn upload_demo(
shown: ReadSignal<DemoUploadStatus>,
update_shown: WriteSignal<DemoUploadStatus>,
reload_demos: WriteSignal<u8>,
) -> impl leptos::IntoView {
use leptos_router::Form;
@@ -62,8 +63,10 @@ pub fn upload_demo(
// Remove the Upload popup
update_shown.set(DemoUploadStatus::Hidden);
// TOOD
// Reload the demo list
reload_demos.update(|v| {
*v = v.wrapping_add(1);
});
});
let on_submit: std::rc::Rc<dyn Fn(&leptos::web_sys::FormData)> = std::rc::Rc::new(move |_| {

View File

@@ -6,6 +6,8 @@ use frontend::{Demo, Homepage, TopBar, UploadDemo};
fn main() {
let (upload_demo_read, upload_demo_write) = create_signal(frontend::DemoUploadStatus::Hidden);
let (get_reload_demos, reload_demos) = create_signal(0u8);
mount_to_body(move || {
view! {
<Router>
@@ -13,10 +15,10 @@ fn main() {
<TopBar update_demo_visible=upload_demo_write />
</nav>
<main>
<UploadDemo shown=upload_demo_read update_shown=upload_demo_write />
<UploadDemo shown=upload_demo_read update_shown=upload_demo_write reload_demos />
<Routes>
<Route path="/" view=Homepage />
<Route path="/" view=move || view! { <Homepage get_notification=get_reload_demos /> } />
<Route path="/demo/:id" view=Demo>
<Route path="perround" view=frontend::demo::perround::PerRound />
<Route path="scoreboard" view=frontend::demo::scoreboard::Scoreboard />