[ui] copy&paste new sorting to gallery
todo - DRY?
This commit is contained in:
parent
24075db535
commit
579b669258
1 changed files with 43 additions and 1 deletions
|
@ -1,5 +1,8 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import type { UpEntry } from "upend";
|
import { readable, Readable } from "svelte/store";
|
||||||
|
|
||||||
|
import type { UpEntry, UpListing } from "upend";
|
||||||
|
import { query } from "../../lib/entity";
|
||||||
import Thumbnail from "./gallery/Thumbnail.svelte";
|
import Thumbnail from "./gallery/Thumbnail.svelte";
|
||||||
|
|
||||||
export let entries: UpEntry[];
|
export let entries: UpEntry[];
|
||||||
|
@ -24,6 +27,25 @@
|
||||||
if (resort && changed) sortAttributes();
|
if (resort && changed) sortAttributes();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Labelling
|
||||||
|
let labelListing: Readable<UpListing> = readable(undefined);
|
||||||
|
$: {
|
||||||
|
const addresses = [];
|
||||||
|
entries
|
||||||
|
.flatMap((e) =>
|
||||||
|
e.value.t === "Address" ? [e.entity, e.value.c] : [e.entity]
|
||||||
|
)
|
||||||
|
.forEach((addr) => {
|
||||||
|
if (!addresses.includes(addr)) {
|
||||||
|
addresses.push(addr);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const addressesString = addresses.map((addr) => `"${addr}"`).join(" ");
|
||||||
|
|
||||||
|
labelListing = query(`(matches (in ${addressesString}) "LBL" ? )`).result;
|
||||||
|
}
|
||||||
|
|
||||||
function sortAttributes() {
|
function sortAttributes() {
|
||||||
sortedAttributes = entries
|
sortedAttributes = entries
|
||||||
.concat()
|
.concat()
|
||||||
|
@ -85,6 +107,26 @@
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$: {
|
||||||
|
if ($labelListing) {
|
||||||
|
entries.forEach((entry) => {
|
||||||
|
addSortKeys(
|
||||||
|
entry.entity,
|
||||||
|
$labelListing.getObject(entry.entity).identify()
|
||||||
|
);
|
||||||
|
|
||||||
|
if (entry.value.t === "Address") {
|
||||||
|
addSortKeys(
|
||||||
|
entry.value.c,
|
||||||
|
$labelListing.getObject(String(entry.value.c)).identify(),
|
||||||
|
false
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
sortAttributes();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
entries.forEach((entry) => {
|
entries.forEach((entry) => {
|
||||||
addSortKeys(entry.entity, entry.listing.getObject(entry.entity).identify());
|
addSortKeys(entry.entity, entry.listing.getObject(entry.entity).identify());
|
||||||
if (entry.value.t === "Address") {
|
if (entry.value.t === "Address") {
|
||||||
|
|
Loading…
Reference in a new issue