diff --git a/plugins/tags-resources/src/components/CategoryBar.svelte b/plugins/tags-resources/src/components/CategoryBar.svelte index 6edaa0c87f..c84c6549f9 100644 --- a/plugins/tags-resources/src/components/CategoryBar.svelte +++ b/plugins/tags-resources/src/components/CategoryBar.svelte @@ -41,15 +41,43 @@ let categoryKeys: Ref[] = [] const elementsQuery = createQuery() - $: elementsQuery.query( - tags.class.TagElement, - { targetClass }, + $: if ((tagElements?.size ?? 0) > 0) { + elementsQuery.query( + tags.class.TagElement, + { targetClass }, + (res) => { + elements = res + }, + { + sort: { + title: SortingOrder.Ascending + } + } + ) + } + + type TagElementInfo = { count: number; modifiedOn: number } + let tagElements: Map, TagElementInfo> | undefined = undefined + const refQuery = createQuery() + $: refQuery.query( + tags.class.TagReference, + {}, (res) => { - elements = res + const result = new Map, TagElementInfo>() + + for (const d of res) { + const v = result.get(d.tag) ?? { count: 0, modifiedOn: 0 } + v.count++ + v.modifiedOn = Math.max(v.modifiedOn, d.modifiedOn) + result.set(d.tag, v) + } + + tagElements = result }, { - sort: { - title: SortingOrder.Ascending + projection: { + _id: 1, + tag: 1 } } ) diff --git a/plugins/tags-resources/src/components/TagsCategoryPopup.svelte b/plugins/tags-resources/src/components/TagsCategoryPopup.svelte index c4b1e3c2d9..8eed456336 100644 --- a/plugins/tags-resources/src/components/TagsCategoryPopup.svelte +++ b/plugins/tags-resources/src/components/TagsCategoryPopup.svelte @@ -128,7 +128,7 @@ {#if elements.length > 0}