diff --git a/src/css/app.scss b/src/css/app.scss index c79a67f..29d530e 100644 --- a/src/css/app.scss +++ b/src/css/app.scss @@ -39,7 +39,7 @@ body.body--dark { } .frosted-glass { - background-color: #FFFA !important; + background-color: #0008 !important; backdrop-filter: blur(5px); } diff --git a/src/css/quasar.variables.scss b/src/css/quasar.variables.scss index b7391b6..22844cf 100644 --- a/src/css/quasar.variables.scss +++ b/src/css/quasar.variables.scss @@ -16,13 +16,13 @@ $primary : #30303A; $secondary : #DAE0E7; $accent : #0c9a3b; -$dark-shadow-color : #00220f; +$dark-shadow-color : #173625; $elevation-dark-umbra : rgba($dark-shadow-color, 1); -$elevation-dark-penumbra : rgba($dark-shadow-color, 0.2); -$elevation-dark-ambient : rgba($dark-shadow-color, 0.2); +$elevation-dark-penumbra : rgba($dark-shadow-color, 0.5); +$elevation-dark-ambient : rgba($dark-shadow-color, 0.3); -$dark-shadow-2 : 0 3px 5px -1px $elevation-dark-umbra, 0 5px 8px $elevation-dark-penumbra, 0 1px 14px $elevation-dark-ambient; +$dark-shadow-2 : 2px 3px $elevation-dark-umbra, 2px 3px 6px $elevation-dark-penumbra, 2px 3px 14px $elevation-dark-ambient; $layout-shadow-dark : 0 0 10px 5px rgba($dark-shadow-color, 0.5); $input-text-color : #455A64; diff --git a/src/modules/shared/components/pay-period-navigator.vue b/src/modules/shared/components/pay-period-navigator.vue index 86c4268..daacdfb 100644 --- a/src/modules/shared/components/pay-period-navigator.vue +++ b/src/modules/shared/components/pay-period-navigator.vue @@ -1,6 +1,9 @@ - \ No newline at end of file diff --git a/src/modules/timesheets/components/expense-dialog-form.vue b/src/modules/timesheets/components/expense-dialog-form.vue index 5574c57..8bc8fee 100644 --- a/src/modules/timesheets/components/expense-dialog-form.vue +++ b/src/modules/timesheets/components/expense-dialog-form.vue @@ -2,17 +2,19 @@ setup lang="ts" > - import { inject, ref } from 'vue'; - import { useI18n } from 'vue-i18n'; - import { useExpensesStore } from 'src/stores/expense-store'; - import { Expense, EXPENSE_TYPE, TYPES_WITH_AMOUNT_ONLY } from 'src/modules/timesheets/models/expense.models'; - import { useExpenseRules } from 'src/modules/timesheets/utils/expense.util'; - import { useExpensesApi } from 'src/modules/timesheets/composables/use-expense-api'; - import { useTimesheetStore } from 'src/stores/timesheet-store'; import { date } from 'quasar'; + import { computed, inject, ref } from 'vue'; + import { useI18n } from 'vue-i18n'; + import { useUiStore } from 'src/stores/ui-store'; + import { useExpensesStore } from 'src/stores/expense-store'; + import { useTimesheetStore } from 'src/stores/timesheet-store'; + import { useExpensesApi } from 'src/modules/timesheets/composables/use-expense-api'; + import { useExpenseRules } from 'src/modules/timesheets/utils/expense.util'; + import { Expense, EXPENSE_TYPE, TYPES_WITH_AMOUNT_ONLY } from 'src/modules/timesheets/models/expense.models'; const { t } = useI18n(); + const ui_store = useUiStore(); const timesheet_store = useTimesheetStore(); const expenses_store = useExpensesStore(); const expenses_api = useExpensesApi(); @@ -23,11 +25,16 @@ const employee_email = inject('employeeEmail'); const rules = useExpenseRules(t); + const period_start_date = computed(() => timesheet_store.pay_period?.period_start.replaceAll('-', '/') ?? ''); + const period_end_date = computed(() => timesheet_store.pay_period?.period_end.replaceAll('-', '/') ?? ''); + const openDatePicker = () => { is_navigator_open.value = true; - if (expenses_store.current_expense.date === '') { - expenses_store.current_expense.date = date.formatDate(new Date(), 'YYYY-MM-DD'); + if (timesheet_store.pay_period !== undefined) { + expenses_store.current_expense.date = timesheet_store.pay_period.period_start; } + console.log('current pay period start date: ', period_start_date.value); + console.log('current pay period end date: ', period_end_date.value); }; const cancelUpdateMode = () => { @@ -40,12 +47,6 @@ if (expenses_store.mode === 'create') await expenses_api.createExpenseByEmployeeEmail(employee_email ?? '', expenses_store.current_expense?.date ?? ''); else await expenses_api.updateExpenseByEmployeeEmail(employee_email ?? '', expenses_store.current_expense?.date ?? ''); }; - - const getExpenseCalendarRange = (current_date: string) => { - const period = timesheet_store.pay_period; - if (period !== undefined) return current_date >= period.period_start && current_date <= period.period_end; - return false; - } + +
diff --git a/src/modules/timesheets/components/expense-dialog-list-item.vue b/src/modules/timesheets/components/expense-dialog-list-item.vue index 83f85c8..59f7398 100644 --- a/src/modules/timesheets/components/expense-dialog-list-item.vue +++ b/src/modules/timesheets/components/expense-dialog-list-item.vue @@ -12,6 +12,7 @@ import { useAuthStore } from 'src/stores/auth-store'; import { CAN_APPROVE_PAY_PERIODS } from 'src/modules/shared/models/user.models'; import { Expense } from 'src/modules/timesheets/models/expense.models'; + import ExpenseDialogForm from 'src/modules/timesheets/components/expense-dialog-form.vue'; const { expense, horizontal = false } = defineProps<{ expense: Expense; @@ -29,6 +30,7 @@ const background_style = computed(() => deepEqual(expense, expenses_store.current_expense) ? 'border: 3px solid var(--q-accent);' : ''); const approved_class = computed(() => expense.is_approved ? ' bg-accent text-white' : '') const is_authorized_to_approve = computed(() => CAN_APPROVE_PAY_PERIODS.includes(auth_store.user?.role ?? 'GUEST')) + const is_showing_update_form = ref(false); const requestExpenseDeletion = async () => { await expenses_api.deleteExpenseById(expense.id); @@ -45,28 +47,27 @@ if (deepEqual(expense, expenses_store.current_expense)) { expenses_store.mode = 'create'; expenses_store.current_expense = new Expense(date.formatDate(new Date(), 'YYYY-MM-DD')); + is_showing_update_form.value = false; return; } expenses_store.mode = 'update'; expenses_store.current_expense = expense; expenses_store.initial_expense = unwrapAndClone(expense); + is_showing_update_form.value = true; } \ No newline at end of file diff --git a/src/modules/timesheets/components/expense-dialog-list.vue b/src/modules/timesheets/components/expense-dialog-list.vue index 34c7047..2d0b364 100644 --- a/src/modules/timesheets/components/expense-dialog-list.vue +++ b/src/modules/timesheets/components/expense-dialog-list.vue @@ -14,9 +14,10 @@ const expenses_list = computed(() => { if (timesheet_store.timesheets !== undefined) { - return timesheet_store.timesheets.flatMap(week => week.days).flatMap(day => day.expenses); + const current_expenses = timesheet_store.timesheets.flatMap(week => week.days).flatMap(day => day.expenses); + console.log('current expenses: ', current_expenses); + return current_expenses; } - return []; }) @@ -29,10 +30,12 @@ :class="horizontal ? 'row flex-center' : ''" > + {{ $t('timesheet.expense.empty_list') }} + - - - - + + + diff --git a/src/modules/timesheets/components/shift-crud-dialog-add-update-shift.vue b/src/modules/timesheets/components/shift-crud-dialog-add-update-shift.vue deleted file mode 100644 index db04be3..0000000 --- a/src/modules/timesheets/components/shift-crud-dialog-add-update-shift.vue +++ /dev/null @@ -1,81 +0,0 @@ - - - \ No newline at end of file diff --git a/src/modules/timesheets/components/shift-list-day-row.vue b/src/modules/timesheets/components/shift-list-day-row.vue index a9c8ccb..ffe3e08 100644 --- a/src/modules/timesheets/components/shift-list-day-row.vue +++ b/src/modules/timesheets/components/shift-list-day-row.vue @@ -14,9 +14,9 @@ const ui_store = useUiStore(); interface ShiftOption { - label: string; + label: string; value: ShiftType; - icon: string; + icon: string; icon_color: string; } @@ -85,7 +85,8 @@ \ 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 2d926eb..49d95cf 100644 --- a/src/modules/timesheets/components/shift-list-day.vue +++ b/src/modules/timesheets/components/shift-list-day.vue @@ -31,7 +31,7 @@