Skip to content
Snippets Groups Projects
Select Git revision
  • 6104497174f7e519d0bd68cbcdb0608979ec8819
  • main default
  • master
  • tests
  • HTMXMigration
  • StageToFront
  • RandomnessGeneration
  • StageImpl
8 results

Registrations.svelte

Blame
  • user avatar
    ForkBench authored
    61044971
    History
    Registrations.svelte 11.90 KiB
    <script lang="ts">
        import { onMount } from "svelte";
        import * as Models from "../../../bindings/changeme/astro/services/models";
        import * as Session from "../../../bindings/changeme/astro/services/session";
        import { SelectedCompetition } from "../../store";
        import { GenerateRandomPlayer } from "../../../bindings/changeme/astro/services/player";
        import swal from "sweetalert";
    
        let players: (Models.Player | null)[] = [];
        let filteredPlayers: (Models.Player | null)[] = [];
        let competition: Models.Competition | undefined;
        var playerNumber = 0;
    
        SelectedCompetition.subscribe((value) => {
            competition = value;
            loadPlayers();
        });
    
        async function loadPlayers() {
            if (competition === undefined) {
                return;
            }
    
            Session.GetAllPlayersFromCompetition(competition.CompetitionID).then(
                (result) => {
                    players = result;
                }
            );
        }
    
        onMount(async () => {
            await loadPlayers();
            sortBy = { key: "PlayerInitialRank", asc: true };
        });
    
        function getPlayerValueByKey(player: Models.Player | null, key: string) {
            if (player === null) {
                return "";
            }
    
            switch (key) {
                case "PlayerInitialRank":
                    return player.PlayerInitialRank;
                case "PlayerFirstname":
                    return player.PlayerFirstname;
                case "PlayerLastname":
                    return player.PlayerLastname;
                case "PlayerClub":
                    return player.PlayerClub;
                default:
                    return "";
            }
        }
    
        let sortBy = { key: "PlayerInitialRank", asc: true };
    
        $: players = players.sort((a, b) => {
            let aValue = getPlayerValueByKey(a, sortBy.key);
            let bValue = getPlayerValueByKey(b, sortBy.key);
            if (aValue === null || bValue === null) {
                return 0;
            }
            if (aValue < bValue) {
                return sortBy.asc ? -1 : 1;
            }
            if (aValue > bValue) {
                return sortBy.asc ? 1 : -1;
            }
            return 0;
        });