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-col [size]="1" class="ion-display-xl-none">
|
||||||
<ion-item [lines]="'none'">P</ion-item>
|
<ion-item [lines]="'none'">P</ion-item>
|
||||||
</ion-col>
|
</ion-col>
|
||||||
<ion-col><ion-item [lines]="'none'">Játékvezető</ion-item></ion-col>
|
<ion-col>
|
||||||
<ion-col><ion-item [lines]="'none'">Adogatásbíró</ion-item></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>
|
</ion-row>
|
||||||
@for (item of [].constructor(settings()?.numberOfCourts); track $index) {
|
@for (item of [].constructor(settings()?.numberOfCourts); track $index) {
|
||||||
<ion-row>
|
<ion-row>
|
||||||
@@ -68,6 +77,21 @@
|
|||||||
}
|
}
|
||||||
</ion-list>
|
</ion-list>
|
||||||
</ion-col>
|
</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-row>
|
||||||
}
|
}
|
||||||
</ion-grid>
|
</ion-grid>
|
||||||
@@ -84,7 +108,7 @@
|
|||||||
</ion-item>
|
</ion-item>
|
||||||
</ion-col>
|
</ion-col>
|
||||||
<ion-col [size]="4">
|
<ion-col [size]="4">
|
||||||
<ion-item color="primary">
|
<ion-item color="medium">
|
||||||
<ion-label class="ion-text-center"> Pihenők </ion-label>
|
<ion-label class="ion-text-center"> Pihenők </ion-label>
|
||||||
</ion-item>
|
</ion-item>
|
||||||
</ion-col>
|
</ion-col>
|
||||||
|
|||||||
@@ -9,7 +9,10 @@ import {
|
|||||||
IonRow,
|
IonRow,
|
||||||
IonList,
|
IonList,
|
||||||
IonItem,
|
IonItem,
|
||||||
IonLabel
|
IonLabel,
|
||||||
|
IonIcon,
|
||||||
|
IonButton,
|
||||||
|
AlertController
|
||||||
} from '@ionic/angular/standalone';
|
} from '@ionic/angular/standalone';
|
||||||
import { SettingsService } from '../services/settings-service';
|
import { SettingsService } from '../services/settings-service';
|
||||||
import { UmpireService } from '../services/umpire.service';
|
import { UmpireService } from '../services/umpire.service';
|
||||||
@@ -27,12 +30,17 @@ import {
|
|||||||
import { CommonModule } from '@angular/common';
|
import { CommonModule } from '@angular/common';
|
||||||
import { CourtUmpireService } from '../services/court.umpire.service';
|
import { CourtUmpireService } from '../services/court.umpire.service';
|
||||||
import { CourtServiceJudgeService } from '../services/court.service.judge.service';
|
import { CourtServiceJudgeService } from '../services/court.service.judge.service';
|
||||||
|
import { addIcons } from 'ionicons';
|
||||||
|
import { exitOutline } from 'ionicons/icons';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-tab1',
|
selector: 'app-tab1',
|
||||||
templateUrl: 'tab1.page.html',
|
templateUrl: 'tab1.page.html',
|
||||||
styleUrls: ['tab1.page.scss'],
|
styleUrls: ['tab1.page.scss'],
|
||||||
|
providers: [FullnamePipe],
|
||||||
imports: [
|
imports: [
|
||||||
|
IonButton,
|
||||||
|
IonIcon,
|
||||||
IonLabel,
|
IonLabel,
|
||||||
IonItem,
|
IonItem,
|
||||||
IonList,
|
IonList,
|
||||||
@@ -52,6 +60,10 @@ import { CourtServiceJudgeService } from '../services/court.service.judge.servic
|
|||||||
]
|
]
|
||||||
})
|
})
|
||||||
export class Tab1Page {
|
export class Tab1Page {
|
||||||
|
constructor() {
|
||||||
|
addIcons({ exitOutline });
|
||||||
|
}
|
||||||
|
|
||||||
readonly settingsService = inject(SettingsService);
|
readonly settingsService = inject(SettingsService);
|
||||||
readonly umpireService = inject(UmpireService);
|
readonly umpireService = inject(UmpireService);
|
||||||
readonly waitingUmpireService = inject(WaitingUmpiresService);
|
readonly waitingUmpireService = inject(WaitingUmpiresService);
|
||||||
@@ -59,6 +71,9 @@ export class Tab1Page {
|
|||||||
readonly courtUmpireService = inject(CourtUmpireService);
|
readonly courtUmpireService = inject(CourtUmpireService);
|
||||||
readonly courtServiceJudgeService = inject(CourtServiceJudgeService);
|
readonly courtServiceJudgeService = inject(CourtServiceJudgeService);
|
||||||
|
|
||||||
|
private alertController = inject(AlertController);
|
||||||
|
private fullnamePipe = inject(FullnamePipe);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Raw signals from services
|
* Raw signals from services
|
||||||
*/
|
*/
|
||||||
@@ -358,4 +373,48 @@ export class Tab1Page {
|
|||||||
): boolean => {
|
): boolean => {
|
||||||
return drop.data.length === 0;
|
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