From 54f9b60ea449da59b756dd53da78ce7db8b35265 Mon Sep 17 00:00:00 2001 From: System Administrator Date: Wed, 1 Aug 2018 16:57:27 +0800 Subject: [PATCH] Fix access level can not sort Issue description: In project list page. User click sort according access level, it does not work. Fix: Remodify the compare method. --- .../list-project/list-project.component.ts | 2 +- src/ui_ng/src/app/shared/shared.utils.ts | 22 +++++++++++++++++-- 2 files changed, 21 insertions(+), 3 deletions(-) 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;