From cb421f0218b358e5eff724e2aff71ff4b708a195 Mon Sep 17 00:00:00 2001 From: Denis Bykhov Date: Fri, 10 Nov 2023 21:57:28 +0600 Subject: [PATCH] Fix lead all statuses (#3972) Signed-off-by: Denis Bykhov --- plugins/task-resources/src/index.ts | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/plugins/task-resources/src/index.ts b/plugins/task-resources/src/index.ts index 4e5646caeb..ef64a22e46 100644 --- a/plugins/task-resources/src/index.ts +++ b/plugins/task-resources/src/index.ts @@ -20,7 +20,7 @@ import { createQuery, getClient } from '@hcengineering/presentation' import task, { Project, ProjectType, Task, calcRank } from '@hcengineering/task' import { getCurrentLocation, navigate, showPopup } from '@hcengineering/ui' import { ViewletDescriptor } from '@hcengineering/view' -import { statusStore } from '@hcengineering/view-resources' +import { CategoryQuery, statusStore } from '@hcengineering/view-resources' import { get, writable } from 'svelte/store' import AssignedTasks from './components/AssignedTasks.svelte' import CreateStatePopup from './components/CreateStatePopup.svelte' @@ -135,6 +135,30 @@ async function getAllStates ( .filter((p) => p?.category !== task.statusCategory.Lost && p?.category !== task.statusCategory.Won) .map((p) => p?._id) } + const _space = query?.space + if (_space !== undefined) { + const promise = new Promise>>((resolve, reject) => { + let refresh: boolean = false + const lq = CategoryQuery.getLiveQuery(queryId) + refresh = lq.query(task.class.Project, { _id: _space as Ref }, (res) => { + const typeId = res[0]?.type + const type = get(typeStore).get(typeId) + const statusMap = get(statusStore).byId + const statuses = (type?.statuses?.map((p) => statusMap.get(p._id)) as Status[]) ?? [] + const result = statuses + .filter((p) => p?.category !== task.statusCategory.Lost && p?.category !== task.statusCategory.Won) + .map((p) => p?._id) + CategoryQuery.results.set(queryId, result) + resolve(result) + onUpdate() + }) + + if (!refresh) { + resolve(CategoryQuery.results.get(queryId) ?? []) + } + }) + return await promise + } return get(statusStore) .array.filter( (p) =>