diff --git a/frontend/pages/my-tasks.vue b/frontend/pages/my-tasks.vue index d7078c3..46d5ae6 100644 --- a/frontend/pages/my-tasks.vue +++ b/frontend/pages/my-tasks.vue @@ -17,6 +17,8 @@ import { useUserService } from '~/services/users' import { useProjectService } from '~/services/projects' const { t } = useI18n() +const route = useRoute() +const router = useRouter() const auth = useAuthStore() useHead({ title: t('myTasks.title') }) @@ -220,13 +222,23 @@ async function onDropBacklog(event: DragEvent) { function openTaskCreate() { selectedTask.value = null taskModalOpen.value = true + router.replace({ query: {} }) } function openTaskEdit(task: Task) { selectedTask.value = task taskModalOpen.value = true + if (task.project?.code && task.number) { + router.replace({ query: { task: `${task.project.code}-${task.number}` } }) + } } +watch(taskModalOpen, (open) => { + if (!open) { + router.replace({ query: {} }) + } +}) + async function onSaved() { await loadTasks() } @@ -277,8 +289,22 @@ async function onBulkDelete() { await loadTasks() } -onMounted(() => { - loadAll() +onMounted(async () => { + await loadAll() + const taskParam = route.query.task as string | undefined + if (taskParam) { + const dashIndex = taskParam.lastIndexOf('-') + if (dashIndex > 0) { + const code = taskParam.slice(0, dashIndex) + const num = Number(taskParam.slice(dashIndex + 1)) + if (num) { + const task = tasks.value.find(t => t.project?.code === code && t.number === num) + if (task) { + openTaskEdit(task) + } + } + } + } }) diff --git a/frontend/pages/projects/[id]/index.vue b/frontend/pages/projects/[id]/index.vue index 8fa3fb4..8f0aeaa 100644 --- a/frontend/pages/projects/[id]/index.vue +++ b/frontend/pages/projects/[id]/index.vue @@ -224,6 +224,7 @@ import { useTaskGroupService } from '~/services/task-groups' import { useUserService } from '~/services/users' const route = useRoute() +const router = useRouter() const projectId = computed(() => Number(route.params.id)) useHead({ title: 'Projet' }) @@ -349,13 +350,23 @@ async function loadData() { function openTaskCreate() { selectedTask.value = null taskDrawerOpen.value = true + router.replace({ query: {} }) } function openTaskEdit(task: Task) { selectedTask.value = task taskDrawerOpen.value = true + if (project.value?.code && task.number) { + router.replace({ query: { task: `${project.value.code}-${task.number}` } }) + } } +watch(taskDrawerOpen, (open) => { + if (!open) { + router.replace({ query: {} }) + } +}) + function onDragEnter(id: number) { dragCounter.value++ dragOverStatusId.value = id @@ -445,7 +456,20 @@ async function onProjectSaved() { await loadData() } -onMounted(() => { - loadData() +onMounted(async () => { + await loadData() + const taskParam = route.query.task as string | undefined + if (taskParam && project.value) { + const prefix = `${project.value.code}-` + if (taskParam.startsWith(prefix)) { + const num = Number(taskParam.slice(prefix.length)) + if (num) { + const task = tasks.value.find(t => t.number === num) + if (task) { + openTaskEdit(task) + } + } + } + } })