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 c8b44897..ffed0b04 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 @@ -188,6 +188,7 @@ export class DocumentManagerComponent { const document = this.documents.find((x) => x.id === id); if (document) { document.name = name; + this.sortDocuments(); } this.currentlyUpdatingName = undefined; }, @@ -197,6 +198,16 @@ export class DocumentManagerComponent { }); } + private sortDocuments(): void { + this.documents = [...this.documents].sort((a, b) => { + const nameComparison = a.name.localeCompare(b.name); + if (nameComparison !== 0) { + return nameComparison; + } + return new Date(a.lastModifiedAt).getTime() - new Date(b.lastModifiedAt).getTime(); + }); + } + protected deleteDocument(id: string): void { if (id === this.currentlyViewedDocumentId) { this.displayPdfViewer = false; diff --git a/src/Turnierplan.App/Client/src/app/portal/pages/view-tournament/view-tournament.component.ts b/src/Turnierplan.App/Client/src/app/portal/pages/view-tournament/view-tournament.component.ts index b74b4f72..135f4d39 100644 --- a/src/Turnierplan.App/Client/src/app/portal/pages/view-tournament/view-tournament.component.ts +++ b/src/Turnierplan.App/Client/src/app/portal/pages/view-tournament/view-tournament.component.ts @@ -255,7 +255,7 @@ export class ViewTournamentComponent implements OnInit, OnDestroy { this.turnierplanApi.invoke(getDocuments, { tournamentId: this.tournament.id }).subscribe({ next: (documents) => { this.documents = documents ?? []; - this.documents.sort((a, b) => a.id.localeCompare(b.id)); + this.sortDocuments(); this.isLoadingDocuments = false; }, error: (error) => { @@ -888,11 +888,24 @@ export class ViewTournamentComponent implements OnInit, OnDestroy { return this.turnierplanApi.invoke(getDocuments, { tournamentId: this.tournament.id }).pipe( tap((result) => { this.documents = result; - this.documents.sort((a, b) => a.id.localeCompare(b.id)); + this.sortDocuments(); }) ); } + private sortDocuments(): void { + if (!this.documents) { + return; + } + this.documents = [...this.documents].sort((a, b) => { + const nameComparison = a.name.localeCompare(b.name); + if (nameComparison !== 0) { + return nameComparison; + } + return new Date(a.lastModifiedAt).getTime() - new Date(b.lastModifiedAt).getTime(); + }); + } + private setTournament(tournament: TournamentDto | undefined): void { this.tournament = tournament; this.titleService.setTitleFrom(tournament);