feat(timesheet_approval): begin integration of connection to approval SSE stream

This commit is contained in:
Nicolas Drolet 2026-01-20 16:27:23 -05:00
parent 0ac68d3d00
commit 2e2f2cd802
4 changed files with 29 additions and 0 deletions

View File

@ -367,6 +367,13 @@ export default {
hours_worked_title: "hours worked", hours_worked_title: "hours worked",
expenses_title: "expenses accrued", expenses_title: "expenses accrued",
}, },
event: {
update: "has updated",
create: "has created",
delete: "has deleted",
expense: "an expense",
shift: "a shift",
},
print_report: { print_report: {
title: "Download options", title: "Download options",
description: "Choose what to include in the report", description: "Choose what to include in the report",

View File

@ -367,6 +367,13 @@ export default {
hours_worked_title: "heures travaillées", hours_worked_title: "heures travaillées",
expenses_title: "dépenses encourues" 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",
},
print_report: { print_report: {
title: "options de téléchargement", title: "options de téléchargement",
description: "Choisissez ce qui sera inclu dans le rapport", description: "Choisissez ce qui sera inclu dans le rapport",

View File

@ -18,4 +18,8 @@ export const timesheetApprovalService = {
const response = await api.patch<BackendResponse<{shifts: number, expenses: number}>>('pay-periods/pay-period-approval', { email, timesheet_ids, is_approved}); const response = await api.patch<BackendResponse<{shifts: number, expenses: number}>>('pay-periods/pay-period-approval', { email, timesheet_ids, is_approved});
return response.data; return response.data;
}, },
subscribeToPayPeriodObservable: (): EventSource => {
return new EventSource('pay-periods/subscribe')
},
}; };

View File

@ -26,6 +26,7 @@ export const useTimesheetStore = defineStore('timesheet', () => {
const has_timesheet_preset = ref(false); const has_timesheet_preset = ref(false);
const current_pay_period_overview = ref<TimesheetApprovalOverview>(); const current_pay_period_overview = ref<TimesheetApprovalOverview>();
const pay_period_report = ref(); const pay_period_report = ref();
const pay_period_observer = ref<EventSource | undefined>();
const federal_holidays = ref<FederalHoliday[]>([]); const federal_holidays = ref<FederalHoliday[]>([]);
@ -180,6 +181,15 @@ export const useTimesheetStore = defineStore('timesheet', () => {
is_report_dialog_open.value = false; is_report_dialog_open.value = false;
}; };
const subscribeToPayPeriodObservable = () => {
if (pay_period_observer.value === undefined) {
pay_period_observer.value = timesheetApprovalService.subscribeToPayPeriodObservable();
pay_period_observer.value.onmessage = () => {
}
}
}
return { return {
is_loading, is_loading,
is_report_dialog_open, is_report_dialog_open,
@ -203,5 +213,6 @@ export const useTimesheetStore = defineStore('timesheet', () => {
getPayPeriodReport, getPayPeriodReport,
openReportDialog, openReportDialog,
closeReportDialog, closeReportDialog,
subscribeToPayPeriodObservable,
}; };
}); });