diff --git a/frontend/components/TimeEntryList.vue b/frontend/components/TimeEntryList.vue new file mode 100644 index 0000000..b58c6d1 --- /dev/null +++ b/frontend/components/TimeEntryList.vue @@ -0,0 +1,104 @@ + + + + Aucune activité pour cette période + + + + + + + + + + + {{ entry.title || 'Sans titre' }} + + + {{ type.label }} + + + + {{ entry.project.name }} + · + {{ entry.description }} + + + + + + + {{ formatDuration(entry) }} + + + {{ formatTime(entry.startedAt) }} – {{ entry.stoppedAt ? formatTime(entry.stoppedAt) : '...' }} + + + + + + {{ formatDate(entry.startedAt) }} + + + + + + + + + + + diff --git a/frontend/pages/time-tracking.vue b/frontend/pages/time-tracking.vue index 7c44364..80404fe 100644 --- a/frontend/pages/time-tracking.vue +++ b/frontend/pages/time-tracking.vue @@ -20,13 +20,13 @@ - {{ mode === 'week' ? 'Semaine' : 'Jour' }} + {{ mode === 'week' ? 'Semaine' : mode === 'day' ? 'Jour' : 'Liste' }} @@ -59,7 +59,14 @@ + ('week') +const viewMode = ref<'week' | 'day' | 'list'>('week') const startDate = ref(getMonday(new Date())) const selectedUserId = ref(authStore.user?.id ?? null) const selectedTypeId = ref(null) @@ -160,15 +167,15 @@ function getMonday(d: Date): Date { function navigatePrev() { const d = new Date(startDate.value) - d.setDate(d.getDate() - (viewMode.value === 'week' ? 7 : 1)) - startDate.value = viewMode.value === 'week' ? getMonday(d) : d + d.setDate(d.getDate() - (viewMode.value === 'day' ? 1 : 7)) + startDate.value = viewMode.value === 'day' ? d : getMonday(d) loadEntries() } function navigateNext() { const d = new Date(startDate.value) - d.setDate(d.getDate() + (viewMode.value === 'week' ? 7 : 1)) - startDate.value = viewMode.value === 'week' ? getMonday(d) : d + d.setDate(d.getDate() + (viewMode.value === 'day' ? 1 : 7)) + startDate.value = viewMode.value === 'day' ? d : getMonday(d) loadEntries() } @@ -245,7 +252,7 @@ async function onDelete(entry: TimeEntry) { async function loadEntries() { const end = new Date(startDate.value) - end.setDate(end.getDate() + (viewMode.value === 'week' ? 7 : 1)) + end.setDate(end.getDate() + (viewMode.value === 'day' ? 1 : 7)) entries.value = await timeEntryService.getByDateRange({ after: startDate.value.toISOString(), @@ -274,7 +281,7 @@ onMounted(async () => { }) watch(viewMode, () => { - startDate.value = viewMode.value === 'week' ? getMonday(startDate.value) : startDate.value + startDate.value = viewMode.value === 'day' ? startDate.value : getMonday(startDate.value) loadEntries() })