From df2deea3d68d534472ea2f0a26cba773cd897301 Mon Sep 17 00:00:00 2001
From: Wojciech Taisner <wtaisner@man.poznan.pl>
Date: Tue, 21 Sep 2021 14:01:16 +0200
Subject: [PATCH] NMAAS-1040 add sorting with semver comparator

---
 .../app-management-list/appmanagementlist.component.html    | 2 +-
 .../app-management-list/appmanagementlist.component.ts      | 6 ++++++
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/app/appmarket/appmanagement/app-management-list/appmanagementlist.component.html b/src/app/appmarket/appmanagement/app-management-list/appmanagementlist.component.html
index 2e24372c..47673803 100644
--- a/src/app/appmarket/appmanagement/app-management-list/appmanagementlist.component.html
+++ b/src/app/appmarket/appmanagement/app-management-list/appmanagementlist.component.html
@@ -42,7 +42,7 @@
           </span>
         </td>
       </tr>
-      <ng-template ngFor let-version [ngForOf]="app.versions">
+      <ng-template ngFor let-version [ngForOf]="app.versions.sort(appVersionCompare)">
         <tr *ngIf="versionRowVisible[i]" class="table-row" [routerLink]="['/admin/apps/edit/version', version?.appVersionId]">
           <td></td>
           <td></td>
diff --git a/src/app/appmarket/appmanagement/app-management-list/appmanagementlist.component.ts b/src/app/appmarket/appmanagement/app-management-list/appmanagementlist.component.ts
index f2191492..150488fd 100644
--- a/src/app/appmarket/appmanagement/app-management-list/appmanagementlist.component.ts
+++ b/src/app/appmarket/appmanagement/app-management-list/appmanagementlist.component.ts
@@ -7,6 +7,7 @@ import {AppChangeStateModalComponent} from '../app-change-state-modal/appchanges
 import {ApplicationVersion} from '../../../model/application-version';
 import {map} from 'rxjs/operators';
 import {ApplicationBase} from '../../../model/application-base';
+import * as semver from 'semver'
 
 @Component({
     selector: 'nmaas-appmanagementlist',
@@ -77,4 +78,9 @@ export class AppManagementListComponent implements OnInit {
         return this.versionRowVisible.reduce((prev: boolean, curr: boolean, i: number, array: boolean[]) => prev && curr);
     }
 
+    public appVersionCompare(a: ApplicationVersion, b: ApplicationVersion): number {
+        // defaults version that cannot be parsed to `0.0.0`
+        return semver.compare(semver.coerce(a.version) || '0.0.0', semver.coerce(b.version) || '0.0.0')
+    }
+
 }
-- 
GitLab