diff --git a/src/app/tab1/tab1.page.html b/src/app/tab1/tab1.page.html
index eabd2ca..771df59 100644
--- a/src/app/tab1/tab1.page.html
+++ b/src/app/tab1/tab1.page.html
@@ -24,11 +24,13 @@
Játékvezető
+ @if (serviceJudgeEnabled()) {
Adogatásbíró
+ }
@for (item of [].constructor(settings()?.numberOfCourts); track $index) {
@@ -58,6 +60,7 @@
}
+ @if (serviceJudgeEnabled()) {
+ }
- @if (umpireByCourt().get($index + 1) &&
- serviceJudgeByCourt().get($index + 1)) {
+ @if ( (umpireByCourt().get($index + 1) &&
+ serviceJudgeByCourt().get($index + 1)) ||
+ (umpireByCourt().get($index + 1) && !serviceJudgeEnabled()) ) {
@@ -90,9 +95,10 @@
size="large"
name="exit-outline">
- } @else if (!umpireByCourt().get($index + 1) &&
+ } @else if ((!umpireByCourt().get($index + 1) &&
!serviceJudgeByCourt().get($index + 1) && waitingUmpires().length &&
- waitingServiceJudges().length) {
+ waitingServiceJudges().length) || (!umpireByCourt().get($index + 1)
+ && waitingUmpires().length && !serviceJudgeEnabled())) {
-
+
Játékvezetők
+ @if (serviceJudgeEnabled()) {
Adogatásbírók
-
+ }
+
Pihenők
@@ -145,6 +153,7 @@
}
+ @if (serviceJudgeEnabled()) {
+ }
i + 1);
});
+ /**
+ * Is service judge functionality enabled in settings.
+ */
+ readonly serviceJudgeEnabled = computed(() => {
+ return this.settings()?.withServiceJudge ?? false;
+ });
+
dropToRest(event: CdkDragDrop) {
if (event.previousContainer === event.container) {
return;
@@ -378,7 +385,10 @@ export class Tab1Page {
const umpire = this.umpireByCourt().get(courtNo);
const serviceJudge = this.serviceJudgeByCourt().get(courtNo);
- if (typeof umpire === 'undefined' || typeof serviceJudge === 'undefined') {
+ if (
+ typeof umpire === 'undefined' ||
+ (typeof serviceJudge === 'undefined' && this.serviceJudgeEnabled())
+ ) {
return;
}
@@ -389,9 +399,9 @@ export class Tab1Page {
const alert = await this.alertController.create({
header: `Pálya ${courtNo}`,
- subHeader: 'Biztos leveszed őket pályáról?',
+ subHeader: `Biztos leveszed ${serviceJudge ? 'őket' : 'őt'} a pályáról?`,
cssClass: 'wide',
- message: `${this.fullnamePipe.transform(umpire)} - ${this.fullnamePipe.transform(serviceJudge)}`,
+ message: `${this.fullnamePipe.transform(umpire)} ${serviceJudge ? '- ' : ''} ${this.fullnamePipe.transform(serviceJudge)}`,
buttons: [
{
text: 'Nem',
@@ -401,7 +411,12 @@ export class Tab1Page {
text: 'Igen',
role: 'confirm',
handler: () => {
- this.removeUmpiresFromCourt(courtNo);
+ if (this.serviceJudgeEnabled()) {
+ this.removeUmpiresFromCourt(courtNo);
+ return;
+ }
+
+ this.removeUmpireFromCourt(courtNo);
}
}
]
@@ -410,6 +425,9 @@ export class Tab1Page {
await alert.present();
}
+ /**
+ * This is for removing both umpire and service judge from the court (when service judge is enabled).
+ */
private async removeUmpiresFromCourt(courtNo: number) {
const umpire = this.umpireByCourt().get(courtNo);
const serviceJudge = this.serviceJudgeByCourt().get(courtNo);
@@ -424,25 +442,46 @@ export class Tab1Page {
await this.waitingServiceJudgeService.add(umpire.id);
}
+ /**
+ * This is for removing 1 umpire only (when service judge is not enabled).
+ */
+ private async removeUmpireFromCourt(courtNo: number) {
+ const umpire = this.umpireByCourt().get(courtNo);
+
+ if (typeof umpire === 'undefined') {
+ return;
+ }
+
+ await this.courtUmpireService.removeByUmpireId(umpire.id);
+ await this.waitingUmpireService.add(umpire.id);
+ }
+
public async showAddConfirmation(courtNo: number) {
const umpire = await this.waitingUmpireService.getCurrentUmpire();
const serviceJudge =
await this.waitingServiceJudgeService.getCurrentUmpire();
- if (typeof umpire === 'undefined' || typeof serviceJudge === 'undefined') {
+ if (
+ typeof umpire === 'undefined' ||
+ (typeof serviceJudge === 'undefined' && this.serviceJudgeEnabled())
+ ) {
return;
}
if (!this.settings()?.showAlert) {
- this.addUmpiresToCourt(courtNo, umpire, serviceJudge);
+ if (this.serviceJudgeEnabled() && serviceJudge) {
+ this.addUmpiresToCourt(courtNo, umpire, serviceJudge);
+ return;
+ }
+ this.addUmpireToCourt(courtNo, umpire);
return;
}
const alert = await this.alertController.create({
header: `Pálya ${courtNo}`,
cssClass: 'wide',
- subHeader: 'Biztos pályára küldöd őket?',
- message: `${this.fullnamePipe.transform(umpire)} - ${this.fullnamePipe.transform(serviceJudge)}`,
+ subHeader: `Biztos pályára küldöd ${serviceJudge ? 'őket' : 'őt'}?`,
+ message: `${this.fullnamePipe.transform(umpire)} ${serviceJudge ? ' - ' : ''} ${this.fullnamePipe.transform(serviceJudge)}`,
buttons: [
{
text: 'Nem',
@@ -452,7 +491,11 @@ export class Tab1Page {
text: 'Igen',
role: 'confirm',
handler: () => {
- this.addUmpiresToCourt(courtNo, umpire, serviceJudge);
+ if (this.serviceJudgeEnabled() && serviceJudge) {
+ this.addUmpiresToCourt(courtNo, umpire, serviceJudge);
+ } else {
+ this.addUmpireToCourt(courtNo, umpire);
+ }
}
}
]
@@ -475,4 +518,9 @@ export class Tab1Page {
await this.waitingUmpireService.removeByUmpireId(umpire.id);
await this.waitingServiceJudgeService.removeByUmpireId(serviceJudge.id);
}
+
+ private async addUmpireToCourt(courtNo: number, umpire: Umpire) {
+ await this.courtUmpireService.save({ courtNo, umpireId: umpire.id });
+ await this.waitingUmpireService.removeByUmpireId(umpire.id);
+ }
}
diff --git a/src/app/tab3/tab3.page.ts b/src/app/tab3/tab3.page.ts
index 9192720..0fa797f 100644
--- a/src/app/tab3/tab3.page.ts
+++ b/src/app/tab3/tab3.page.ts
@@ -15,6 +15,8 @@ import {
import { SettingsService } from '../services/settings-service';
import { CourtUmpireService } from '../services/court.umpire.service';
import { CourtServiceJudgeService } from '../services/court.service.judge.service';
+import { CourtServiceJudge } from 'db';
+import { WaitingServiceJudgesService } from '../services/waiting-service-judges.service';
@Component({
selector: 'app-tab3',
@@ -38,6 +40,7 @@ export class Tab3Page {
readonly settingsService = inject(SettingsService);
readonly courtUmpireService = inject(CourtUmpireService);
readonly courtServiceJudgeService = inject(CourtServiceJudgeService);
+ readonly waitingServiceJudgeService = inject(WaitingServiceJudgesService);
readonly settings = this.settingsService.settings;
@@ -69,6 +72,17 @@ export class Tab3Page {
await this.settingsService.update({
withServiceJudge: event.detail.checked
});
+
+ if (!event.detail.checked) {
+ this.courtServiceJudgeService.umpires().map((csj: CourtServiceJudge) => {
+ this.courtServiceJudgeService.delete(csj.id);
+ });
+
+
+ this.waitingServiceJudgeService.waitingServiceJudges().map((wsj) => {
+ this.waitingServiceJudgeService.remove(wsj.id);
+ });
+ }
}
async updateShowAlert(event: CustomEvent): Promise {