UBER-496: Fix few issues (#3439)

This commit is contained in:
Andrey Sobolev
2023-06-16 18:29:07 +07:00
committed by GitHub
parent 354e76e1f1
commit 05d273bb59
33 changed files with 277 additions and 61 deletions
@@ -13,7 +13,7 @@
// limitations under the License.
-->
<script lang="ts">
import { Class, Doc, Ref, Space, WithLookup } from '@hcengineering/core'
import { Class, Doc, DocumentQuery, Ref, Space, WithLookup } from '@hcengineering/core'
import { Asset, IntlString } from '@hcengineering/platform'
import { createQuery } from '@hcengineering/presentation'
import {
@@ -50,6 +50,7 @@
export let createComponentProps: Record<string, any> = {}
export let isCreationDisabled = false
export let descriptors: Ref<ViewletDescriptor>[] | undefined = undefined
export let baseQuery: DocumentQuery<Doc> | undefined = undefined
let search = ''
let viewlet: WithLookup<Viewlet> | undefined
@@ -116,7 +117,7 @@
preferenceQuery.unsubscribe()
}
$: query = viewlet?.baseQuery ?? {}
$: query = { ...(baseQuery ?? {}), ...(viewlet?.baseQuery ?? {}) }
$: searchQuery = search === '' ? query : { ...query, $search: search }
$: resultQuery = searchQuery
@@ -186,7 +187,7 @@
</div>
</div>
{#if !viewlet?.$lookup?.descriptor?.component || viewlet?.attachTo !== _class || (preference !== undefined && viewlet?._id !== preference.attachedTo)}}
{#if !viewlet?.$lookup?.descriptor?.component || viewlet?.attachTo !== _class || (preference !== undefined && viewlet?._id !== preference.attachedTo)}
<Loading />
{:else}
<FilterBar
@@ -117,6 +117,32 @@
return await getResource(value.presenter)
}
}
let visibleIf: ((space: Space) => Promise<boolean>) | undefined
$: if (model.visibleIf) {
getResource(model.visibleIf).then((r) => {
visibleIf = r
})
}
let filteredSpaces: Space[] = []
async function updateSpaces (spaces: Space[], visibleIf: (space: Space) => Promise<boolean>): Promise<void> {
const result: Space[] = []
for (const s of spaces) {
if (await visibleIf(s)) {
result.push(s)
}
}
filteredSpaces = result
}
$: if (visibleIf) {
updateSpaces(spaces, visibleIf)
} else {
filteredSpaces = spaces
}
</script>
<TreeNode
@@ -125,7 +151,7 @@
actions={async () => getParentActions()}
shortDropbox={model.specials !== undefined}
>
{#each spaces as space, i (space._id)}
{#each filteredSpaces as space, i (space._id)}
{#await getPresenter(space._class) then presenter}
{#if separate && model.specials && i !== 0}<TreeSeparator line />{/if}
{#if model.specials && presenter}