diff --git a/src/components/tasks/partials/projectSearch.vue b/src/components/tasks/partials/projectSearch.vue
index 41d0e45c7..41a0ee5ab 100644
--- a/src/components/tasks/partials/projectSearch.vue
+++ b/src/components/tasks/partials/projectSearch.vue
@@ -12,7 +12,7 @@
>
- {{ getParentProjects(option, projectStore).filter(p => p.id !== option.id).map(p => getProjectTitle(p) ).join(' > ') }} >
+ {{ projectStore.getParentProjects(option).filter(p => p.id !== option.id).map(p => getProjectTitle(p) ).join(' > ') }} >
{{ getProjectTitle(option) }}
@@ -27,7 +27,7 @@ import {useI18n} from 'vue-i18n'
import type {IProject} from '@/modelTypes/IProject'
import {useProjectStore} from '@/stores/projects'
-import {getProjectTitle, getParentProjects} from '@/helpers/getProjectTitle'
+import {getProjectTitle} from '@/helpers/getProjectTitle'
import ProjectModel from '@/models/project'
diff --git a/src/helpers/getProjectTitle.ts b/src/helpers/getProjectTitle.ts
index 170c9649f..ccc239bf4 100644
--- a/src/helpers/getProjectTitle.ts
+++ b/src/helpers/getProjectTitle.ts
@@ -13,16 +13,3 @@ export function getProjectTitle(project: IProject) {
return project.title
}
-
-export function getParentProjects(project: IProject, projectStore): IProject[] {
- let parents = []
- if (project.parentProjectId) {
- const parentProject = projectStore.getProjectById(project.parentProjectId)
- parents = getParentProjects(parentProject, projectStore)
- }
-
- return [
- ...parents,
- project,
- ]
-}
diff --git a/src/stores/projects.ts b/src/stores/projects.ts
index 32578b768..b54ab8d1a 100644
--- a/src/stores/projects.ts
+++ b/src/stores/projects.ts
@@ -47,9 +47,9 @@ export const useProjectStore = defineStore('project', () => {
const searchProject = computed(() => {
return (query: string, includeArchived = false) => {
return search(query)
- ?.filter(value => value > 0)
- .map(id => projects.value[id])
- .filter(project => project.isArchived === includeArchived)
+ ?.filter(value => value > 0)
+ .map(id => projects.value[id])
+ .filter(project => project.isArchived === includeArchived)
|| []
}
})
@@ -65,21 +65,21 @@ export const useProjectStore = defineStore('project', () => {
if (baseStore.currentProject?.id === project.id) {
baseStore.setCurrentProject(project)
}
-
+
if (updateChildren) {
project.childProjects?.forEach(p => setProject(p))
}
-
+
// if the project is a child project, we need to also set it in the parent
if (project.parentProjectId) {
const parent = projects.value[project.parentProjectId]
let foundProject = false
parent.childProjects = parent.childProjects?.map(p => {
- if(p.id === project.id) {
+ if (p.id === project.id) {
foundProject = true
return project
}
-
+
return p
})
// If we hit this, the project now has a new parent project which it did not have before
@@ -162,7 +162,7 @@ export const useProjectStore = defineStore('project', () => {
cancel()
}
}
-
+
async function loadProjects() {
const cancel = setModuleLoading(setIsLoading)
@@ -178,6 +178,18 @@ export const useProjectStore = defineStore('project', () => {
}
}
+ function getParentProjects(project: IProject): IProject[] {
+ if (!project?.parentProjectId) {
+ return [project]
+ }
+
+ const parentProject = projects.value[project.parentProjectId]
+ return [
+ ...getParentProjects(parentProject),
+ project,
+ ]
+ }
+
return {
isLoading: readonly(isLoading),
projects: readonly(projects),
@@ -196,6 +208,7 @@ export const useProjectStore = defineStore('project', () => {
createProject,
updateProject,
deleteProject,
+ getParentProjects,
}
})
@@ -215,6 +228,7 @@ export function useProject(projectId: MaybeRef) {
)
const projectStore = useProjectStore()
+
async function save() {
await projectStore.updateProject(project)
success({message: t('project.edit.success')})
@@ -229,5 +243,5 @@ export function useProject(projectId: MaybeRef) {
// support hot reloading
if (import.meta.hot) {
- import.meta.hot.accept(acceptHMRUpdate(useProjectStore, import.meta.hot))
+ import.meta.hot.accept(acceptHMRUpdate(useProjectStore, import.meta.hot))
}
\ No newline at end of file
diff --git a/src/views/tasks/TaskDetailView.vue b/src/views/tasks/TaskDetailView.vue
index 7cf4df1c5..bcf075945 100644
--- a/src/views/tasks/TaskDetailView.vue
+++ b/src/views/tasks/TaskDetailView.vue
@@ -14,7 +14,7 @@
ref="heading"
/>
-
+
{{ getProjectTitle(p) }}
@@ -485,7 +485,7 @@ import TaskSubscription from '@/components/misc/subscription.vue'
import CustomTransition from '@/components/misc/CustomTransition.vue'
import {uploadFile} from '@/helpers/attachments'
-import {getProjectTitle, getParentProjects} from '@/helpers/getProjectTitle'
+import {getProjectTitle} from '@/helpers/getProjectTitle'
import {scrollIntoView} from '@/helpers/scrollIntoView'
import {useBaseStore} from '@/stores/base'