Some minor styles and add very basic sorting support

This commit is contained in:
Lol3rrr
2024-10-10 16:35:35 +02:00
parent 6c23e72ac5
commit 8e3758c254
2 changed files with 35 additions and 8 deletions

View File

@@ -56,7 +56,7 @@ fn heatmap_view(heatmaps: Vec<common::demo_analysis::PlayerHeatmap>) -> impl lep
"Heatmap-View", "Heatmap-View",
.heatmap_image { .heatmap_image {
width: 1024px; width: 1024px;
height: 1024px; height: min(70vw, 70vh);
display: block; display: block;
position: relative; position: relative;
} }

View File

@@ -30,8 +30,23 @@ pub fn scoreboard() -> impl leptos::IntoView {
} }
} }
fn damage_sorting(p1: &common::demo_analysis::ScoreBoardPlayer, p2: &common::demo_analysis::ScoreBoardPlayer) -> core::cmp::Ordering {
p2.damage.cmp(&p1.damage)
}
fn kill_sorting(p1: &common::demo_analysis::ScoreBoardPlayer, p2: &common::demo_analysis::ScoreBoardPlayer) -> core::cmp::Ordering {
p2.kills.cmp(&p1.kills)
}
fn assists_sorting(p1: &common::demo_analysis::ScoreBoardPlayer, p2: &common::demo_analysis::ScoreBoardPlayer) -> core::cmp::Ordering {
p2.assists.cmp(&p1.assists)
}
fn deaths_sorting(p1: &common::demo_analysis::ScoreBoardPlayer, p2: &common::demo_analysis::ScoreBoardPlayer) -> core::cmp::Ordering {
p2.deaths.cmp(&p1.deaths)
}
#[leptos::component] #[leptos::component]
fn team_scoreboard(info: Resource<leptos_router::ParamsMap, common::demo_analysis::ScoreBoard>, team_name: String, part: fn(common::demo_analysis::ScoreBoard) -> Vec<common::demo_analysis::ScoreBoardPlayer>) -> impl IntoView { fn team_scoreboard(info: Resource<leptos_router::ParamsMap, common::demo_analysis::ScoreBoard>, team_name: String, part: fn(common::demo_analysis::ScoreBoard) -> Vec<common::demo_analysis::ScoreBoardPlayer>) -> impl IntoView {
let (ordering, set_ordering) = create_signal::<fn(&common::demo_analysis::ScoreBoardPlayer, &common::demo_analysis::ScoreBoardPlayer) -> core::cmp::Ordering>(damage_sorting);
let style = stylers::style! { let style = stylers::style! {
"Team-Scoreboard", "Team-Scoreboard",
tr:nth-child(even) { tr:nth-child(even) {
@@ -54,15 +69,27 @@ fn team_scoreboard(info: Resource<leptos_router::ParamsMap, common::demo_analysi
<table> <table>
<tr> <tr>
<th>Name</th> <th>Name</th>
<th>Kills</th> <th on:click=move |_| {
<th>Assists</th> set_ordering(kill_sorting);
<th>Deaths</th> }>Kills</th>
<th>Damage</th> <th on:click=move |_| {
set_ordering(assists_sorting);
}>Assists</th>
<th on:click=move |_| {
set_ordering(deaths_sorting);
}>Deaths</th>
<th on:click=move |_| {
set_ordering(damage_sorting);
}>Damage</th>
</tr> </tr>
{ {
move || { move || {
let value = info.get().map(|v| part(v)); let value = info.get().map(|v| part(v));
(value).into_iter().flat_map(|v| v).map(|s| { let mut players: Vec<_> = value.into_iter().flat_map(|v| v).collect();
let sorting = ordering.get();
players.sort_unstable_by(|p1, p2| sorting(p1, p2));
players.into_iter().map(|s| {
view! { view! {
class=style, class=style,
<tr><td>{ s.name }</td><td>{ s.kills }</td><td>{ s.assists }</td><td>{ s.deaths }</td><td>{ s.damage }</td></tr> <tr><td>{ s.name }</td><td>{ s.kills }</td><td>{ s.assists }</td><td>{ s.deaths }</td><td>{ s.damage }</td></tr>