diff --git a/plugins/setting-resources/src/components/spaceTypes/editor/SpaceTypeGeneralSectionEditor.svelte b/plugins/setting-resources/src/components/spaceTypes/editor/SpaceTypeGeneralSectionEditor.svelte
index adb8546336..cb13683888 100644
--- a/plugins/setting-resources/src/components/spaceTypes/editor/SpaceTypeGeneralSectionEditor.svelte
+++ b/plugins/setting-resources/src/components/spaceTypes/editor/SpaceTypeGeneralSectionEditor.svelte
@@ -28,7 +28,7 @@
TextArea,
Toggle
} from '@hcengineering/ui'
- import { deleteObjects } from '@hcengineering/view-resources'
+ import { deleteObjects, iconsLibrary } from '@hcengineering/view-resources'
import settingRes from '../../../plugin'
@@ -117,10 +117,11 @@
{#if descriptor !== undefined}
+ {@const dIcon = descriptor.icon === '' ? settingRes.icon.Setting : descriptor.icon}
diff --git a/plugins/task-resources/src/components/taskTypes/TaskTypeListPresenter.svelte b/plugins/task-resources/src/components/taskTypes/TaskTypeListPresenter.svelte
new file mode 100644
index 0000000000..09b67c5d26
--- /dev/null
+++ b/plugins/task-resources/src/components/taskTypes/TaskTypeListPresenter.svelte
@@ -0,0 +1,35 @@
+
+
+
+{#if _value !== undefined && visible}
+
+
+
+{/if}
diff --git a/plugins/task-resources/src/index.ts b/plugins/task-resources/src/index.ts
index bcc7bdae4c..f3a8aac1b0 100644
--- a/plugins/task-resources/src/index.ts
+++ b/plugins/task-resources/src/index.ts
@@ -67,11 +67,11 @@ import ProjectTypeClassPresenter from './components/taskTypes/ProjectTypeClassPr
import TaskKindSelector from './components/taskTypes/TaskKindSelector.svelte'
import TaskTypeClassPresenter from './components/taskTypes/TaskTypeClassPresenter.svelte'
import TaskTypePresenter from './components/taskTypes/TaskTypePresenter.svelte'
+import TaskTypeListPresenter from './components/taskTypes/TaskTypeListPresenter.svelte'
import { employeeByIdStore, personAccountByIdStore, personByIdStore } from '@hcengineering/contact-resources'
import CreateProjectType from './components/projectTypes/CreateProjectType.svelte'
import ProjectTypeAutomationsSectionEditor from './components/projectTypes/ProjectTypeAutomationsSectionEditor.svelte'
-import ProjectTypeCollectionsSectionEditor from './components/projectTypes/ProjectTypeCollectionsSectionEditor.svelte'
import ProjectTypeGeneralSectionEditor from './components/projectTypes/ProjectTypeGeneralSectionEditor.svelte'
import ProjectTypeSelector from './components/projectTypes/ProjectTypeSelector.svelte'
import ProjectTypeTasksTypeSectionEditor from './components/projectTypes/ProjectTypeTasksTypeSectionEditor.svelte'
@@ -198,6 +198,7 @@ export default async (): Promise => ({
StateIconPresenter,
StatusFilter,
TaskTypePresenter,
+ TaskTypeListPresenter,
TaskTypeClassPresenter,
ProjectTypeClassPresenter,
ProjectTypePresenter,
@@ -206,7 +207,6 @@ export default async (): Promise => ({
ProjectTypeGeneralSectionEditor,
ProjectTypeTasksTypeSectionEditor,
ProjectTypeAutomationsSectionEditor,
- ProjectTypeCollectionsSectionEditor,
TaskTypeEditor
},
actionImpl: {
diff --git a/plugins/task-resources/src/plugin.ts b/plugins/task-resources/src/plugin.ts
index a27714a92d..88ef8abd84 100644
--- a/plugins/task-resources/src/plugin.ts
+++ b/plugins/task-resources/src/plugin.ts
@@ -104,7 +104,6 @@ export default mergeIds(taskId, task, {
ProjectTypeGeneralSectionEditor: '' as AnyComponent,
ProjectTypeTasksTypeSectionEditor: '' as AnyComponent,
ProjectTypeAutomationsSectionEditor: '' as AnyComponent,
- ProjectTypeCollectionsSectionEditor: '' as AnyComponent,
TaskTypeEditor: '' as AnyComponent
},
function: {
diff --git a/plugins/task/src/index.ts b/plugins/task/src/index.ts
index 7253e72476..a2ec1e99c6 100644
--- a/plugins/task/src/index.ts
+++ b/plugins/task/src/index.ts
@@ -94,6 +94,8 @@ export interface TaskTypeDescriptor extends Doc {
// If specified, will allow to be created by users, system type overwise
allowCreate: boolean
statusCategoriesFunc?: Resource<(project: ProjectType) => Ref[]>
+
+ openTasks?: Resource<(value: TaskType) => Promise>
}
/**
diff --git a/plugins/tracker-resources/src/index.ts b/plugins/tracker-resources/src/index.ts
index 3137774fef..4397654845 100644
--- a/plugins/tracker-resources/src/index.ts
+++ b/plugins/tracker-resources/src/index.ts
@@ -31,7 +31,14 @@ import {
import { type Resources, type Status, translate } from '@hcengineering/platform'
import { getClient, MessageBox, type ObjectSearchResult } from '@hcengineering/presentation'
import { type Component, type Issue, type Milestone, type Project } from '@hcengineering/tracker'
-import { closePanel, getCurrentLocation, navigate, showPopup, themeStore } from '@hcengineering/ui'
+import {
+ closePanel,
+ getCurrentLocation,
+ getCurrentResolvedLocation,
+ navigate,
+ showPopup,
+ themeStore
+} from '@hcengineering/ui'
import ComponentEditor from './components/components/ComponentEditor.svelte'
import ComponentFilterValuePresenter from './components/components/ComponentFilterValuePresenter.svelte'
import ComponentPresenter from './components/components/ComponentPresenter.svelte'
@@ -117,7 +124,13 @@ import ComponentSelector from './components/components/ComponentSelector.svelte'
import IssueTemplatePresenter from './components/templates/IssueTemplatePresenter.svelte'
import IssueTemplates from './components/templates/IssueTemplates.svelte'
-import { AggregationManager, deleteObject, deleteObjects } from '@hcengineering/view-resources'
+import {
+ AggregationManager,
+ buildFilterKey,
+ deleteObject,
+ deleteObjects,
+ setFilters
+} from '@hcengineering/view-resources'
import MoveAndDeleteMilestonePopup from './components/milestones/MoveAndDeleteMilestonePopup.svelte'
import EditIssueTemplate from './components/templates/EditIssueTemplate.svelte'
import TemplateEstimationEditor from './components/templates/EstimationEditor.svelte'
@@ -160,6 +173,8 @@ import { settingId } from '@hcengineering/setting'
import { getAllStates } from '@hcengineering/task-resources'
import EstimationValueEditor from './components/issues/timereport/EstimationValueEditor.svelte'
import TimePresenter from './components/issues/timereport/TimePresenter.svelte'
+import type { TaskType } from '@hcengineering/task'
+import view, { type Filter } from '@hcengineering/view'
export { default as AssigneeEditor } from './components/issues/AssigneeEditor.svelte'
export { default as SubIssueList } from './components/issues/edit/SubIssueList.svelte'
@@ -346,6 +361,33 @@ function setStore (manager: DocManager): void {
componentStore.set(manager)
}
+async function openIssuesOfTaskType (taskType: TaskType): Promise {
+ function setFilterTag (taskType: TaskType): void {
+ const client = getClient()
+ const hierarchy = client.getHierarchy()
+ const attribute = hierarchy.getAttribute(tracker.class.Issue, 'kind')
+ const key = buildFilterKey(hierarchy, tracker.class.Issue, 'kind', attribute)
+ const filter = {
+ key,
+ value: [taskType._id],
+ props: { level: 0 },
+ modes: [view.filter.FilterObjectIn, view.filter.FilterObjectNin],
+ mode: view.filter.FilterObjectIn,
+ index: 1
+ } as unknown as Filter
+ setFilters([filter])
+ }
+ if (taskType === undefined) return
+ const loc = getCurrentResolvedLocation()
+ loc.path[2] = 'tracker'
+ loc.path[3] = 'all-issues'
+ loc.path.length = 4
+ navigate(loc)
+ setTimeout(() => {
+ setFilterTag(taskType)
+ }, 200)
+}
+
export default async (): Promise => ({
activity: {
PriorityIcon,
@@ -467,7 +509,8 @@ export default async (): Promise => ({
IsProjectJoined: async (project: Project) => project.members.includes(getCurrentAccount()._id),
GetIssueStatusCategories: getIssueStatusCategories,
SetComponentStore: setStore,
- ComponentFilterFunction: filterComponents
+ ComponentFilterFunction: filterComponents,
+ OpenIssuesOfTaskType: openIssuesOfTaskType
},
actionImpl: {
Move: move,
diff --git a/plugins/tracker-resources/src/plugin.ts b/plugins/tracker-resources/src/plugin.ts
index d2e6ac7112..35c2619bde 100644
--- a/plugins/tracker-resources/src/plugin.ts
+++ b/plugins/tracker-resources/src/plugin.ts
@@ -16,7 +16,7 @@ import { type StatusCategory, type Client, type Doc, type Ref, type Space } from
import type { Asset, IntlString, Metadata, Resource } from '@hcengineering/platform'
import { mergeIds } from '@hcengineering/platform'
import type { ObjectSearchCategory, ObjectSearchFactory } from '@hcengineering/presentation'
-import { type ProjectType } from '@hcengineering/task'
+import { type ProjectType, type TaskType } from '@hcengineering/task'
import tracker, { trackerId, type IssueDraft, type Issue } from '@hcengineering/tracker'
import { type AnyComponent, type Location } from '@hcengineering/ui'
import {
@@ -398,7 +398,8 @@ export default mergeIds(trackerId, tracker, {
IsProjectJoined: '' as Resource<(space: Space) => Promise>,
IssueChatTitleProvider: '' as Resource<(object: Doc) => string>,
GetIssueStatusCategories: '' as Resource<(project: ProjectType) => Array[>>,
- GetIssueIdByIdentifier: '' as Resource<(id: string) => Promise][ | undefined>>
+ GetIssueIdByIdentifier: '' as Resource<(id: string) => Promise][ | undefined>>,
+ OpenIssuesOfTaskType: '' as Resource<(taskType: TaskType) => Promise>
},
aggregation: {
CreateComponentAggregationManager: '' as CreateAggregationManagerFunc,
]