From 2fd49b7795ad638168f20d6303a46809de06257a Mon Sep 17 00:00:00 2001 From: xeovalyte Date: Tue, 18 Jun 2024 12:33:21 +0200 Subject: [PATCH] Changed comparison between participants --- application/src/pages/groups.rs | 75 +++++++++++++++++++-------------- flake.nix | 4 +- 2 files changed, 45 insertions(+), 34 deletions(-) diff --git a/application/src/pages/groups.rs b/application/src/pages/groups.rs index b8d674f..767ac3e 100644 --- a/application/src/pages/groups.rs +++ b/application/src/pages/groups.rs @@ -23,7 +23,37 @@ pub fn Groups() -> impl IntoView { let (participants_lifesaver, participants_hindernis, participants_popduiken) = sort_by_events(participants_filtered); - let total_score_participants = sort_by_total_score(participants_filtered); + + let lifesaver_best = create_memo(move |_| match participants_lifesaver.get().get(0) { + Some(p) => match p.value.get().events { + Some(e) => e.lifesaver.unwrap_or(0), + None => 6_000_000, + }, + None => 6_000_000, + }); + + let hindernis_best = create_memo(move |_| match participants_hindernis.get().get(0) { + Some(p) => match p.value.get().events { + Some(e) => e.hindernis.unwrap_or(0), + None => 6_000_000, + }, + None => 6_000_000, + }); + + let popduiken_best = create_memo(move |_| match participants_popduiken.get().get(0) { + Some(p) => match p.value.get().events { + Some(e) => e.popduiken.unwrap_or(0), + None => 6_000_000, + }, + None => 6_000_000, + }); + + let total_score_participants = sort_by_total_score( + participants_filtered, + lifesaver_best, + hindernis_best, + popduiken_best, + ); view! {

"Groups"

@@ -65,6 +95,9 @@ pub fn Groups() -> impl IntoView { fn sort_by_total_score( participants_filtered: Memo>, + lifesaver_best: Memo, + popduiken_best: Memo, + hindernis_best: Memo, ) -> Memo> { let total_score_participants: Memo> = create_memo(move |_| { let mut all_participants: Vec<(usize, schemas::ParticipantSignal)> = participants_filtered @@ -73,48 +106,26 @@ fn sort_by_total_score( .enumerate() .collect(); - let mut lifesaver_best = 6_000_000; - let mut popduiken_best = 6_000_000; - let mut hindernis_best = 6_000_000; - - for val in all_participants.clone().into_iter() { - if val.1.value.get().events == None { - continue; - } - let person = val.1.value.get().events.unwrap(); - let person_lifesaver = person.lifesaver.unwrap_or(6_000_000); - let person_popduiken = person.popduiken.unwrap_or(6_000_000); - let person_hindernis = person.hindernis.unwrap_or(6_000_000); - - if person_lifesaver < lifesaver_best { - lifesaver_best = person_lifesaver; - } - if person_popduiken < popduiken_best { - popduiken_best = person_popduiken; - } - if person_hindernis < hindernis_best { - hindernis_best = person_hindernis; - } - } + let lifesaver_best = lifesaver_best.get(); + let popduiken_best = popduiken_best.get(); + let hindernis_best = hindernis_best.get(); all_participants.sort_by(|(_, a), (_, b)| { let part_a = match a.value.get().events { Some(events) => { - (((events.lifesaver.unwrap_or(6_000_000) * 100) / lifesaver_best) + ((events.lifesaver.unwrap_or(6_000_000) * 100) / lifesaver_best) + ((events.hindernis.unwrap_or(6_000_000) * 100) / hindernis_best) - + ((events.popduiken.unwrap_or(6_000_000) * 100) / popduiken_best)) - / 3 + + ((events.popduiken.unwrap_or(6_000_000) * 100) / popduiken_best) } - None => 36_000_000, + None => 1000, }; let part_b = match b.value.get().events { Some(events) => { - (((events.lifesaver.unwrap_or(6_000_000) * 100) / lifesaver_best) + ((events.lifesaver.unwrap_or(6_000_000) * 100) / lifesaver_best) + ((events.hindernis.unwrap_or(6_000_000) * 100) / hindernis_best) - + ((events.popduiken.unwrap_or(6_000_000) * 100) / popduiken_best)) - / 3 + + ((events.popduiken.unwrap_or(6_000_000) * 100) / popduiken_best) } - None => 36_000_000, + None => 1000, }; part_a.cmp(&part_b) diff --git a/flake.nix b/flake.nix index 461b215..aa331ad 100644 --- a/flake.nix +++ b/flake.nix @@ -34,10 +34,10 @@ zlib.out dart-sass llvmPackages_17.lld - (rust-bin.stable.latest.default.override { + (rust-bin.selectLatestNightlyWith ( toolchain: toolchain.default.override { extensions= [ "rust-src" "rust-analyzer" ]; targets = [ "wasm32-unknown-unknown" ]; - }) + })) ]; shellHook = ''