diff --git a/frontend/src/demo/heatmap.rs b/frontend/src/demo/heatmap.rs index c8fa3f2..a60ba1b 100644 --- a/frontend/src/demo/heatmap.rs +++ b/frontend/src/demo/heatmap.rs @@ -46,17 +46,19 @@ pub fn heatmaps() -> impl leptos::IntoView { #[leptos::component] fn heatmap_view(heatmaps: Vec) -> impl leptos::IntoView { let (idx, set_idx) = create_signal(0usize); - let (value, set_value) = create_signal(None::); - - let h1 = heatmaps.clone(); + let (value, set_value) = create_signal(Vec::::new()); let map = use_context::().unwrap(); let style = stylers::style! { "Heatmap-View", + .heatmap_container { + display: inline-block; + } + .heatmap_image { - width: 1024px; - height: min(70vw, 70vh); + width: min(40vw, 60vh); + height: min(40vw, 60vh); display: block; position: relative; } @@ -69,48 +71,68 @@ fn heatmap_view(heatmaps: Vec) -> impl lep } .heatmap_image > img { - width: min(70vw, 70vh); - height: min(70vh, 70vw); + width: min(40vw, 60vh); + height: min(40vw, 60vh); } .player_select { - width: min(70vw, 70vh); + width: min(40vw, 60vh); } }; + let heatmap_view = move || { + let heatmaps = value.get(); + if heatmaps.is_empty() { + return Vec::new(); + } + + heatmaps.into_iter().map(|heatmap| { + view! { + class=style, +
+ { heatmap.team } +
+ + +
+
+ }.into_view() + }).collect::>() + }; + + let mut og_players: Vec<_> = heatmaps.iter().map(|h| h.name.clone()).collect(); + og_players.sort_unstable(); + og_players.dedup(); + + let players = og_players.clone(); + let select_handler = move |ev| { + let new_value = event_target_value(&ev); + let idx: usize = new_value.parse().unwrap(); + + let player = players.get(idx).unwrap(); + + set_value(heatmaps.iter().filter(|h| &h.name == player).cloned().collect()); + set_idx(idx); + }; + + let players = og_players; + let select_values = move || { + players.iter().enumerate().map(|(idx, name)| { + view! { + + } + }).collect::>() + }; + view! { class=style,
- + { select_values }
- { - move || { - match value.get() { - Some(heatmap) => view! { - class=style, -
- - -
- }.into_any(), - None => view! {

ERROR

}.into_any(), - } - } - } + { heatmap_view }
} }