diff --git a/frontend/src/lib/play/admin/final_results.svelte b/frontend/src/lib/play/admin/final_results.svelte index 292be4d..156cee0 100644 --- a/frontend/src/lib/play/admin/final_results.svelte +++ b/frontend/src/lib/play/admin/final_results.svelte @@ -19,17 +19,12 @@ SPDX-License-Identifier: MPL-2.0 } let { data = $bindable(), username, show_final_results }: Props = $props(); - let sorted_data = $derived(sortObjectbyValue(data)); - function sortObjectbyValue(obj: object) { - const ret = {}; - Object.keys(obj) - .sort((a, b) => obj[b] - obj[a]) - .forEach((s) => (ret[s] = obj[s])); - return ret; - } - - let player_names = $derived(Object.keys(sorted_data)); + let player_names = $derived(Object.keys(data).sort((a, b) => { + const scoreA = parseFloat(data[a]) || 0; + const scoreB = parseFloat(data[b]) || 0; + return scoreB - scoreA; + })); let player_count_or_five = $derived(player_names.length >= 5 ? 5 : player_names.length); @@ -61,13 +56,13 @@ SPDX-License-Identifier: MPL-2.0 {$t('play_page.final_result_rank', { place: i + 1, username: player, - points: sorted_data[player] + points: data[player] })}
{/if} {/each} - {#if sorted_data[username]} + {#if data[username]}{$t('play_page.your_score', { score: data[username] })}
diff --git a/frontend/src/lib/play/admin/results.svelte b/frontend/src/lib/play/admin/results.svelte index 12098cc..e02ea1a 100644 --- a/frontend/src/lib/play/admin/results.svelte +++ b/frontend/src/lib/play/admin/results.svelte @@ -29,16 +29,6 @@ SPDX-License-Identifier: MPL-2.0 let { data = $bindable(), question, new_data }: Props = $props(); - function sortObjectbyValue(obj: object) { - const ret = {}; - Object.keys(obj) - .sort((a, b) => obj[b] - obj[a]) - .forEach((s) => (ret[s] = obj[s])); - return ret; - } - - let sorted_data = $derived(sortObjectbyValue(data)); - // let data_by_username = {}; const group_username_by_score = (new_d: any[]): object => { @@ -50,7 +40,11 @@ SPDX-License-Identifier: MPL-2.0 }; let score_by_username = $derived(group_username_by_score(new_data)); - let player_names = $derived(Object.keys(sorted_data)); + let player_names = $derived(Object.keys(data).sort((a, b) => { + const scoreA = parseFloat(data[a]) || 0; + const scoreB = parseFloat(data[b]) || 0; + return scoreB - scoreA; + })); if (JSON.stringify(data) === '{}') { for (const i of new_data) { @@ -111,7 +105,7 @@ SPDX-License-Identifier: MPL-2.0