diff --git a/plugins/workbench-resources/src/components/SpecialView.svelte b/plugins/workbench-resources/src/components/SpecialView.svelte index 2d8ad4944d..19e1224969 100644 --- a/plugins/workbench-resources/src/components/SpecialView.svelte +++ b/plugins/workbench-resources/src/components/SpecialView.svelte @@ -25,48 +25,54 @@ export let label: IntlString export let createLabel: IntlString | undefined export let createComponent: AnyComponent | undefined - export let descriptor: Ref = view.viewlet.Table + export let descriptor: Ref | undefined export let baseQuery: DocumentQuery = {} let search = '' - $: resultQuery = search === '' ? {} : { $search: search } let filters: Filter[] = [] let descr: Viewlet | undefined - let loading = true + + $: resultQuery = updateResultQuery(search, baseQuery) const preferenceQuery = createQuery() let preference: ViewletPreference | undefined const client = getClient() - client - .findOne(view.class.Viewlet, { - attachTo: _class, - descriptor - }) - .then((res) => { - descr = res - if (res !== undefined) { - preferenceQuery.query( - view.class.ViewletPreference, - { - attachedTo: res._id - }, - (res) => { - preference = res[0] - loading = false - }, - { limit: 1 } - ) - } - }) + let loading = true + $: updateDescriptor(_class, descriptor) + + function updateDescriptor (_class: Ref>, descriptor: Ref = view.viewlet.Table) { + loading = true + client + .findOne(view.class.Viewlet, { + attachTo: _class, + descriptor + }) + .then((res) => { + descr = res + if (res !== undefined) { + preferenceQuery.query( + view.class.ViewletPreference, + { + attachedTo: res._id + }, + (res) => { + preference = res[0] + loading = false + }, + { limit: 1 } + ) + } + }) + } function showCreateDialog (ev: MouseEvent) { if (createComponent === undefined) return showPopup(createComponent, {}, 'top') } - function updateResultQuery (search: string): void { - resultQuery = search === '' ? baseQuery : { ...baseQuery, $search: search } + function updateResultQuery (search: string, baseQuery: DocumentQuery = {}): DocumentQuery { + return search === '' ? baseQuery : { ...baseQuery, $search: search } } @@ -77,12 +83,7 @@
- { - updateResultQuery(search) - }} - /> + {#if createLabel && createComponent}