mirror of
https://github.com/goharbor/harbor.git
synced 2025-02-26 16:51:47 +01:00
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.
This commit is contained in:
parent
3c0bd20d7e
commit
54f9b60ea4
@ -58,7 +58,7 @@ export class ListProjectComponent implements OnDestroy {
|
|||||||
roleInfo = RoleInfo;
|
roleInfo = RoleInfo;
|
||||||
repoCountComparator: Comparator<Project> = new CustomComparator<Project>("repo_count", "number");
|
repoCountComparator: Comparator<Project> = new CustomComparator<Project>("repo_count", "number");
|
||||||
timeComparator: Comparator<Project> = new CustomComparator<Project>("creation_time", "date");
|
timeComparator: Comparator<Project> = new CustomComparator<Project>("creation_time", "date");
|
||||||
accessLevelComparator: Comparator<Project> = new CustomComparator<Project>("public", "number");
|
accessLevelComparator: Comparator<Project> = new CustomComparator<Project>("public", "string");
|
||||||
roleComparator: Comparator<Project> = new CustomComparator<Project>("current_user_role_id", "number");
|
roleComparator: Comparator<Project> = new CustomComparator<Project>("current_user_role_id", "number");
|
||||||
currentPage = 1;
|
currentPage = 1;
|
||||||
totalCount = 0;
|
totalCount = 0;
|
||||||
|
@ -143,8 +143,23 @@ export class CustomComparator<T> implements Comparator<T> {
|
|||||||
compare(a: { [key: string]: any | any[] }, b: { [key: string]: any | any[] }) {
|
compare(a: { [key: string]: any | any[] }, b: { [key: string]: any | any[] }) {
|
||||||
let comp = 0;
|
let comp = 0;
|
||||||
if (a && b) {
|
if (a && b) {
|
||||||
let fieldA = a[this.fieldName];
|
let fieldA, fieldB;
|
||||||
let fieldB = b[this.fieldName];
|
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) {
|
switch (this.type) {
|
||||||
case "number":
|
case "number":
|
||||||
comp = fieldB - fieldA;
|
comp = fieldB - fieldA;
|
||||||
@ -152,6 +167,9 @@ export class CustomComparator<T> implements Comparator<T> {
|
|||||||
case "date":
|
case "date":
|
||||||
comp = new Date(fieldB).getTime() - new Date(fieldA).getTime();
|
comp = new Date(fieldB).getTime() - new Date(fieldA).getTime();
|
||||||
break;
|
break;
|
||||||
|
case "string":
|
||||||
|
comp = fieldB.localeCompare(fieldA);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return comp;
|
return comp;
|
||||||
|
Loading…
Reference in New Issue
Block a user