[ui] sort resolved before unresolved

feat/vaults
Tomáš Mládek 2021-12-01 20:13:01 +01:00
parent 15f39d8cc5
commit 7a03c63a15
1 changed files with 23 additions and 15 deletions

View File

@ -57,19 +57,23 @@
} }
// Sorting // Sorting
let resolvedAddresses: { [key: string]: string } = {}; let sortKeys: { [key: string]: string } = {};
$: sortedAttributes = attributes $: sortedAttributes = attributes
.concat() .concat()
.sort(([_, aEntry], [__, bEntry]) => { .sort(([_, aEntry], [__, bEntry]) => {
if ( if (
resolvedAddresses[aEntry.value.c] === undefined || sortKeys[aEntry.value.c] === undefined ||
resolvedAddresses[bEntry.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 { } else {
return resolvedAddresses[aEntry.value.c].localeCompare( return sortKeys[aEntry.value.c].localeCompare(sortKeys[bEntry.value.c]);
resolvedAddresses[bEntry.value.c]
);
} }
}) })
.sort(([_, aEntry], [__, bEntry]) => { .sort(([_, aEntry], [__, bEntry]) => {
@ -77,14 +81,18 @@
}) })
.sort(([_, aEntry], [__, bEntry]) => { .sort(([_, aEntry], [__, bEntry]) => {
if ( if (
resolvedAddresses[aEntry.entity] === undefined || sortKeys[aEntry.entity] === undefined ||
resolvedAddresses[bEntry.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 { } else {
return resolvedAddresses[aEntry.entity].localeCompare( return sortKeys[aEntry.entity].localeCompare(sortKeys[bEntry.entity]);
resolvedAddresses[bEntry.entity]
);
} }
}); });
@ -162,7 +170,7 @@
link link
address={entry.entity} address={entry.entity}
on:resolved={(event) => { on:resolved={(event) => {
resolvedAddresses[entry.entity] = event.detail[0]; sortKeys[entry.entity] = event.detail[0];
}} }}
/> />
</td> </td>
@ -189,7 +197,7 @@
address={entry.value.c} address={entry.value.c}
resolve={Boolean(resolve[id]) || true} resolve={Boolean(resolve[id]) || true}
on:resolved={(event) => { on:resolved={(event) => {
resolvedAddresses[entry.value.c] = event.detail[0]; sortKeys[entry.value.c] = event.detail[0];
}} }}
/> />
{:else} {:else}