feat(pilot): remove TOs from court and add them to the waiting list
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user