From 5fa38e202f941a4a8506de855c447350025f1df9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Ml=C3=A1dek?= Date: Sun, 23 Apr 2023 16:42:52 +0200 Subject: [PATCH] fix: sort attributes by label too --- webui/src/components/widgets/EntryList.svelte | 4 ++-- webui/src/util/sort.ts | 10 ++++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/webui/src/components/widgets/EntryList.svelte b/webui/src/components/widgets/EntryList.svelte index 62ca4e4..2d7e44b 100644 --- a/webui/src/components/widgets/EntryList.svelte +++ b/webui/src/components/widgets/EntryList.svelte @@ -109,8 +109,8 @@ function sortEntries() { sortedEntries = orderByValue - ? entityValueSort(entries, sortKeys) - : defaultEntitySort(entries, sortKeys); + ? entityValueSort(entries, Object.assign(sortKeys, $attributeLabels)) + : defaultEntitySort(entries, Object.assign(sortKeys, $attributeLabels)); } $: { diff --git a/webui/src/util/sort.ts b/webui/src/util/sort.ts index bcdb19d..f426292 100644 --- a/webui/src/util/sort.ts +++ b/webui/src/util/sort.ts @@ -45,9 +45,11 @@ export function sortByValueLength(entries: UpEntry[]) { }); } -export function sortByAttribute(entries: UpEntry[]): void { +export function sortByAttribute(entries: UpEntry[], sortKeys: SortKeys): void { entries.sort((aEntry, bEntry) => { - return aEntry.attribute.localeCompare(bEntry.attribute); + const aResolved = (sortKeys[aEntry.attribute] || [])[0] || aEntry.attribute; + const bResolved = (sortKeys[bEntry.attribute] || [])[0] || bEntry.attribute; + return aResolved.localeCompare(bResolved); }); } @@ -82,7 +84,7 @@ export function defaultEntitySort( const result = entries.concat(); sortByValue(result, sortKeys); sortByValueLength(result); - sortByAttribute(result); + sortByAttribute(result, sortKeys); sortByEntity(result, sortKeys); return result; } @@ -93,7 +95,7 @@ export function entityValueSort( ): UpEntry[] { const result = entries.concat(); sortByEntity(result, sortKeys); - sortByAttribute(result); + sortByAttribute(result, sortKeys); sortByValueLength(result); sortByValue(result, sortKeys); return result;