feat: show all parent projects in project search

This commit is contained in:
kolaente 2023-03-28 18:21:12 +02:00
parent 63ba2982c9
commit 6a8c656dbb
Signed by: konrad
GPG Key ID: F40E70337AB24C9B
3 changed files with 23 additions and 18 deletions

View File

@ -11,7 +11,10 @@
@search="findProjects"
>
<template #searchResult="{option}">
{{ (option as IProject).title }}
<span class="has-text-grey">
{{ getParentProjects(option, projectStore).filter(p => p.id !== option.id).map(p => getProjectTitle(p) ).join(' &gt; ') }} &gt;
</span>
{{ getProjectTitle(option) }}
</template>
</Multiselect>
</template>
@ -24,6 +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 ProjectModel from '@/models/project'

View File

@ -1,14 +1,28 @@
import {i18n} from '@/i18n'
import type {IProject} from '@/modelTypes/IProject'
import {useProjectStore} from '@/stores/projects'
export function getProjectTitle(project: IProject) {
if (project.id === -1) {
return i18n.global.t('project.pseudo.favorites.title')
}
if (project.title === 'Inbox') {
return i18n.global.t('project.inboxTitle')
}
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,
]
}

View File

@ -14,7 +14,7 @@
ref="heading"
/>
<h6 class="subtitle" v-if="project?.id">
<template v-for="p in getAllParentProjects(project)">
<template v-for="p in getParentProjects(project, projectStore)">
<router-link :to="{ name: 'project.index', params: { projectId: p.id } }">
{{ getProjectTitle(p) }}
</router-link>
@ -488,7 +488,7 @@ import TaskSubscription from '@/components/misc/subscription.vue'
import CustomTransition from '@/components/misc/CustomTransition.vue'
import {uploadFile} from '@/helpers/attachments'
import {getProjectTitle} from '@/helpers/getProjectTitle'
import {getProjectTitle, getParentProjects} from '@/helpers/getProjectTitle'
import {scrollIntoView} from '@/helpers/scrollIntoView'
import {useBaseStore} from '@/stores/base'
@ -784,19 +784,6 @@ async function setPercentDone(percentDone: number) {
task: newTask,
})
}
function getAllParentProjects(project: IProject): IProject[] {
let parents = []
if (project.parentProjectId) {
const parentProject = projectStore.getProjectById(project.parentProjectId)
parents = getAllParentProjects(parentProject)
}
return [
...parents,
project,
]
}
</script>
<style lang="scss" scoped>