refactor : rename TaskType to TaskTag across the stack

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Matthieu
2026-03-13 08:20:21 +01:00
parent dbae1f7536
commit 56275a9ebe
16 changed files with 216 additions and 117 deletions

View File

@@ -73,25 +73,25 @@
/>
<div>
<p class="mb-2 text-sm font-semibold text-neutral-700">Types</p>
<p class="mb-2 text-sm font-semibold text-neutral-700">Tags</p>
<div class="flex flex-wrap gap-2">
<label
v-for="type in types"
:key="type.id"
v-for="tag in tags"
:key="tag.id"
class="cursor-pointer rounded-full px-3 py-1 text-xs font-semibold transition"
:class="form.typeIds.includes(type.id)
:class="form.tagIds.includes(tag.id)
? 'text-white'
: 'bg-neutral-100 text-neutral-600 hover:bg-neutral-200'"
:style="form.typeIds.includes(type.id) ? { backgroundColor: type.color } : {}"
:style="form.tagIds.includes(tag.id) ? { backgroundColor: tag.color } : {}"
>
<input
type="checkbox"
class="hidden"
:value="type.id"
:checked="form.typeIds.includes(type.id)"
@change="toggleType(type.id)"
:value="tag.id"
:checked="form.tagIds.includes(tag.id)"
@change="toggleTag(tag.id)"
/>
{{ type.label }}
{{ tag.label }}
</label>
</div>
</div>
@@ -120,7 +120,7 @@
import type { TimeEntry } from '~/services/dto/time-entry'
import type { UserData } from '~/services/dto/user-data'
import type { Project } from '~/services/dto/project'
import type { TaskType } from '~/services/dto/task-type'
import type { TaskTag } from '~/services/dto/task-tag'
import { useTimeEntryService } from '~/services/time-entries'
const props = defineProps<{
@@ -129,7 +129,7 @@ const props = defineProps<{
prefillStartedAt?: string | null
users: UserData[]
projects: Project[]
types: TaskType[]
tags: TaskTag[]
}>()
const emit = defineEmits<{
@@ -154,7 +154,7 @@ const form = reactive({
endTime: '',
userId: authStore.user?.id ?? null as number | null,
projectId: null as number | null,
typeIds: [] as number[],
tagIds: [] as number[],
})
const userOptions = computed(() =>
@@ -176,12 +176,12 @@ const durationLabel = computed(() => {
return m > 0 ? `${h}h${String(m).padStart(2, '0')}` : `${h}h`
})
function toggleType(id: number) {
const idx = form.typeIds.indexOf(id)
function toggleTag(id: number) {
const idx = form.tagIds.indexOf(id)
if (idx >= 0) {
form.typeIds.splice(idx, 1)
form.tagIds.splice(idx, 1)
} else {
form.typeIds.push(id)
form.tagIds.push(id)
}
}
@@ -212,7 +212,7 @@ function populateForm(entry: TimeEntry | null | undefined) {
form.endTime = entry.stoppedAt ? toLocalTime(entry.stoppedAt) : ''
form.userId = entry.user?.id ?? authStore.user?.id ?? null
form.projectId = entry.project?.id ?? null
form.typeIds = entry.types?.map(t => t.id) ?? []
form.tagIds = entry.tags?.map(t => t.id) ?? []
} else {
form.title = ''
form.description = ''
@@ -221,7 +221,7 @@ function populateForm(entry: TimeEntry | null | undefined) {
form.endTime = ''
form.userId = authStore.user?.id ?? null
form.projectId = null
form.typeIds = []
form.tagIds = []
}
}
@@ -251,7 +251,7 @@ async function onSubmit() {
stoppedAt: form.endTime ? toISO(form.date, form.endTime) : null,
user: `/api/users/${form.userId}`,
project: form.projectId ? `/api/projects/${form.projectId}` : null,
types: form.typeIds.map(id => `/api/task_types/${id}`),
tags: form.tagIds.map(id => `/api/task_tags/${id}`),
}
if (isEditing.value && props.entry) {