feature/projects-all-the-way-down #3323

Merged
konrad merged 123 commits from feature/projects-all-the-way-down into main 2023-05-30 10:09:40 +00:00
2 changed files with 22 additions and 2 deletions
Showing only changes of commit ee8f80cc70 - Show all commits

View File

@ -235,8 +235,20 @@ export function useProject(projectId: MaybeRef<IProject['id']>) {
)
const projectStore = useProjectStore()
const parentProject = ref<IProject | null>(null)
watch(
() => project.parentProjectId,
projectId => {
if (project.parentProjectId) {
parentProject.value = projectStore.getProjectById(project.parentProjectId)
}
},
{immediate: true},
)
async function save() {
project.parentProjectId = parentProject.value.id
await projectStore.updateProject(project)
success({message: t('project.edit.success')})
}
@ -244,6 +256,7 @@ export function useProject(projectId: MaybeRef<IProject['id']>) {
return {
isLoading: readonly(isLoading),
project,
parentProject,
save,
}
}

View File

@ -42,6 +42,12 @@
v-model="project.identifier"/>
</div>
</div>
<div class="field">
<label class="label">{{ $t('project.parent') }}</label>
<div class="control">
<project-search v-model="parentProject"/>
</div>
</div>
<div class="field">
<label class="label" for="projectdescription">{{ $t('project.edit.description') }}</label>
<div class="control">
@ -70,13 +76,14 @@ export default { name: 'project-setting-edit' }
</script>
<script setup lang="ts">
import type {PropType} from 'vue'
import {type PropType} from 'vue'
import {useRouter} from 'vue-router'
import {useI18n} from 'vue-i18n'
import Editor from '@/components/input/AsyncEditor'
import ColorPicker from '@/components/input/ColorPicker.vue'
import CreateEdit from '@/components/misc/create-edit.vue'
import ProjectSearch from '@/components/tasks/partials/projectSearch.vue'
import type {IProject} from '@/modelTypes/IProject'
@ -96,7 +103,7 @@ const router = useRouter()
const {t} = useI18n({useScope: 'global'})
const {project, save: saveProject, isLoading} = useProject(props.projectId)
const {project, parentProject, save: saveProject, isLoading} = useProject(props.projectId)
konrad marked this conversation as resolved Outdated

Use computed getter / setter to set parentProjectId of project instead.

Use computed getter / setter to set parentProjectId of project instead.

I've changed this since moving the parent project logic out of the composable.

I've changed this since moving the parent project logic out of the composable.
useTitle(() => project?.title ? t('project.edit.title', {project: project.title}) : '')