From 808d951c1d9546c2b90a9622a175d5e785904939 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20H=C3=B6rner?= Date: Mon, 26 May 2025 20:17:53 +0200 Subject: [PATCH 1/9] improvements pt 1 --- .../document-config-match-plan.component.ts | 2 +- .../document-config-receipts.component.ts | 2 +- .../document-manager.component.ts | 8 +-- .../duration-picker.component.ts | 2 +- .../image-chooser/image-chooser.component.ts | 2 +- .../match-tree/match-tree.component.ts | 2 +- .../rename-dialog/rename-dialog.component.ts | 2 +- .../validation-error-dialog.component.html | 11 +++- .../validation-error-dialog.component.ts | 6 +- .../configure-tournament.component.ts | 55 +++++++++++-------- .../create-tournament.component.ts | 2 +- .../create-venue/create-venue.component.ts | 2 +- .../edit-match-plan.component.ts | 2 +- .../folder-statistics.component.ts | 24 ++++---- .../folder-timetable.component.ts | 15 ++--- .../view-organization.component.ts | 2 +- .../view-tournament.component.ts | 11 ++-- .../app/portal/pipes/translate-date.pipe.ts | 12 ++-- .../Client/src/app/portal/portal.component.ts | 2 +- src/Turnierplan.App/Dockerfile | 6 +- .../SetDocumentConfigurationEndpoint.cs | 2 +- .../CreateOrganizationEndpoint.cs | 2 - 22 files changed, 89 insertions(+), 85 deletions(-) diff --git a/src/Turnierplan.App/Client/src/app/portal/components/document-config-match-plan/document-config-match-plan.component.ts b/src/Turnierplan.App/Client/src/app/portal/components/document-config-match-plan/document-config-match-plan.component.ts index acc8f89c..a3157610 100644 --- a/src/Turnierplan.App/Client/src/app/portal/components/document-config-match-plan/document-config-match-plan.component.ts +++ b/src/Turnierplan.App/Client/src/app/portal/components/document-config-match-plan/document-config-match-plan.component.ts @@ -15,7 +15,7 @@ export class DocumentConfigMatchPlanComponent extends DocumentConfigComponent(); + private readonly destroyed$ = new Subject(); constructor(formBuilder: FormBuilder, @Inject(CURRENT_CONFIGURATION) config: MatchPlanDocumentConfiguration) { super(); diff --git a/src/Turnierplan.App/Client/src/app/portal/components/document-config-receipts/document-config-receipts.component.ts b/src/Turnierplan.App/Client/src/app/portal/components/document-config-receipts/document-config-receipts.component.ts index 2c4f1155..4df6d873 100644 --- a/src/Turnierplan.App/Client/src/app/portal/components/document-config-receipts/document-config-receipts.component.ts +++ b/src/Turnierplan.App/Client/src/app/portal/components/document-config-receipts/document-config-receipts.component.ts @@ -111,7 +111,7 @@ export class DocumentConfigReceiptsComponent extends DocumentConfigComponent +a - +b); } protected removeReducedAmountEntry(amountKey: string): void { diff --git a/src/Turnierplan.App/Client/src/app/portal/components/document-manager/document-manager.component.ts b/src/Turnierplan.App/Client/src/app/portal/components/document-manager/document-manager.component.ts index 2f4d512e..f5ea0d89 100644 --- a/src/Turnierplan.App/Client/src/app/portal/components/document-manager/document-manager.component.ts +++ b/src/Turnierplan.App/Client/src/app/portal/components/document-manager/document-manager.component.ts @@ -41,7 +41,7 @@ export class DocumentManagerComponent { protected currentlyLoadingPreview?: string; protected currentlyUpdatingName?: string; - private configComponents = new Map>>(); + private readonly configComponents = new Map>>(); constructor( private readonly injector: Injector, @@ -67,7 +67,7 @@ export class DocumentManagerComponent { return; } - const configComponent = this.configComponents.get(document.type as DocumentType); + const configComponent = this.configComponents.get(document.type); if (configComponent === undefined) { return; } @@ -204,7 +204,7 @@ export class DocumentManagerComponent { } private getDocumentConfig(document: DocumentDto): Observable { - switch (document.type as DocumentType) { + switch (document.type) { case DocumentType.MatchPlan: return this.documentService.getMatchPlanDocumentConfiguration({ id: document.id }); case DocumentType.Receipts: @@ -215,7 +215,7 @@ export class DocumentManagerComponent { } private getDocumentConfigSaveFunction(document: DocumentDto): (config: DocumentConfiguration) => Observable { - switch (document.type as DocumentType) { + switch (document.type) { case DocumentType.MatchPlan: return (config) => this.documentService.setMatchPlanDocumentConfiguration({ id: document.id, body: config as MatchPlanDocumentConfiguration }); diff --git a/src/Turnierplan.App/Client/src/app/portal/components/duration-picker/duration-picker.component.ts b/src/Turnierplan.App/Client/src/app/portal/components/duration-picker/duration-picker.component.ts index 7901fb27..26507705 100644 --- a/src/Turnierplan.App/Client/src/app/portal/components/duration-picker/duration-picker.component.ts +++ b/src/Turnierplan.App/Client/src/app/portal/components/duration-picker/duration-picker.component.ts @@ -17,7 +17,7 @@ export class DurationPickerComponent { public set duration(value: string) { // The regex matches duration strings from the .NET TimeSpan class. This allows for the 'days' value // to be set, however the resulting minutes/seconds is clamped to be at most 23h:59m:59s - const match = value.match(/^(?:(?\d+)\.)?(?\d{2}):(?\d{2}):(?\d{2})(?:\.\d{7})?$/); + const match = /^(?:(?\d+)\.)?(?\d{2}):(?\d{2}):(?\d{2})(?:\.\d{7})?$/.exec(value); if (match?.groups) { let hours = +match.groups['h']; diff --git a/src/Turnierplan.App/Client/src/app/portal/components/image-chooser/image-chooser.component.ts b/src/Turnierplan.App/Client/src/app/portal/components/image-chooser/image-chooser.component.ts index 7f865d7d..1b48bd17 100644 --- a/src/Turnierplan.App/Client/src/app/portal/components/image-chooser/image-chooser.component.ts +++ b/src/Turnierplan.App/Client/src/app/portal/components/image-chooser/image-chooser.component.ts @@ -111,7 +111,7 @@ export class ImageChooserComponent { next: () => { if (deleteImageId === this.currentImageId) { // Close modal with undefined to trigger re-load of tournament page - this.modal.close(undefined); + this.modal.close(); } else { this.loadImages(); } diff --git a/src/Turnierplan.App/Client/src/app/portal/components/match-tree/match-tree.component.ts b/src/Turnierplan.App/Client/src/app/portal/components/match-tree/match-tree.component.ts index a8b59b5c..56628a65 100644 --- a/src/Turnierplan.App/Client/src/app/portal/components/match-tree/match-tree.component.ts +++ b/src/Turnierplan.App/Client/src/app/portal/components/match-tree/match-tree.component.ts @@ -97,7 +97,7 @@ export class MatchTreeComponent implements OnChanges, AfterViewInit { for (const match of currentColumnMatches) { for (const teamSelector of [match.teamSelectorKeyA, match.teamSelectorKeyB]) { - if (!(teamSelector.charAt(0) === 'W' || teamSelector.charAt(0) === 'L')) { + if (!(teamSelector.startsWith('W') || teamSelector.startsWith('L'))) { dependentMatchIds.push(undefined); continue; } diff --git a/src/Turnierplan.App/Client/src/app/portal/components/rename-dialog/rename-dialog.component.ts b/src/Turnierplan.App/Client/src/app/portal/components/rename-dialog/rename-dialog.component.ts index bc8686b8..33bd5c66 100644 --- a/src/Turnierplan.App/Client/src/app/portal/components/rename-dialog/rename-dialog.component.ts +++ b/src/Turnierplan.App/Client/src/app/portal/components/rename-dialog/rename-dialog.component.ts @@ -55,7 +55,7 @@ export class RenameDialogComponent { } } else if (sanitized.length === 0 && this.allowReset) { if (sanitizedInitial.length > 0) { - this.modal.close(undefined); + this.modal.close(); } else { this.modal.dismiss(); } diff --git a/src/Turnierplan.App/Client/src/app/portal/components/validation-error-dialog/validation-error-dialog.component.html b/src/Turnierplan.App/Client/src/app/portal/components/validation-error-dialog/validation-error-dialog.component.html index aa5b005a..1bc29fde 100644 --- a/src/Turnierplan.App/Client/src/app/portal/components/validation-error-dialog/validation-error-dialog.component.html +++ b/src/Turnierplan.App/Client/src/app/portal/components/validation-error-dialog/validation-error-dialog.component.html @@ -5,8 +5,15 @@