diff --git a/src/i18n/en-ca/index.ts b/src/i18n/en-ca/index.ts index ade6d75..58909a6 100644 --- a/src/i18n/en-ca/index.ts +++ b/src/i18n/en-ca/index.ts @@ -367,6 +367,14 @@ export default { hours_worked_title: "hours worked", expenses_title: "expenses accrued", }, + event: { + update: "has updated", + create: "has created", + delete: "has deleted", + expense: "an expense", + shift: "a shift", + preset: "many shifts", + }, print_report: { title: "Download options", description: "Choose what to include in the report", diff --git a/src/i18n/fr-ca/index.ts b/src/i18n/fr-ca/index.ts index d18f8fc..27d8ff3 100644 --- a/src/i18n/fr-ca/index.ts +++ b/src/i18n/fr-ca/index.ts @@ -367,6 +367,14 @@ export default { hours_worked_title: "heures travaillées", expenses_title: "dépenses encourues" }, + event: { + update: "a mis à jour", + create: "a créé", + delete: "a supprimé", + expense: "une dépense", + shift: " un quart de travail", + preset: "plusieurs quarts de travail", + }, print_report: { title: "options de téléchargement", description: "Choisissez ce qui sera inclu dans le rapport", diff --git a/src/modules/timesheet-approval/models/pay-period-event.models.ts b/src/modules/timesheet-approval/models/pay-period-event.models.ts new file mode 100644 index 0000000..80e03cd --- /dev/null +++ b/src/modules/timesheet-approval/models/pay-period-event.models.ts @@ -0,0 +1,5 @@ +export interface PayPeriodEvent { + employee_email: string; + event_type: 'shift' | 'expense' | 'preset'; + action: 'create' | 'update' | 'delete'; +} \ No newline at end of file diff --git a/src/modules/timesheet-approval/services/timesheet-approval-service.ts b/src/modules/timesheet-approval/services/timesheet-approval-service.ts index 383dde2..34416f0 100644 --- a/src/modules/timesheet-approval/services/timesheet-approval-service.ts +++ b/src/modules/timesheet-approval/services/timesheet-approval-service.ts @@ -18,4 +18,8 @@ export const timesheetApprovalService = { const response = await api.patch>('pay-periods/pay-period-approval', { email, timesheet_ids, is_approved}); return response.data; }, + + subscribeToPayPeriodObservable: (): EventSource => { + return new EventSource('http://localhost:3000/pay-periods/subscribe'); + }, }; \ No newline at end of file diff --git a/src/pages/timesheet-approval-page.vue b/src/pages/timesheet-approval-page.vue index 5677750..947c41c 100644 --- a/src/pages/timesheet-approval-page.vue +++ b/src/pages/timesheet-approval-page.vue @@ -9,7 +9,7 @@ import OverviewReport from 'src/modules/timesheet-approval/components/overview-report.vue'; import { date } from 'quasar'; - import { computed, onMounted, ref } from 'vue'; + import { computed, onMounted, onUnmounted, ref } from 'vue'; import { useTimesheetApprovalApi } from 'src/modules/timesheet-approval/composables/use-timesheet-approval-api'; import { useTimesheetStore } from 'src/stores/timesheet-store'; @@ -28,7 +28,12 @@ onMounted(async () => { await timesheet_approval_api.getTimesheetOverviewsByDate(date.formatDate(new Date(), 'YYYY-MM-DD')); + timesheet_store.subscribeToPayPeriodObservable(); }); + + onUnmounted(() => { + timesheet_store.unsubscribeToPayPeriodObservable(); + })