diff --git a/src/ui_ng/src/app/project/list-project/list-project.component.ts b/src/ui_ng/src/app/project/list-project/list-project.component.ts index f920680a8..d7bf84e3e 100644 --- a/src/ui_ng/src/app/project/list-project/list-project.component.ts +++ b/src/ui_ng/src/app/project/list-project/list-project.component.ts @@ -58,7 +58,7 @@ export class ListProjectComponent implements OnDestroy { roleInfo = RoleInfo; repoCountComparator: Comparator = new CustomComparator("repo_count", "number"); timeComparator: Comparator = new CustomComparator("creation_time", "date"); - accessLevelComparator: Comparator = new CustomComparator("public", "number"); + accessLevelComparator: Comparator = new CustomComparator("public", "string"); roleComparator: Comparator = new CustomComparator("current_user_role_id", "number"); currentPage = 1; totalCount = 0; diff --git a/src/ui_ng/src/app/shared/shared.utils.ts b/src/ui_ng/src/app/shared/shared.utils.ts index f6c93a9d1..63a879820 100644 --- a/src/ui_ng/src/app/shared/shared.utils.ts +++ b/src/ui_ng/src/app/shared/shared.utils.ts @@ -143,8 +143,23 @@ export class CustomComparator implements Comparator { compare(a: { [key: string]: any | any[] }, b: { [key: string]: any | any[] }) { let comp = 0; if (a && b) { - let fieldA = a[this.fieldName]; - let fieldB = b[this.fieldName]; + let fieldA, fieldB; + for (let key of Object.keys(a)) { + if (key === this.fieldName) { + fieldA = a[key]; + fieldB = b[key]; + break; + } else if (typeof a[key] === 'object') { + let insideObject = a[key]; + for (let insideKey in insideObject) { + if (insideKey === this.fieldName) { + fieldA = insideObject[insideKey]; + fieldB = b[key][insideKey]; + break; + } + } + } + } switch (this.type) { case "number": comp = fieldB - fieldA; @@ -152,6 +167,9 @@ export class CustomComparator implements Comparator { case "date": comp = new Date(fieldB).getTime() - new Date(fieldA).getTime(); break; + case "string": + comp = fieldB.localeCompare(fieldA); + break; } } return comp;