diff --git a/src/components/tasks/GanttChart.vue b/src/components/tasks/GanttChart.vue index 1a51fc9fa..78a82f352 100644 --- a/src/components/tasks/GanttChart.vue +++ b/src/components/tasks/GanttChart.vue @@ -123,6 +123,23 @@ watch( function transformTaskToGanttBar(t: ITask) { const black = 'var(--grey-800)' + + const taskColor = getHexColor(t.hexColor) + + let textColor = black + let backgroundColor = 'var(--grey-100)' + if(t.startDate) { + backgroundColor = taskColor ?? '' + if(typeof taskColor === 'undefined') { + textColor = 'white' + backgroundColor = 'var(--primary)' + } else if(colorIsDark(taskColor)) { + textColor = black + } else { + textColor = 'white' + } + } + return [{ startDate: isoToKebabDate(t.startDate ? t.startDate.toISOString() : props.defaultTaskStartDate), endDate: isoToKebabDate(t.endDate ? t.endDate.toISOString() : props.defaultTaskEndDate), @@ -131,8 +148,8 @@ function transformTaskToGanttBar(t: ITask) { label: t.title, hasHandles: true, style: { - color: t.startDate ? (colorIsDark(getHexColor(t.hexColor)) ? black : 'white') : black, - backgroundColor: t.startDate ? getHexColor(t.hexColor) : 'var(--grey-100)', + color: textColor, + backgroundColor, border: t.startDate ? '' : '2px dashed var(--grey-300)', 'text-decoration': t.done ? 'line-through' : null, }, diff --git a/src/components/tasks/partials/kanban-card.vue b/src/components/tasks/partials/kanban-card.vue index bb103e84c..b519f449a 100644 --- a/src/components/tasks/partials/kanban-card.vue +++ b/src/components/tasks/partials/kanban-card.vue @@ -4,10 +4,10 @@ :class="{ 'is-loading': loadingInternal || loading, 'draggable': !(loadingInternal || loading), - 'has-light-text': color !== TASK_DEFAULT_COLOR && !colorIsDark(color), - 'has-custom-background-color': color !== TASK_DEFAULT_COLOR ? color : undefined, + 'has-light-text': !colorIsDark(color), + 'has-custom-background-color': color ?? undefined, }" - :style="{'background-color': color !== TASK_DEFAULT_COLOR ? color : undefined}" + :style="{'background-color': color ?? undefined}" @click.exact="openTaskDetail()" @click.ctrl="() => toggleTaskDone(task)" @click.meta="() => toggleTaskDone(task)" @@ -83,7 +83,7 @@ import Done from '@/components/misc/Done.vue' import Labels from '@/components/tasks/partials/labels.vue' import ChecklistSummary from './checklist-summary.vue' -import {TASK_DEFAULT_COLOR, getHexColor} from '@/models/task' +import {getHexColor} from '@/models/task' import type {ITask} from '@/modelTypes/ITask' import {SUPPORTED_IMAGE_SUFFIX} from '@/models/attachment' import AttachmentService from '@/services/attachment' diff --git a/src/models/task.ts b/src/models/task.ts index 47fa41b1e..618fe35c1 100644 --- a/src/models/task.ts +++ b/src/models/task.ts @@ -23,11 +23,9 @@ import type {ITaskReminder} from '@/modelTypes/ITaskReminder' import TaskReminderModel from '@/models/taskReminder' import {secondsToPeriod} from '@/helpers/time/period' -export const TASK_DEFAULT_COLOR = '#1973ff' - -export function getHexColor(hexColor: string): string { +export function getHexColor(hexColor: string): string | undefined { if (hexColor === '' || hexColor === '#') { - return TASK_DEFAULT_COLOR + return undefined } return hexColor diff --git a/src/views/tasks/TaskDetailView.vue b/src/views/tasks/TaskDetailView.vue index a105e54c6..396f13153 100644 --- a/src/views/tasks/TaskDetailView.vue +++ b/src/views/tasks/TaskDetailView.vue @@ -472,7 +472,7 @@ import {klona} from 'klona/lite' import {eventToHotkeyString} from '@github/hotkey' import TaskService from '@/services/task' -import TaskModel, {TASK_DEFAULT_COLOR} from '@/models/task' +import TaskModel from '@/models/task' import type {ITask} from '@/modelTypes/ITask' import type {IProject} from '@/modelTypes/IProject' @@ -582,9 +582,7 @@ const color = computed(() => { ? task.value.getHexColor() : undefined - return color === TASK_DEFAULT_COLOR - ? '' - : color + return color }) const hasAttachments = computed(() => attachmentStore.attachments.length > 0)