diff --git a/resources/js/Pages/Time.vue b/resources/js/Pages/Time.vue index 3ad2efee..543fd36d 100644 --- a/resources/js/Pages/Time.vue +++ b/resources/js/Pages/Time.vue @@ -138,7 +138,6 @@ function deleteSelected() { @submit="clearSelectionAndState" :all-selected="selectedTimeEntries.length === timeEntries.length" @select-all="selectedTimeEntries = [...timeEntries]" - @unselect-all="selectedTimeEntries = []" :delete-selected="deleteSelected"> -import { - formatDate, - formatHumanReadableDuration, - formatWeekday, -} from '@/packages/ui/src/utils/time'; - -defineProps<{ - date: string; - duration: number; -}>(); - - - - - diff --git a/resources/js/packages/ui/src/TimeEntry/TimeEntryGroupedTable.vue b/resources/js/packages/ui/src/TimeEntry/TimeEntryGroupedTable.vue index 95045998..f41d7392 100644 --- a/resources/js/packages/ui/src/TimeEntry/TimeEntryGroupedTable.vue +++ b/resources/js/packages/ui/src/TimeEntry/TimeEntryGroupedTable.vue @@ -118,13 +118,40 @@ function startTimeEntryFromExisting(entry: TimeEntry) { function sumDuration(timeEntries: TimeEntry[]) { return timeEntries.reduce((acc, entry) => acc + (entry?.duration ?? 0), 0); } +function selectAllTimeEntries(value: TimeEntriesGroupedByType[]) { + for (const timeEntry of value) { + if ('timeEntries' in timeEntry) { + for (const subTimeEntry of timeEntry.timeEntries) { + selectedTimeEntries.value.push(subTimeEntry); + } + } else { + selectedTimeEntries.value.push(timeEntry); + } + } +} +function unselectAllTimeEntries(value: TimeEntriesGroupedByType[]) { + selectedTimeEntries.value = selectedTimeEntries.value.filter( + (timeEntry) => { + return !value.find( + (filterTimeEntry) => filterTimeEntry.id === timeEntry.id + ); + } + ); +}