+
{{ $t('dashboard.carousel.help_title') }}
-
+
{{ $t('dashboard.carousel.help_message') }}
diff --git a/src/modules/timesheets/components/new-shift-list.vue b/src/modules/timesheets/components/mobile/shift-list-mobile.vue
similarity index 90%
rename from src/modules/timesheets/components/new-shift-list.vue
rename to src/modules/timesheets/components/mobile/shift-list-mobile.vue
index 4b87399..be8c29e 100644
--- a/src/modules/timesheets/components/new-shift-list.vue
+++ b/src/modules/timesheets/components/mobile/shift-list-mobile.vue
@@ -42,8 +42,6 @@
// ========== methods ========================================
- // const timesheetRows = computed(() => timesheetStore.timesheets);
-
const addNewShift = (day_shifts: Shift[], date: string, timesheet_id: number) => {
uiStore.focusNextComponent = true;
const newShift = new Shift;
@@ -52,14 +50,6 @@
day_shifts.push(newShift);
};
- const deleteUnsavedShift = (timesheet_index: number, day_index: number) => {
- if (timesheetStore.timesheets !== undefined) {
- const day = timesheetStore.timesheets[timesheet_index]!.days[day_index]!;
- const shifts_without_deleted_shift = day.shifts.filter(shift => shift.id !== 0);
- day.shifts = shifts_without_deleted_shift;
- }
- };
-
const getDayApproval = (day: TimesheetDay) => {
if (day.shifts.length < 1) return false;
return day.shifts.every(shift => shift.is_approved === true);
@@ -101,7 +91,7 @@
:class="$q.platform.is.mobile ? 'column no-wrap q-pb-lg' : 'row'"
>
@@ -226,13 +213,11 @@
/>
diff --git a/src/modules/timesheets/components/shift-list-date-widget.vue b/src/modules/timesheets/components/shift-list-date-widget.vue
index 4ce59c2..f841d35 100644
--- a/src/modules/timesheets/components/shift-list-date-widget.vue
+++ b/src/modules/timesheets/components/shift-list-date-widget.vue
@@ -4,14 +4,15 @@
>
import { computed } from 'vue';
import { date, useQuasar } from 'quasar';
-
+
const q = useQuasar();
const { extractDate } = date;
- const { displayDate, dense = false, approved = false} = defineProps<{
+ const { displayDate, dense = false, approved = false } = defineProps<{
displayDate: string;
dense?: boolean;
approved?: boolean;
+ today?: boolean;
}>();
const date_font_size = computed(() => dense ? '1.5em' : '2.5em');
@@ -26,21 +27,31 @@
class="column flex-center rounded-10 text-center self-center bg-transparent"
:style="date_box_size"
>
+
+ {{ $t('shared.label.today') }}
+
+
- {{ $d(display_date, { weekday: $q.platform.is.mobile ? 'short' : 'long'}) }}
+ {{ $d(display_date, { weekday: $q.platform.is.mobile ? 'short' : 'long' }) }}
+
{{ display_date.getDate() }}
+
-
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/src/modules/timesheets/components/shift-list-day.vue b/src/modules/timesheets/components/shift-list-day.vue
index c1ecda1..9c8f891 100644
--- a/src/modules/timesheets/components/shift-list-day.vue
+++ b/src/modules/timesheets/components/shift-list-day.vue
@@ -3,127 +3,195 @@
lang="ts"
>
import ShiftListDayRow from 'src/modules/timesheets/components/shift-list-day-row.vue';
- import ShiftListDayRowMobile from 'src/modules/timesheets/components/mobile/shift-list-day-row-mobile.vue';
+ import ShiftListDateWidget from 'src/modules/timesheets/components/shift-list-date-widget.vue';
- import { inject, ref } from 'vue';
+ import { useI18n } from 'vue-i18n';
+ import { computed, inject, ref } from 'vue';
+ import { useUiStore } from 'src/stores/ui-store';
import { useTimesheetStore } from 'src/stores/timesheet-store';
import { useShiftApi } from 'src/modules/timesheets/composables/use-shift-api';
import { useTimesheetApi } from 'src/modules/timesheets/composables/use-timesheet-api';
import { isShiftOverlap } from 'src/modules/timesheets/utils/shift.util';
- import type { Shift } from 'src/modules/timesheets/models/shift.models';
+ import { Shift } from 'src/modules/timesheets/models/shift.models';
import type { TimesheetDay } from 'src/modules/timesheets/models/timesheet.models';
- // ================== State ==================
+ // ========== Constants ========================================
- const { timesheetId, weekDayIndex, day, dense = false, approved = false, holiday = false } = defineProps<{
+ const CURRENT_DATE_STRING = new Date().toISOString().slice(0, 10);
+
+ // ========== State ========================================
+
+ const day = defineModel