feat(time-tracking) : extract time-tracking front into Nuxt module layer

Companion to the backend module migration (LST-64). The Nuxt layer is
auto-detected from frontend/modules/* — no nuxt.config change needed.

- Move page, timer store, time-entries service + DTO and the 6 time-tracking
  components into frontend/modules/time-tracking/.
- Rewrite explicit service/DTO imports to ~/modules/time-tracking/* (store and
  components stay auto-imported); update the dashboard (index.vue) consumer.
- Route /time-tracking preserved; i18n keys kept in the global locale file.

nuxt build passes; /time-tracking routed.
This commit is contained in:
Matthieu
2026-06-20 16:16:49 +02:00
parent d1516c3f5d
commit 1b652ef680
12 changed files with 17 additions and 16 deletions
@@ -64,7 +64,7 @@
</template>
<script setup lang="ts">
import type { TimeEntry } from '~/services/dto/time-entry'
import type { TimeEntry } from '~/modules/time-tracking/services/dto/time-entry'
const props = defineProps<{
entry: TimeEntry
@@ -35,7 +35,7 @@
</template>
<script setup lang="ts">
import type { TimeEntry } from '~/services/dto/time-entry'
import type { TimeEntry } from '~/modules/time-tracking/services/dto/time-entry'
const props = defineProps<{
visible: boolean
@@ -124,11 +124,11 @@
</template>
<script setup lang="ts">
import type { TimeEntry, TimeEntryWrite } from '~/services/dto/time-entry'
import type { TimeEntry, TimeEntryWrite } from '~/modules/time-tracking/services/dto/time-entry'
import type { UserData } from '~/services/dto/user-data'
import type { Project } from '~/services/dto/project'
import type { TaskTag } from '~/services/dto/task-tag'
import { useTimeEntryService } from '~/services/time-entries'
import { useTimeEntryService } from '~/modules/time-tracking/services/time-entries'
const props = defineProps<{
modelValue: boolean
@@ -67,7 +67,7 @@
</template>
<script setup lang="ts">
import type { TimeEntry } from '~/services/dto/time-entry'
import type { TimeEntry } from '~/modules/time-tracking/services/dto/time-entry'
import { stripRichText } from '~/utils/format'
const props = defineProps<{
@@ -150,7 +150,7 @@
</template>
<script setup lang="ts">
import type { TimeEntry } from '~/services/dto/time-entry'
import type { TimeEntry } from '~/modules/time-tracking/services/dto/time-entry'
import { useAbsenceService } from '~/services/absences'
const { t } = useI18n()
@@ -0,0 +1 @@
export default defineNuxtConfig({})
@@ -150,12 +150,12 @@
</template>
<script setup lang="ts">
import type { TimeEntry } from '~/services/dto/time-entry'
import type { TimeEntry } from '~/modules/time-tracking/services/dto/time-entry'
import type { UserData } from '~/services/dto/user-data'
import type { Project } from '~/services/dto/project'
import type { TaskTag } from '~/services/dto/task-tag'
import type { Client } from '~/services/dto/client'
import { useTimeEntryService } from '~/services/time-entries'
import { useTimeEntryService } from '~/modules/time-tracking/services/time-entries'
import type { HydraCollection } from '~/utils/api'
import { extractHydraMembers } from '~/utils/api'
@@ -1,7 +1,7 @@
import type { UserData } from './user-data'
import type { Project } from './project'
import type { Task } from './task'
import type { TaskTag } from './task-tag'
import type { UserData } from '~/services/dto/user-data'
import type { Project } from '~/services/dto/project'
import type { Task } from '~/services/dto/task'
import type { TaskTag } from '~/services/dto/task-tag'
export type TimeEntry = {
id: number
@@ -1,7 +1,7 @@
import { defineStore } from 'pinia'
import type { TimeEntry } from '~/services/dto/time-entry'
import type { TimeEntry } from '~/modules/time-tracking/services/dto/time-entry'
import type { Task } from '~/services/dto/task'
import { useTimeEntryService } from '~/services/time-entries'
import { useTimeEntryService } from '~/modules/time-tracking/services/time-entries'
export const useTimerStore = defineStore('timer', () => {
const activeEntry = ref<TimeEntry | null>(null)
+2 -2
View File
@@ -3,13 +3,13 @@ import { Doughnut, Bar, Line } from 'vue-chartjs'
import type { Task } from '~/services/dto/task'
import type { TaskStatus } from '~/services/dto/task-status'
import type { TaskPriority } from '~/services/dto/task-priority'
import type { TimeEntry } from '~/services/dto/time-entry'
import type { TimeEntry } from '~/modules/time-tracking/services/dto/time-entry'
import type { Project } from '~/services/dto/project'
import type { UserData } from '~/services/dto/user-data'
import { useTaskService } from '~/services/tasks'
import { useTaskStatusService } from '~/services/task-statuses'
import { useTaskPriorityService } from '~/services/task-priorities'
import { useTimeEntryService } from '~/services/time-entries'
import { useTimeEntryService } from '~/modules/time-tracking/services/time-entries'
import { useProjectService } from '~/services/projects'
import { useUserService } from '~/services/users'