From 959e3de9016ebcef097dc9e9c48a948215b076b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Glasn=C3=A1k?= Date: Mon, 19 Jan 2026 16:23:49 +0100 Subject: [PATCH] feat(timeline): add support for showing draft tasks in employee timeline --- app/src/plugins/tm@_utils/useEmployeeTimeline.ts | 5 ++++- .../task/_components/_components/a-task-timeblocks.vue | 1 + .../task/_components/employees/a-employee-timeblock.vue | 4 ++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/app/src/plugins/tm@_utils/useEmployeeTimeline.ts b/app/src/plugins/tm@_utils/useEmployeeTimeline.ts index b8e6faf..5ecbb7a 100644 --- a/app/src/plugins/tm@_utils/useEmployeeTimeline.ts +++ b/app/src/plugins/tm@_utils/useEmployeeTimeline.ts @@ -25,6 +25,7 @@ export function useEmployeeTimeline( currentTimeblock: Ref, otherLocalTimeblocks?: Ref, editingBlockerId?: Ref, + showDraftTasks?: Ref, ) { // Fetch employee's tasks for the selected date const { @@ -107,6 +108,7 @@ export function useEmployeeTimeline( const emp = unref(employee); const d = unref(date); const excludeBlockerId = editingBlockerId ? unref(editingBlockerId) : null; + const includeDrafts = showDraftTasks ? unref(showDraftTasks) : false; if (!data || !conceptData || !emp || !d) { return []; @@ -115,7 +117,8 @@ export function useEmployeeTimeline( const subtasks = [ ...(data.subtasks || []), ...(data.blockers || []), - ...(conceptData.subtasks || []), + // Only include concept tasks if showDraftTasks is true + ...(includeDrafts ? (conceptData.subtasks || []) : []), ]; const selectedDateStr = moment(d).format('YYYY-MM-DD'); diff --git a/app/src/plugins/tm@modal/task/_components/_components/a-task-timeblocks.vue b/app/src/plugins/tm@modal/task/_components/_components/a-task-timeblocks.vue index 1c5962c..94c561e 100644 --- a/app/src/plugins/tm@modal/task/_components/_components/a-task-timeblocks.vue +++ b/app/src/plugins/tm@modal/task/_components/_components/a-task-timeblocks.vue @@ -117,6 +117,7 @@ :employee="employee" :deletable="false" :index="0" + :show-draft-tasks="!!subtask.is_draft" /> diff --git a/app/src/plugins/tm@modal/task/_components/employees/a-employee-timeblock.vue b/app/src/plugins/tm@modal/task/_components/employees/a-employee-timeblock.vue index 0563af2..1c73a2d 100644 --- a/app/src/plugins/tm@modal/task/_components/employees/a-employee-timeblock.vue +++ b/app/src/plugins/tm@modal/task/_components/employees/a-employee-timeblock.vue @@ -77,6 +77,7 @@ interface Props { currentIndex?: number; deletable?: boolean; index?: number; + showDraftTasks?: boolean; // Whether to show draft/concept tasks on timeline } const props = withDefaults(defineProps(), { @@ -87,6 +88,7 @@ const props = withDefaults(defineProps(), { currentIndex: 0, deletable: false, index: 0, + showDraftTasks: false, }); const emit = defineEmits<{ @@ -238,6 +240,7 @@ const otherTimeblocksForSameDate = computed(() => { // Use timeline composable const editingBlockerIdRef = computed(() => props.editingBlockerId); +const showDraftTasksRef = computed(() => props.showDraftTasks); const { isLoading, @@ -253,6 +256,7 @@ const { timeblockRef, otherTimeblocksForSameDate, editingBlockerIdRef, + showDraftTasksRef, ); // Force refetch when date changes