diff --git a/TODO.txt b/TODO.txt index cf9bf4b..b51dfcd 100644 --- a/TODO.txt +++ b/TODO.txt @@ -32,11 +32,11 @@ Player-registrations: oude toernooien verbergen via knop Onderdeel afsluiten Wedstrijd opgave - Blessures + Invallers Titels pagina's Authenticatie Progress indicator tijdens communicatie backend - +Bij tellers rekening houden met invallers https://blog.shhdharmen.me/browser-storage-in-angular-ssr Won't do / later: diff --git a/src/app/components/player-display/player-display.component.scss b/src/app/components/player-display/player-display.component.scss new file mode 100644 index 0000000..9a06314 --- /dev/null +++ b/src/app/components/player-display/player-display.component.scss @@ -0,0 +1,4 @@ +.has-substitute { + text-decoration-line: underline; + text-decoration-style: dotted; +} diff --git a/src/app/components/player-display/player-display.component.ts b/src/app/components/player-display/player-display.component.ts new file mode 100644 index 0000000..b40c7a8 --- /dev/null +++ b/src/app/components/player-display/player-display.component.ts @@ -0,0 +1,42 @@ +import {Component, Input} from '@angular/core'; +import {Player} from '../../model/player'; +import {Event} from '../../model/event'; +import {Tournament} from '../../model/tournament'; +import {FullNamePipe} from '../../pipes/fullname-pipe'; +import {MatTooltip} from '@angular/material/tooltip'; + +@Component({ + selector: 'app-player-display', + standalone: true, + imports: [FullNamePipe, MatTooltip], + styleUrls: ['./player-display.component.scss'], + template: ` + @let substitute = getSubstituteForEvent(player, event); + + {{ substitute || (player | fullName) }} + + ` +}) +export class PlayerDisplayComponent { + @Input({ required: true }) player!: Player; + @Input({ required: true }) event!: Event; + @Input({ required: true }) tournament!: Tournament; + + getSubstituteForEvent(player: Player, event: Event): string | undefined { + const tournamentPlayer = this.tournament.tournamentPlayers.find( + tp => tp.playerId === player.id + ); + if (!tournamentPlayer) return undefined; + + const substitution = tournamentPlayer.substitutions.find( + s => s.event === event.type + ); + if (!substitution) return undefined; + + return this.tournament.tournamentPlayers.find( + p => p.id === substitution.substitute + )?.name; + } +} diff --git a/src/app/components/team-display/team-display.component.ts b/src/app/components/team-display/team-display.component.ts new file mode 100644 index 0000000..2a9ce7f --- /dev/null +++ b/src/app/components/team-display/team-display.component.ts @@ -0,0 +1,32 @@ +import {Component, Input} from '@angular/core'; +import {Event} from '../../model/event'; +import {Tournament} from '../../model/tournament'; +import {PlayerDisplayComponent} from '../player-display/player-display.component'; +import {Team} from "../../model/team"; + +@Component({ + selector: 'app-team-display', + standalone: true, + imports: [PlayerDisplayComponent], + template: ` + + + + @if (event.doublesEvent && team.player2) { + / + + + } + ` +}) +export class TeamDisplayComponent { + @Input({ required: true }) team!: Team; + @Input({ required: true }) event!: Event; + @Input({ required: true }) tournament!: Tournament; +} diff --git a/src/app/components/tournament-manage/tournament-manage.component.html b/src/app/components/tournament-manage/tournament-manage.component.html index 097fa67..a1b0708 100644 --- a/src/app/components/tournament-manage/tournament-manage.component.html +++ b/src/app/components/tournament-manage/tournament-manage.component.html @@ -255,39 +255,53 @@ @for (match of round.matches; track match.id) { - @if (playerHasSubstituteForEvent(match.team1.player1, event)) { - - {{ getSubstituteForEvent(match.team1.player1, event) }} - - } @else { - {{ match.team1.player1 | fullName }} - } - @if (event.doublesEvent && match.team1.player2 != null) { - - / {{ match.team1.player2 | fullName }} - - } + + - - {{ match.team2 | teamText }} + + + + } @if (round.drawnOut) { - Deze ronde uitgeloot: {{ round.drawnOut | teamText }} + + Deze ronde uitgeloot: {{ round.drawnOut | teamText }} + } + } @else if (round.status == 'IN_PROGRESS') { @for (match of round.matches; track match.id) { - + - + @for (match of round.matches; track match.id) { - + - +
{{ match.team1 | teamText }} + + + -{{ match.team2 | teamText }} + + + @if (match.status == 'NOT_STARTED') {
{{ match.team1 | teamText }} + + + -{{ match.team2 | teamText }} + + +
@for (game of match.games; track game.id) { diff --git a/src/app/components/tournament-manage/tournament-manage.component.scss b/src/app/components/tournament-manage/tournament-manage.component.scss index 0ef44cd..d4e93ab 100644 --- a/src/app/components/tournament-manage/tournament-manage.component.scss +++ b/src/app/components/tournament-manage/tournament-manage.component.scss @@ -39,7 +39,3 @@ td.w-fill { z-index: 1000 !important; } -.has-substitute { - text-decoration-line: underline; - text-decoration-style: dotted; -} diff --git a/src/app/components/tournament-manage/tournament-manage.component.ts b/src/app/components/tournament-manage/tournament-manage.component.ts index edf1126..b522343 100644 --- a/src/app/components/tournament-manage/tournament-manage.component.ts +++ b/src/app/components/tournament-manage/tournament-manage.component.ts @@ -34,6 +34,7 @@ import {HeaderService} from "../../service/header.service"; import {TournamentPlayersComponent} from "../tournament-players/tournament-players.component"; import {TournamentPlayer} from "../../model/tournamentPlayer"; import {MatTooltip} from "@angular/material/tooltip"; +import {TeamDisplayComponent} from "../team-display/team-display.component"; @Component({ selector: 'app-tournament-manage', @@ -64,6 +65,7 @@ import {MatTooltip} from "@angular/material/tooltip"; TournamentPlayersComponent, MatExpansionPanelActionRow, MatTooltip, + TeamDisplayComponent, ], providers: [ FullNamePipe, @@ -415,34 +417,6 @@ export class TournamentManageComponent implements OnInit, OnDestroy { return count; } - playerHasSubstituteForEvent(player: Player, event: Event) : boolean { - return this.getSubstituteForEvent(player, event) != undefined; - } - - getSubstituteForEvent(player: Player, event: Event) : string | undefined { - var tournamentPlayer = this.getTournamentPlayerFromPlayer(player); - if (tournamentPlayer === null) return undefined; - if (tournamentPlayer.name == 'Inge Brehler') console.log(tournamentPlayer.name); - - for (let substitution of tournamentPlayer.substitutions) { - if (substitution.event == event.type) { - var substitute = this.tournament.tournamentPlayers.find(p => p.id == substitution.substitute); - return substitute?.name; - } - } - return undefined; - } - - getTournamentPlayerFromPlayer(player: Player) : TournamentPlayer | null { - for (let tournamentPlayer of this.tournament.tournamentPlayers) { - if (tournamentPlayer.playerId == player.id) { - return tournamentPlayer; - } - } - - return null; - } - } class ActiveMatch { diff --git a/src/app/components/tournament-players/tournament-players.component.html b/src/app/components/tournament-players/tournament-players.component.html index 7f1400c..ac6c7b3 100644 --- a/src/app/components/tournament-players/tournament-players.component.html +++ b/src/app/components/tournament-players/tournament-players.component.html @@ -90,7 +90,7 @@