use leptos::*; #[leptos::component] pub fn homepage() -> impl leptos::IntoView { let demo_data = create_resource( || (), |_| async move { let res = reqwasm::http::Request::get("/api/demos/list") .send() .await .unwrap(); let demos: Vec = res.json().await.unwrap(); demos }, ); view! {

Demos

} } #[leptos::component] fn demo_list(demos: impl SignalGet>> + 'static) -> impl leptos::IntoView { let style = stylers::style! { "DemoList", .list { display: inline-grid; grid-template-columns: auto auto auto; row-gap: 1ch; } }; view! { class=style,
Score Date Map { move || demos.get().unwrap_or_default().into_iter().enumerate().map(|(i, demo)| view! { }).collect::>() }
} } #[leptos::component] fn demo_list_entry(demo: common::BaseDemoInfo, idx: usize) -> impl leptos::IntoView { let style = stylers::style! { "DemoListEntry", .entry { display: inline-block; border: solid #030303aa 1px; grid-column: 1 / 4; width: 100%; height: 100%; } .score, .map { padding-left: 5px; padding-right: 5px; margin-top: auto; margin-bottom: auto; } .score { grid-column: 1; font-size: 20px; } .date { grid-column: 2; } .map { grid-column: 3; } .date { display: inline-grid; grid-template-columns: auto; grid-template-rows: auto auto; } }; view! { class=style, {demo.team2_score}:{demo.team3_score}
{demo.uploaded_at.format("%Y-%m-%d").to_string()} {demo.uploaded_at.format("%H-%M-%S").to_string()}
{demo.map} } }