From 7a03c63a15fab69de26b97c2bdaa5b4e2ee3c123 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Ml=C3=A1dek?= Date: Wed, 1 Dec 2021 20:13:01 +0100 Subject: [PATCH] [ui] sort resolved before unresolved --- ui/src/components/widgets/Table.svelte | 38 ++++++++++++++++---------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/ui/src/components/widgets/Table.svelte b/ui/src/components/widgets/Table.svelte index ee2b59e..c527782 100644 --- a/ui/src/components/widgets/Table.svelte +++ b/ui/src/components/widgets/Table.svelte @@ -57,19 +57,23 @@ } // Sorting - let resolvedAddresses: { [key: string]: string } = {}; + let sortKeys: { [key: string]: string } = {}; $: sortedAttributes = attributes .concat() .sort(([_, aEntry], [__, bEntry]) => { if ( - resolvedAddresses[aEntry.value.c] === undefined || - resolvedAddresses[bEntry.value.c] === undefined + sortKeys[aEntry.value.c] === undefined || + sortKeys[bEntry.value.c] === undefined ) { - return aEntry.value.c.localeCompare(bEntry.value.c); + if (sortKeys[aEntry.value.c] && !sortKeys[bEntry.value.c]) { + return -1; + } else if (!sortKeys[aEntry.value.c] && sortKeys[bEntry.value.c]) { + return 1; + } else { + return aEntry.value.c.localeCompare(bEntry.value.c); + } } else { - return resolvedAddresses[aEntry.value.c].localeCompare( - resolvedAddresses[bEntry.value.c] - ); + return sortKeys[aEntry.value.c].localeCompare(sortKeys[bEntry.value.c]); } }) .sort(([_, aEntry], [__, bEntry]) => { @@ -77,14 +81,18 @@ }) .sort(([_, aEntry], [__, bEntry]) => { if ( - resolvedAddresses[aEntry.entity] === undefined || - resolvedAddresses[bEntry.entity] === undefined + sortKeys[aEntry.entity] === undefined || + sortKeys[bEntry.entity] === undefined ) { - return aEntry.entity.localeCompare(bEntry.entity); + if (sortKeys[aEntry.entity] && !sortKeys[bEntry.entity]) { + return -1; + } else if (!sortKeys[aEntry.entity] && sortKeys[bEntry.entity]) { + return 1; + } else { + return aEntry.entity.localeCompare(bEntry.entity); + } } else { - return resolvedAddresses[aEntry.entity].localeCompare( - resolvedAddresses[bEntry.entity] - ); + return sortKeys[aEntry.entity].localeCompare(sortKeys[bEntry.entity]); } }); @@ -162,7 +170,7 @@ link address={entry.entity} on:resolved={(event) => { - resolvedAddresses[entry.entity] = event.detail[0]; + sortKeys[entry.entity] = event.detail[0]; }} /> @@ -189,7 +197,7 @@ address={entry.value.c} resolve={Boolean(resolve[id]) || true} on:resolved={(event) => { - resolvedAddresses[entry.value.c] = event.detail[0]; + sortKeys[entry.value.c] = event.detail[0]; }} /> {:else}