diff --git a/src/app/core/service-list/service-list.component.ts b/src/app/core/service-list/service-list.component.ts index 305c9d1cc260398329c9b767f160d2df98f0eddb..1891be66f32f3f6bfb69270659e2ae0af49d4b5c 100644 --- a/src/app/core/service-list/service-list.component.ts +++ b/src/app/core/service-list/service-list.component.ts @@ -72,7 +72,7 @@ export class ServiceListComponent implements OnInit { ngOnInit(): void { this.servicesService.listServices().subscribe((s) => { if (s) { - this.services = s; + this.services = this.orderServices(s); } }); this.authService.userData$.subscribe((user) => { @@ -80,6 +80,22 @@ export class ServiceListComponent implements OnInit { }); } + /** + * Sort services. First by status, then by name + * @param services unordered list of services + * @returns ordered list of services + */ + orderServices(services: Service[]): Service[] { + if (!services) { + return []; + } + services.sort((a, b) => a.isOkay > b.isOkay ? 1 : a.isOkay === b.isOkay ? 0 : -1); + let nameCompare = (a, b) => a.name.localeCompare(b.name, "hu"); + let sortedFailingServices = services.filter(s => s.isOkay === false).sort(nameCompare); + let sortedHealthyServices = services.filter(s => s.isOkay === true).sort(nameCompare); + return sortedFailingServices.concat(sortedHealthyServices); + } + /** * Prevent unnecessary rerenders */