feat(pilot): remove TOs from court and add them to the waiting list

This commit is contained in:
2026-06-05 14:40:26 +02:00
parent 2fb8d34ec1
commit 63737e46eb
2 changed files with 87 additions and 4 deletions
+27 -3
View File
@@ -19,8 +19,17 @@
<ion-col [size]="1" class="ion-display-xl-none">
<ion-item [lines]="'none'">P</ion-item>
</ion-col>
<ion-col><ion-item [lines]="'none'">Játékvezető</ion-item></ion-col>
<ion-col><ion-item [lines]="'none'">Adogatásbíró</ion-item></ion-col>
<ion-col>
<ion-item [lines]="'none'">
<ion-label class="ion-text-center"> Játékvezető </ion-label>
</ion-item>
</ion-col>
<ion-col>
<ion-item [lines]="'none'">
<ion-label class="ion-text-center"> Adogatásbíró </ion-label>
</ion-item>
</ion-col>
<ion-col size="2" sizeLg="1"></ion-col>
</ion-row>
@for (item of [].constructor(settings()?.numberOfCourts); track $index) {
<ion-row>
@@ -68,6 +77,21 @@
}
</ion-list>
</ion-col>
<ion-col size="2" sizeLg="1">
<ion-list>
<ion-item lines="none">
<ion-button
[color]="'danger'"
[disabled]="!umpireByCourt().get($index + 1) || !serviceJudgeByCourt().get($index + 1)"
(click)="showRemoveConfirmation($index + 1)">
<ion-icon
slot="icon-only"
size="large"
name="exit-outline"></ion-icon>
</ion-button>
</ion-item>
</ion-list>
</ion-col>
</ion-row>
}
</ion-grid>
@@ -84,7 +108,7 @@
</ion-item>
</ion-col>
<ion-col [size]="4">
<ion-item color="primary">
<ion-item color="medium">
<ion-label class="ion-text-center"> Pihenők </ion-label>
</ion-item>
</ion-col>
+60 -1
View File
@@ -9,7 +9,10 @@ import {
IonRow,
IonList,
IonItem,
IonLabel
IonLabel,
IonIcon,
IonButton,
AlertController
} from '@ionic/angular/standalone';
import { SettingsService } from '../services/settings-service';
import { UmpireService } from '../services/umpire.service';
@@ -27,12 +30,17 @@ import {
import { CommonModule } from '@angular/common';
import { CourtUmpireService } from '../services/court.umpire.service';
import { CourtServiceJudgeService } from '../services/court.service.judge.service';
import { addIcons } from 'ionicons';
import { exitOutline } from 'ionicons/icons';
@Component({
selector: 'app-tab1',
templateUrl: 'tab1.page.html',
styleUrls: ['tab1.page.scss'],
providers: [FullnamePipe],
imports: [
IonButton,
IonIcon,
IonLabel,
IonItem,
IonList,
@@ -52,6 +60,10 @@ import { CourtServiceJudgeService } from '../services/court.service.judge.servic
]
})
export class Tab1Page {
constructor() {
addIcons({ exitOutline });
}
readonly settingsService = inject(SettingsService);
readonly umpireService = inject(UmpireService);
readonly waitingUmpireService = inject(WaitingUmpiresService);
@@ -59,6 +71,9 @@ export class Tab1Page {
readonly courtUmpireService = inject(CourtUmpireService);
readonly courtServiceJudgeService = inject(CourtServiceJudgeService);
private alertController = inject(AlertController);
private fullnamePipe = inject(FullnamePipe);
/**
* Raw signals from services
*/
@@ -358,4 +373,48 @@ export class Tab1Page {
): boolean => {
return drop.data.length === 0;
};
public async showRemoveConfirmation(courtNo: number) {
const umpire = this.umpireByCourt().get(courtNo);
const serviceJudge = this.serviceJudgeByCourt().get(courtNo);
if (typeof umpire === 'undefined' || typeof serviceJudge === 'undefined') {
return;
}
const alert = await this.alertController.create({
header: `Pálya ${courtNo}`,
subHeader: 'Biztos leveszed őket pályáról?',
message: `${this.fullnamePipe.transform(umpire)} - ${this.fullnamePipe.transform(serviceJudge)}`,
buttons: [
{
text: 'Nem',
role: 'cancel'
},
{
text: 'Igen',
role: 'confirm',
handler: () => {
this.removeUmpiresFromCourt(courtNo);
}
}
]
});
await alert.present();
}
private async removeUmpiresFromCourt(courtNo: number) {
const umpire = this.umpireByCourt().get(courtNo);
const serviceJudge = this.serviceJudgeByCourt().get(courtNo);
if (typeof umpire === 'undefined' || typeof serviceJudge === 'undefined') {
return;
}
await this.courtUmpireService.removeByUmpireId(umpire.id);
await this.courtServiceJudgeService.removeByUmpireId(serviceJudge.id);
await this.waitingUmpireService.add(serviceJudge.id);
await this.waitingServiceJudgeService.add(umpire.id);
}
}