From 12871ef7d24f170d4dbe021433ec79a8b1f89c5a Mon Sep 17 00:00:00 2001 From: Richard Toth Date: Sun, 31 May 2026 09:52:11 +0200 Subject: [PATCH] feat(umpires): move umpires between any lists --- .../services/court.service.judge.service.ts | 13 +++++ src/app/tab1/tab1.page.html | 21 +++++-- src/app/tab1/tab1.page.ts | 55 ++++++++++--------- 3 files changed, 58 insertions(+), 31 deletions(-) diff --git a/src/app/services/court.service.judge.service.ts b/src/app/services/court.service.judge.service.ts index c52c40c..38c8241 100644 --- a/src/app/services/court.service.judge.service.ts +++ b/src/app/services/court.service.judge.service.ts @@ -45,4 +45,17 @@ export class CourtServiceJudgeService { async delete(id: number): Promise { await db.courtServiceJudges.delete(id); } + + async removeByUmpireId(umpireId: number): Promise { + const item = await db.courtServiceJudges + .where('umpireId') + .equals(umpireId) + .first(); + + if (!item?.id) { + return; + } + + await db.courtServiceJudges.delete(item.id); + } } diff --git a/src/app/tab1/tab1.page.html b/src/app/tab1/tab1.page.html index 9a850fb..1d36256 100644 --- a/src/app/tab1/tab1.page.html +++ b/src/app/tab1/tab1.page.html @@ -35,9 +35,8 @@ cdkDropList [id]="`court-umpire-${$index + 1}`" cdkDropListSortingDisabled - [cdkDropListData]="waitingServiceJudges()" - (cdkDropListDropped)="dropToUmpire($event, $index + 1)" - [cdkDropListConnectedTo]="['list-on-rest', 'list-waiting-umpires']"> + [cdkDropListData]="courtUmpires()" + (cdkDropListDropped)="dropToUmpire($event, $index + 1)"> @if (umpireByCourt().get($index + 1); as umpire) { @@ -48,7 +47,21 @@ - aaa + + @if (serviceJudgeByCourt().get($index + 1); as umpire) { + + + {{ umpire | fullname }} + + + } + } diff --git a/src/app/tab1/tab1.page.ts b/src/app/tab1/tab1.page.ts index 4c11e41..a403442 100644 --- a/src/app/tab1/tab1.page.ts +++ b/src/app/tab1/tab1.page.ts @@ -261,18 +261,7 @@ export class Tab1Page { } else { const comingFrom = event.previousContainer.id; const umpireToMove = event.item.data; - if ('list-waiting-service-judges' === comingFrom) { - // Remove from waiting service judges - this.waitingServiceJudgeService.removeByUmpireId(umpireToMove.id); - } - - if ('list-waiting-umpires' === comingFrom) { - this.waitingUmpireService.removeByUmpireId(umpireToMove.id); - } - - if (comingFrom.startsWith('court-umpire')) { - this.courtUmpireService.removeByUmpireId(umpireToMove.id); - } + this.removeFromOriginalPlace(umpireToMove, comingFrom); } } @@ -284,13 +273,7 @@ export class Tab1Page { const umpireToMove = event.item.data; this.waitingServiceJudgeService.add(umpireToMove.id); - if ('list-waiting-umpires' === comingFrom) { - this.waitingUmpireService.removeByUmpireId(umpireToMove.id); - } - - if (comingFrom.startsWith('court-umpire')) { - this.courtUmpireService.removeByUmpireId(umpireToMove.id); - } + this.removeFromOriginalPlace(umpireToMove, comingFrom); } } @@ -308,14 +291,7 @@ export class Tab1Page { const umpireToMove = event.item.data; this.waitingUmpireService.add(umpireToMove.id); - if ('list-waiting-service-judges' === comingFrom) { - // Remove from waiting service judges - this.waitingServiceJudgeService.removeByUmpireId(umpireToMove.id); - } - - if (comingFrom.startsWith('court-umpire')) { - this.courtUmpireService.removeByUmpireId(umpireToMove.id); - } + this.removeFromOriginalPlace(umpireToMove, comingFrom); } } @@ -326,6 +302,23 @@ export class Tab1Page { const umpireToMove = event.item.data; this.courtUmpireService.save({ umpireId: umpireToMove.id, courtNo }); + this.removeFromOriginalPlace(umpireToMove, comingFrom); + } + + dropToServiceJudge(event: CdkDragDrop, courtNo: number) { + // TODO: stop dropping if there is already another umpire + + const comingFrom = event.previousContainer.id; + const umpireToMove = event.item.data; + this.courtServiceJudgeService.save({ umpireId: umpireToMove.id, courtNo }); + + this.removeFromOriginalPlace(umpireToMove, comingFrom); + } + + private removeFromOriginalPlace( + umpireToMove: Umpire, + comingFrom: string + ): void { if ('list-waiting-service-judges' === comingFrom) { this.waitingServiceJudgeService.removeByUmpireId(umpireToMove.id); } @@ -333,5 +326,13 @@ export class Tab1Page { if ('list-waiting-umpires' === comingFrom) { this.waitingUmpireService.removeByUmpireId(umpireToMove.id); } + + if (comingFrom.startsWith('court-umpire')) { + this.courtUmpireService.removeByUmpireId(umpireToMove.id); + } + + if (comingFrom.startsWith('court-service-judge')) { + this.courtServiceJudgeService.removeByUmpireId(umpireToMove.id); + } } }