diff --git a/frontend/src/components/project/views/viewEditForm.vue b/frontend/src/components/project/views/viewEditForm.vue index 55a60f0d4..641cfecbc 100644 --- a/frontend/src/components/project/views/viewEditForm.vue +++ b/frontend/src/components/project/views/viewEditForm.vue @@ -2,12 +2,65 @@ import type {IProjectView} from '@/modelTypes/IProjectView' import XButton from '@/components/input/button.vue' import FilterInput from '@/components/project/partials/FilterInput.vue' -import {ref} from 'vue' +import {ref, watch} from 'vue' +import {transformFilterStringForApi, transformFilterStringFromApi} from '@/helpers/filters' +import {useLabelStore} from '@/stores/labels' +import {useProjectStore} from '@/stores/projects' + +const { + modelValue, +} = defineProps<{ + modelValue: IProjectView, +}>() + +const emit = defineEmits(['update:modelValue']) + +const view = ref() + +const labelStore = useLabelStore() +const projectStore = useProjectStore() + +watch( + () => modelValue, + newValue => { + const transformed = { + ...newValue, + filter: transformFilterStringFromApi( + newValue.filter, + labelId => labelStore.getLabelById(labelId)?.title, + projectId => projectStore.projects[projectId]?.title || null, + ), + } + + if (JSON.stringify(view.value) !== JSON.stringify(transformed)) { + view.value = transformed + } + }, + {immediate: true, deep: true}, +) + +watch( + () => view.value, + newView => { + emit('update:modelValue', { + ...newView, + filter: transformFilterStringForApi( + newView.filter, + labelTitle => labelStore.filterLabelsByQuery([], labelTitle)[0]?.id || null, + projectTitle => { + const found = projectStore.findProjectByExactname(projectTitle) + return found?.id || null + }, + ), + }) + }, + {deep: true}, +) -const model = defineModel() const titleValid = ref(true) + function validateTitle() { - titleValid.value = model.value.title !== '' + titleValid.value = view.value?.title !== '' } @@ -23,14 +76,14 @@ function validateTitle() {
-

@@ -49,7 +102,7 @@ function validateTitle() {

@@ -130,7 +183,7 @@ function validateTitle() {
@@ -138,7 +191,7 @@ function validateTitle() {
@@ -147,7 +200,7 @@ function validateTitle() { {{ $t('project.kanban.addBucket') }}