Fix some formatting and improve structure

This commit is contained in:
Lol3rrr
2024-09-16 23:20:55 +02:00
parent a1faa1a815
commit 1e6c3da58b
12 changed files with 423 additions and 249 deletions

View File

@@ -6,16 +6,20 @@ pub fn demo() -> impl leptos::IntoView {
let params = leptos_router::use_params_map();
let id = move || params.with(|params| params.get("id").cloned().unwrap_or_default());
let demo_info = create_resource(|| (), move |_| async move {
let res = reqwasm::http::Request::get(&format!("/api/demos/{}/info", id())).send().await.unwrap();
res.json::<common::DemoInfo>().await.unwrap()
});
let demo_info = create_resource(
|| (),
move |_| async move {
let res = reqwasm::http::Request::get(&format!("/api/demos/{}/info", id()))
.send()
.await
.unwrap();
res.json::<common::DemoInfo>().await.unwrap()
},
);
let map = move || {
match demo_info.get() {
Some(v) => v.map.clone(),
None => String::new(),
}
let map = move || match demo_info.get() {
Some(v) => v.map.clone(),
None => String::new(),
};
let selected_tab = move || {
@@ -24,7 +28,7 @@ pub fn demo() -> impl leptos::IntoView {
let trailing = loc_path.split('/').last();
trailing.unwrap_or("/").to_owned()
};
let style = stylers::style! {
"Demo",
.analysis_bar {

View File

@@ -25,7 +25,10 @@ pub fn demo_list_entry(demo: common::BaseDemoInfo) -> impl leptos::IntoView {
}
#[leptos::component]
pub fn upload_demo(shown: ReadSignal<DemoUploadStatus>, update_shown: WriteSignal<DemoUploadStatus>) -> impl leptos::IntoView {
pub fn upload_demo(
shown: ReadSignal<DemoUploadStatus>,
update_shown: WriteSignal<DemoUploadStatus>,
) -> impl leptos::IntoView {
use leptos_router::Form;
let style = stylers::style! {
@@ -69,11 +72,17 @@ pub fn upload_demo(shown: ReadSignal<DemoUploadStatus>, update_shown: WriteSigna
#[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<common::BaseDemoInfo> = res.json().await.unwrap();
demos
});
let demo_data = create_resource(
|| (),
|_| async move {
let res = reqwasm::http::Request::get("/api/demos/list")
.send()
.await
.unwrap();
let demos: Vec<common::BaseDemoInfo> = res.json().await.unwrap();
demos
},
);
view! {
<div>

View File

@@ -1,39 +1,42 @@
use leptos::*;
use leptos_router::*;
use frontend::{UploadDemo, TopBar, Homepage, Demo};
use frontend::{Demo, Homepage, TopBar, UploadDemo};
async fn load_demos() -> Vec<common::BaseDemoInfo> {
let res = reqwasm::http::Request::get("/api/demos/list").send().await.unwrap();
let res = reqwasm::http::Request::get("/api/demos/list")
.send()
.await
.unwrap();
let demos: Vec<common::BaseDemoInfo> = res.json().await.unwrap();
demos
}
fn main() {
let async_data = create_resource(|| (), |_| async move {
load_demos().await
});
let async_data = create_resource(|| (), |_| async move { load_demos().await });
let (upload_demo_read, upload_demo_write) = create_signal(frontend::DemoUploadStatus::Hidden);
mount_to_body(move || view! {
<Router>
<nav>
<TopBar update_demo_visible=upload_demo_write />
</nav>
<main>
<UploadDemo shown=upload_demo_read update_shown=upload_demo_write />
mount_to_body(move || {
view! {
<Router>
<nav>
<TopBar update_demo_visible=upload_demo_write />
</nav>
<main>
<UploadDemo shown=upload_demo_read update_shown=upload_demo_write />
<Routes>
<Route path="/" view=Homepage />
<Route path="/demo/:id" view=Demo>
<Route path="perround" view=frontend::demo::PerRound />
<Route path="scoreboard" view=frontend::demo::Scoreboard />
<Route path="" view=frontend::demo::Scoreboard />
</Route>
</Routes>
</main>
</Router>
<Routes>
<Route path="/" view=Homepage />
<Route path="/demo/:id" view=Demo>
<Route path="perround" view=frontend::demo::PerRound />
<Route path="scoreboard" view=frontend::demo::Scoreboard />
<Route path="" view=frontend::demo::Scoreboard />
</Route>
</Routes>
</main>
</Router>
}
})
}

View File

@@ -5,12 +5,19 @@ use crate::DemoUploadStatus;
#[leptos::component]
fn steam_login(height: &'static str, width: &'static str) -> impl leptos::IntoView {
let user_status = create_resource(|| (), |_| async move {
let res = reqwasm::http::Request::get("/api/user/status").send().await.unwrap();
res.json::<common::UserStatus>().await.map_err(|e| ())
});
let user_status = create_resource(
|| (),
|_| async move {
let res = reqwasm::http::Request::get("/api/user/status")
.send()
.await
.unwrap();
res.json::<common::UserStatus>().await.map_err(|e| ())
},
);
let tmp = move || match user_status.get() {
let tmp = move || {
match user_status.get() {
Some(Ok(user)) =>
view! {
<p>{user.name}</p>
@@ -21,6 +28,7 @@ fn steam_login(height: &'static str, width: &'static str) -> impl leptos::IntoVi
<img src="https://community.akamai.steamstatic.com/public/images/signinthroughsteam/sits_01.png" alt="Steam Login" style=format!("height: {height}; width: {width}") />
</a>
}.into_view(),
}
};
view! {
@@ -66,7 +74,7 @@ pub fn top_bar(update_demo_visible: WriteSignal<DemoUploadStatus>) -> impl lepto
<A href="/">
<p class="logo">Knifer</p>
</A>
<div class="elem" style="grid-column-start: 3">
<button on:click=move |_| update_demo_visible(DemoUploadStatus::Shown)>
Upload Demo