Some more minor improvements in the UI and updating some libraries
This commit is contained in:
@@ -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>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 |_| {
|
||||
|
||||
@@ -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 />
|
||||
|
||||
Reference in New Issue
Block a user