@feedmepos/mf-hrm-portal 2.3.0-dev → 2.3.0-dev.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ApprovalCodeList-cG0zmQVJ.js → ApprovalCodeList-Ce9BWzt9.js} +5 -5
- package/dist/{AuditLogList-BTifJhO1.js → AuditLogList-Cw7WN8K4.js} +4 -4
- package/dist/{ConditionBuilderForm.vue_vue_type_script_setup_true_lang-qr5TwLTK.js → ConditionBuilderForm.vue_vue_type_script_setup_true_lang-BuofBFPC.js} +2 -2
- package/dist/{EmployeeList-DzcMtxJ3.js → EmployeeList-B8qWPNvj.js} +25 -24
- package/dist/{GrantUserList-D5b7tJ8Y.js → GrantUserList-CgigJIPF.js} +6 -6
- package/dist/{Main-DFwdAWqn.js → Main-BfoVdxlY.js} +8 -8
- package/dist/{Main-B2r59IOW.js → Main-Cg2vC_cj.js} +5 -5
- package/dist/{Main-DkLBemi7.js → Main-D26pgKy1.js} +11 -11
- package/dist/{PermissionSetList-B80hrfMW.js → PermissionSetList-CbtDiF4k.js} +19 -18
- package/dist/PortalPermissionEditor.vue_vue_type_script_setup_true_lang-DW1oBTbb.js +4167 -0
- package/dist/{PortalUserSearcher.vue_vue_type_style_index_0_scoped_827dfd60_lang-fe-Rdwn4.js → PortalUserSearcher.vue_vue_type_style_index_0_scoped_827dfd60_lang-BVz6q3HE.js} +1 -1
- package/dist/ResponsiveContextMenu.vue_vue_type_script_setup_true_lang-mSJFKo7r.js +132 -0
- package/dist/{RoleList-DHO4JRKF.js → RoleList-D0I8mbyI.js} +21 -20
- package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-Ctwukt6o.js +492 -0
- package/dist/ScheduleGeneralPage-Kv4pnxCL.js +778 -0
- package/dist/ScheduleModal.vue_vue_type_script_setup_true_lang-CSA0aaqJ.js +2285 -0
- package/dist/SchedulePage-BMWd0bod.js +17942 -0
- package/dist/{SchedulePositionPage-C0hrO11d.js → SchedulePositionPage-5Xvx6Dk5.js} +66 -65
- package/dist/{TeamMemberList-CgFWLRBM.js → TeamMemberList-Bh7i5l16.js} +24 -23
- package/dist/{TimesheetList-Dp40G-0I.js → TimesheetList-BJKU-hnk.js} +7 -7
- package/dist/{TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-BFjrMhUG.js → TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-MMWnb9bj.js} +3 -3
- package/dist/{app-CmBSTvaI.js → app-BDJ5qxhF.js} +678 -594
- package/dist/app.js +1 -1
- package/dist/{approval-code-C9DmR4Md.js → approval-code-DHsUgc4K.js} +1 -1
- package/dist/{dayjs.min-CfL2DQ3d.js → dayjs.min-BWM0vY4w.js} +1 -1
- package/dist/{employee-DQcHjoij.js → employee-bBSuAJUr.js} +29 -28
- package/dist/{grant-user-Bv-pJ9Wt.js → grant-user-qzKHFTro.js} +1 -1
- package/dist/{iteration-BlavheWG.js → iteration-Dg7VAkAn.js} +1 -1
- package/dist/{lodash-QerqayrJ.js → lodash-BknY3p4o.js} +1 -1
- package/dist/{restaurant-D7PEQjPY.js → restaurant-BbYRA_IT.js} +4 -3
- package/dist/{role-RM2YLO7n.js → role-BJnJnNd_.js} +2 -2
- package/dist/{rule-DjlvYIuP.js → rule-BEuOY7Wf.js} +3 -3
- package/dist/src/api/schedule/index.d.ts +8 -1
- package/dist/src/components/layout/withScheduleShell.d.ts +10 -0
- package/dist/src/composables/useDiscardConfirm.d.ts +3 -1
- package/dist/src/types/employee.d.ts +1 -0
- package/dist/src/types/schedule.d.ts +3 -4
- package/dist/src/views/scheduling/components/ScheduleAreaRows.vue.d.ts +0 -8
- package/dist/src/views/scheduling/components/ScheduleBoardAreaRows.vue.d.ts +23 -0
- package/dist/src/views/scheduling/components/ScheduleBoardEditOverlays.vue.d.ts +17 -0
- package/dist/src/views/scheduling/components/ScheduleBoardEmployeeRows.vue.d.ts +31 -0
- package/dist/src/views/scheduling/components/ScheduleBoardGridHeader.vue.d.ts +24 -0
- package/dist/src/views/scheduling/components/ScheduleBoardInteractionOverlays.vue.d.ts +32 -0
- package/dist/src/views/scheduling/components/ScheduleBoardOnboardingOverlays.vue.d.ts +25 -0
- package/dist/src/views/scheduling/components/ScheduleBoardRails.vue.d.ts +17 -0
- package/dist/src/views/scheduling/components/ScheduleBoardToolbar.vue.d.ts +38 -0
- package/dist/src/views/scheduling/components/ScheduleBoardUtilityOverlays.vue.d.ts +22 -0
- package/dist/src/views/scheduling/components/{ScheduleOnboardingComplete.vue.d.ts → ScheduleCompletionDialog.vue.d.ts} +8 -3
- package/dist/src/views/scheduling/components/ScheduleConfirmModal.vue.d.ts +2 -1
- package/dist/src/views/scheduling/components/{ScheduleShiftCardMenu.vue.d.ts → ScheduleContextMenu.vue.d.ts} +7 -2
- package/dist/src/views/scheduling/components/{SchedulePdfPreview.vue.d.ts → ScheduleExportPreview.vue.d.ts} +1 -0
- package/dist/src/views/scheduling/components/ScheduleLoadState.vue.d.ts +9 -0
- package/dist/src/views/scheduling/components/ScheduleModal.vue.d.ts +26 -0
- package/dist/src/views/scheduling/components/{ScheduleExportDoneDialog.vue.d.ts → ScheduleOnboardingAssignPositionModal.vue.d.ts} +2 -2
- package/dist/src/views/scheduling/components/{ScheduleAssignEmployeePopover.vue.d.ts → ScheduleOnboardingClosedDayConfirm.vue.d.ts} +2 -2
- package/dist/src/views/scheduling/components/{ScheduleEmployeeMenu.vue.d.ts → ScheduleOnboardingDemandDays.vue.d.ts} +2 -2
- package/dist/src/views/scheduling/components/ScheduleOnboardingDemandFooter.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleOnboardingDemandHeader.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleOnboardingHoursProfileNotice.vue.d.ts +10 -0
- package/dist/src/views/scheduling/components/ScheduleOnboardingPositions.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleOnboardingReview.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleOnboardingWizardFooter.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleOnboardingWizardHeader.vue.d.ts +11 -0
- package/dist/src/views/scheduling/components/ScheduleSelect.vue.d.ts +17 -1
- package/dist/src/views/scheduling/components/ScheduleSetupBanner.vue.d.ts +12 -0
- package/dist/src/views/scheduling/components/ScheduleShiftPopover.vue.d.ts +2 -2
- package/dist/src/views/scheduling/components/ScheduleStaffRail.vue.d.ts +4 -4
- package/dist/src/views/scheduling/components/ScheduleStaffRows.vue.d.ts +2 -12
- package/dist/src/views/scheduling/components/ScheduleTopbar.vue.d.ts +3 -3
- package/dist/src/views/scheduling/composables/onboarding-types.d.ts +1 -1
- package/dist/src/views/scheduling/composables/remyPrompt.d.ts +13 -0
- package/dist/src/views/scheduling/composables/schedule-add-employee-form.d.ts +12 -8
- package/dist/src/views/scheduling/composables/schedule-board-helpers.d.ts +5 -1
- package/dist/src/views/scheduling/composables/schedule-breaks.d.ts +7 -1
- package/dist/src/views/scheduling/composables/schedule-calendar.d.ts +7 -0
- package/dist/src/views/scheduling/composables/schedule-cost.d.ts +19 -0
- package/dist/src/views/scheduling/composables/schedule-day-meta.d.ts +1 -3
- package/dist/src/views/scheduling/composables/schedule-demand-domain.d.ts +11 -0
- package/dist/src/views/scheduling/composables/schedule-export-matrix.d.ts +14 -0
- package/dist/src/views/scheduling/composables/schedule-time.d.ts +8 -0
- package/dist/src/views/scheduling/composables/schedule-week-cache.d.ts +1 -4
- package/dist/src/views/scheduling/composables/useRemyAppStore.d.ts +15 -0
- package/dist/src/views/scheduling/composables/useScheduleAddEmployee.d.ts +35 -21
- package/dist/src/views/scheduling/composables/useScheduleAreaBoard.d.ts +0 -13
- package/dist/src/views/scheduling/composables/useScheduleAreaDragDrop.d.ts +2 -8
- package/dist/src/views/scheduling/composables/useScheduleAssignmentMutations.d.ts +13 -0
- package/dist/src/views/scheduling/composables/useScheduleAutoSchedule.d.ts +3 -3
- package/dist/src/views/scheduling/composables/useScheduleBoard.d.ts +52 -11
- package/dist/src/views/scheduling/composables/useScheduleCloneOutletModal.d.ts +3 -1
- package/dist/src/views/scheduling/composables/useScheduleCostRail.d.ts +6 -1
- package/dist/src/views/scheduling/composables/useScheduleDayNote.d.ts +1 -2
- package/dist/src/views/scheduling/composables/useScheduleDayTimeline.d.ts +0 -3
- package/dist/src/views/scheduling/composables/useScheduleDemand.d.ts +7 -24
- package/dist/src/views/scheduling/composables/useScheduleDemandSheet.d.ts +26 -5
- package/dist/src/views/scheduling/composables/useScheduleEmployeeAccess.d.ts +16 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeAvailability.d.ts +13 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeCandidates.d.ts +27 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeCompensation.d.ts +7 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeForm.d.ts +22 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeIdentity.d.ts +9 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeMenu.d.ts +6 -3
- package/dist/src/views/scheduling/composables/useScheduleEmployeePersistence.d.ts +29 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeValidation.d.ts +20 -0
- package/dist/src/views/scheduling/composables/useScheduleExport.d.ts +19 -11
- package/dist/src/views/scheduling/composables/useScheduleGapPopover.d.ts +5 -6
- package/dist/src/views/scheduling/composables/useScheduleOnboardingAvailability.d.ts +58 -0
- package/dist/src/views/scheduling/composables/useScheduleOnboardingDemand.d.ts +45 -0
- package/dist/src/views/scheduling/composables/useScheduleOnboardingEmployees.d.ts +206 -0
- package/dist/src/views/scheduling/composables/useScheduleOnboardingHours.d.ts +15 -0
- package/dist/src/views/scheduling/composables/useScheduleOnboardingNavigation.d.ts +11 -0
- package/dist/src/views/scheduling/composables/useScheduleOnboardingWizard.d.ts +313 -529
- package/dist/src/views/scheduling/composables/useSchedulePageActions.d.ts +18 -0
- package/dist/src/views/scheduling/composables/useSchedulePageCellActions.d.ts +21 -0
- package/dist/src/views/scheduling/composables/useSchedulePageCellDrop.d.ts +18 -0
- package/dist/src/views/scheduling/composables/useSchedulePageEmployeeActions.d.ts +22 -0
- package/dist/src/views/scheduling/composables/useSchedulePageOverlays.d.ts +10 -7
- package/dist/src/views/scheduling/composables/useSchedulePdfExport.d.ts +19 -0
- package/dist/src/views/scheduling/composables/useSchedulePositionModal.d.ts +4 -1
- package/dist/src/views/scheduling/composables/useSchedulePositions.d.ts +4 -2
- package/dist/src/views/scheduling/composables/useSchedulePublish.d.ts +9 -1
- package/dist/src/views/scheduling/composables/useSchedulePublishPersistence.d.ts +11 -0
- package/dist/src/views/scheduling/composables/useScheduleRoster.d.ts +32 -4
- package/dist/src/views/scheduling/composables/useScheduleSettings.d.ts +8 -25
- package/dist/src/views/scheduling/composables/useScheduleShiftActions.d.ts +19 -3
- package/dist/src/views/scheduling/composables/useScheduleShiftDraft.d.ts +63 -0
- package/dist/src/views/scheduling/composables/useScheduleShiftPersistence.d.ts +17 -0
- package/dist/src/views/scheduling/composables/useScheduleShiftPopover.d.ts +31 -9
- package/dist/src/views/scheduling/composables/useScheduleStatsRow.d.ts +4 -1
- package/dist/src/views/scheduling/composables/useScheduleTour.d.ts +6 -4
- package/dist/src/views/scheduling/country-rules/index.d.ts +24 -0
- package/dist/src/views/scheduling/data.d.ts +16 -7
- package/dist/src/views/scheduling/locales/index.d.ts +80 -0
- package/dist/src/views/scheduling/schedule-constants.d.ts +7 -0
- package/dist/src/views/scheduling/schedule-state.d.ts +104 -16
- package/dist/src/views/scheduling/schedule-store.d.ts +30 -6
- package/dist/src/views/scheduling/types.d.ts +29 -5
- package/dist/style.css +1 -1
- package/dist/tsconfig.app.tsbuildinfo +1 -1
- package/dist/{useAppStore-d_nHyK5u.js → useAppStore-BoLkvkE2.js} +1 -1
- package/dist/useDiscardConfirm-CzZSPyvh.js +28 -0
- package/dist/{useLoading-JFoghhRz.js → useLoading-Ch1AUYT1.js} +1 -1
- package/dist/{useReportPermissions-Bl6Br79r.js → useReportPermissions-D8hJ5W0t.js} +3 -3
- package/package.json +2 -1
- package/dist/PortalPermissionEditor.vue_vue_type_script_setup_true_lang-DjNcJQM9.js +0 -4167
- package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-B-XtB64L.js +0 -452
- package/dist/ScheduleGeneralPage-WlBM8bxV.js +0 -629
- package/dist/SchedulePage-Nm0krGVU.js +0 -17056
- package/dist/ScheduleSelect.vue_vue_type_script_setup_true_lang-DTDXir_7.js +0 -1150
- package/dist/src/components/layout/withShell.d.ts +0 -14
- package/dist/src/views/scheduling/components/ScheduleAllShiftsRow.vue.d.ts +0 -22
- package/dist/src/views/scheduling/components/ScheduleOpenShiftCardMenu.vue.d.ts +0 -14
- package/dist/src/views/scheduling/components/ScheduleStackPopover.vue.d.ts +0 -14
- package/dist/src/views/scheduling/components/ScheduleTourAllSet.vue.d.ts +0 -6
- package/dist/src/views/scheduling/composables/useScheduleAllShiftsRow.d.ts +0 -77
- package/dist/src/views/scheduling/composables/useScheduleAssign.d.ts +0 -122
- package/dist/src/views/scheduling/composables/useScheduleOpenShiftCard.d.ts +0 -23
- package/dist/src/views/scheduling/composables/useScheduleStaffRail.d.ts +0 -17
- package/dist/src/views/scheduling/composables/useScheduleTopbar.d.ts +0 -10
- package/dist/useDiscardConfirm-DPhEV6v0.js +0 -157
- /package/dist/src/{components/layout/AppSidebar.vue.d.ts → views/scheduling/components/SchedulePublishShareArt.vue.d.ts} +0 -0
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { Role } from '@/types/role';
|
|
2
1
|
import type { Employee } from '../types';
|
|
3
2
|
import type { ScheduleBoardApi } from './useScheduleBoard';
|
|
4
3
|
import { type ScheduleAddEmployeeMode, type ScheduleAddEmployeeStep } from './schedule-add-employee-form';
|
|
@@ -6,7 +5,9 @@ export type { ScheduleAddEmployeeForm, ScheduleAddEmployeeMode, ScheduleAddEmplo
|
|
|
6
5
|
/** Add-employee wizard: a "how do you want to add them" step, then one detail form covering
|
|
7
6
|
* identity, locations, pay, scheduling caps, availability, positions and POS access — plus
|
|
8
7
|
* the "select existing POS staff" side dialog the first step can hand off to. */
|
|
9
|
-
export declare function useScheduleAddEmployee(board: ScheduleBoardApi
|
|
8
|
+
export declare function useScheduleAddEmployee(board: ScheduleBoardApi, options?: {
|
|
9
|
+
notify?: (message: string, type?: 'success' | 'error' | 'info') => void;
|
|
10
|
+
}): {
|
|
10
11
|
open: import("vue").Ref<boolean, boolean>;
|
|
11
12
|
selectExistingOpen: import("vue").Ref<boolean, boolean>;
|
|
12
13
|
step: import("vue").Ref<ScheduleAddEmployeeStep, ScheduleAddEmployeeStep>;
|
|
@@ -20,10 +21,11 @@ export declare function useScheduleAddEmployee(board: ScheduleBoardApi): {
|
|
|
20
21
|
payBasis: "hourly" | "monthly";
|
|
21
22
|
payAmount: string;
|
|
22
23
|
maxHours: string;
|
|
24
|
+
maxHoursPerDay: string;
|
|
23
25
|
minHours: string;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
workingHoursEnabled: boolean;
|
|
27
|
+
overtimeEnabled: boolean;
|
|
28
|
+
maxHoursPerMonth: string;
|
|
27
29
|
availDays: boolean[];
|
|
28
30
|
availHours: {
|
|
29
31
|
from: string;
|
|
@@ -37,7 +39,10 @@ export declare function useScheduleAddEmployee(board: ScheduleBoardApi): {
|
|
|
37
39
|
masterUser: boolean;
|
|
38
40
|
masterCode: string;
|
|
39
41
|
posAccessEnabled: boolean;
|
|
40
|
-
|
|
42
|
+
posRoles: {
|
|
43
|
+
outlet: string;
|
|
44
|
+
roleId: string;
|
|
45
|
+
}[];
|
|
41
46
|
};
|
|
42
47
|
sectionId: import("vue").Ref<string, string>;
|
|
43
48
|
isEditing: import("vue").ComputedRef<boolean>;
|
|
@@ -46,12 +51,14 @@ export declare function useScheduleAddEmployee(board: ScheduleBoardApi): {
|
|
|
46
51
|
secOpen: import("vue").Ref<boolean, boolean>;
|
|
47
52
|
secondaryOptions: import("vue").ComputedRef<string[]>;
|
|
48
53
|
isPart: import("vue").ComputedRef<boolean>;
|
|
49
|
-
dayLit: (
|
|
54
|
+
dayLit: (index: number) => boolean;
|
|
50
55
|
avLabel: import("vue").ComputedRef<"Weekly availability" | "Time off days">;
|
|
51
56
|
avAllLabel: import("vue").ComputedRef<"Clear all" | "Select all" | "No days off" | "Every day off">;
|
|
52
|
-
maxHoursPlaceholder: import("vue").ComputedRef<
|
|
53
|
-
|
|
54
|
-
|
|
57
|
+
maxHoursPlaceholder: import("vue").ComputedRef<string>;
|
|
58
|
+
minHoursPlaceholder: import("vue").ComputedRef<string>;
|
|
59
|
+
maxHoursPerDayPlaceholder: import("vue").ComputedRef<string>;
|
|
60
|
+
maxHoursPerMonthPlaceholder: import("vue").ComputedRef<string>;
|
|
61
|
+
toggleOvertime: () => void;
|
|
55
62
|
payUnit: import("vue").ComputedRef<"/month" | "/hour">;
|
|
56
63
|
effectiveRate: import("vue").ComputedRef<number>;
|
|
57
64
|
passcodeValue: import("vue").ComputedRef<string>;
|
|
@@ -66,6 +73,7 @@ export declare function useScheduleAddEmployee(board: ScheduleBoardApi): {
|
|
|
66
73
|
payLine: import("vue").ComputedRef<string>;
|
|
67
74
|
nameError: import("vue").ComputedRef<boolean>;
|
|
68
75
|
passError: import("vue").ComputedRef<boolean>;
|
|
76
|
+
posRolesError: import("vue").ComputedRef<boolean>;
|
|
69
77
|
availabilityError: import("vue").ComputedRef<boolean>;
|
|
70
78
|
saving: import("vue").Ref<boolean, boolean>;
|
|
71
79
|
saveError: import("vue").Ref<string | null, string | null>;
|
|
@@ -73,6 +81,7 @@ export declare function useScheduleAddEmployee(board: ScheduleBoardApi): {
|
|
|
73
81
|
candidatesError: import("vue").Ref<string | null, string | null>;
|
|
74
82
|
openWizard: (section: string) => void;
|
|
75
83
|
openEditFor: (emp: Employee) => void;
|
|
84
|
+
confirmClose: () => void;
|
|
76
85
|
close: () => void;
|
|
77
86
|
setMode: (m: ScheduleAddEmployeeMode) => void;
|
|
78
87
|
openSelectExisting: () => void;
|
|
@@ -81,21 +90,26 @@ export declare function useScheduleAddEmployee(board: ScheduleBoardApi): {
|
|
|
81
90
|
next: () => void;
|
|
82
91
|
back: () => void;
|
|
83
92
|
toggleMulti: (which: "loc" | "sec") => void;
|
|
84
|
-
toggleLocation: (
|
|
85
|
-
removeLocation: (
|
|
86
|
-
toggleSecondary: (
|
|
87
|
-
removeSecondary: (
|
|
88
|
-
setPrimaryPosition: (
|
|
93
|
+
toggleLocation: (location: string) => void;
|
|
94
|
+
removeLocation: (location: string) => void;
|
|
95
|
+
toggleSecondary: (position: string) => void;
|
|
96
|
+
removeSecondary: (position: string) => void;
|
|
97
|
+
setPrimaryPosition: (position: string) => void;
|
|
89
98
|
setPayBasis: (basis: "hourly" | "monthly") => void;
|
|
90
|
-
toggleAvailDay: (
|
|
99
|
+
toggleAvailDay: (index: number) => void;
|
|
91
100
|
availAll: () => void;
|
|
92
|
-
setAvailHour: (
|
|
93
|
-
copyAvailHourDown: (
|
|
94
|
-
setPasscodeDigit: (
|
|
101
|
+
setAvailHour: (index: number, field: "from" | "to", value: string) => void;
|
|
102
|
+
copyAvailHourDown: (index: number) => void;
|
|
103
|
+
setPasscodeDigit: (index: number, value: string) => void;
|
|
95
104
|
generatePasscode: () => void;
|
|
96
105
|
togglePosAccess: () => void;
|
|
97
|
-
|
|
98
|
-
|
|
106
|
+
addPosRoleRow: () => void;
|
|
107
|
+
removePosRoleRow: (index: number) => void;
|
|
108
|
+
isCurrentOutletRow: (index: number) => boolean;
|
|
109
|
+
setPosRoleOutlet: (index: number, outlet: string) => void;
|
|
110
|
+
setPosRoleId: (index: number, roleId: string) => void;
|
|
111
|
+
posRoleOptionsFor: (outlet: string) => import("../../../types/role").Role[];
|
|
112
|
+
posRolesHint: import("vue").ComputedRef<"" | "No outlet assigned, so their passcode will not open a till yet." | "The same outlet is listed twice — only the last role on it will apply.">;
|
|
99
113
|
create: () => Promise<boolean>;
|
|
100
114
|
};
|
|
101
115
|
export type ScheduleAddEmployeeApi = ReturnType<typeof useScheduleAddEmployee>;
|
|
@@ -37,19 +37,6 @@ export declare function qualifiedFor(emp: Employee, position: string): boolean;
|
|
|
37
37
|
export declare function useScheduleAreaBoard(board: ScheduleBoardApi): {
|
|
38
38
|
positionRows: import("vue").ComputedRef<string[]>;
|
|
39
39
|
assignedOn: (dayIdx: number, position: string) => ScheduleAssignedSlot[];
|
|
40
|
-
unfilledOpenShiftsOn: (dayIdx: number, position: string) => {
|
|
41
|
-
id: number;
|
|
42
|
-
dayIdx: number;
|
|
43
|
-
position: string;
|
|
44
|
-
required: number;
|
|
45
|
-
filledBy: number | null;
|
|
46
|
-
sen?: "junior" | "senior" | undefined;
|
|
47
|
-
empType?: "full" | "part" | undefined;
|
|
48
|
-
name?: string | undefined;
|
|
49
|
-
start: string;
|
|
50
|
-
end: string;
|
|
51
|
-
breakMins?: number | undefined;
|
|
52
|
-
}[];
|
|
53
40
|
poolFor: (position: string) => Employee[];
|
|
54
41
|
cellMeta: (dayIdx: number, position: string) => SchedulePositionCellMeta;
|
|
55
42
|
positionWeekMeta: (position: string) => {
|
|
@@ -1,12 +1,6 @@
|
|
|
1
1
|
import type { ScheduleBoardApi } from './useScheduleBoard';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
* dropStaffOnCell(), scoped to this board's model (no "unspecialised, so ask what they can
|
|
5
|
-
* do" grant flow, no split shifts): dropping fills an existing open shift for that position/day
|
|
6
|
-
* if there is one, otherwise opens the shift editor pre-filled with this person, day and
|
|
7
|
-
* position so the manager sets the hours. */
|
|
8
|
-
export declare function useScheduleAreaDragDrop(board: ScheduleBoardApi, areaBoard: ScheduleAreaBoardApi, handlers: {
|
|
9
|
-
onFillOpenShift: (openId: number, empId: number) => void;
|
|
2
|
+
/** Dragging a person from the staff rail onto a position/day cell opens a normal assigned shift. */
|
|
3
|
+
export declare function useScheduleAreaDragDrop(board: ScheduleBoardApi, handlers: {
|
|
10
4
|
onCreateShift: (empId: number, dayIdx: number, position: string) => void;
|
|
11
5
|
onNotQualified: (empName: string, position: string) => void;
|
|
12
6
|
}): {
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { DaySlot, Employee, WorkSlot } from '../types';
|
|
2
|
+
export interface ScheduleAssignmentMutationOptions {
|
|
3
|
+
dateFor: (offset: number, dayIdx: number) => string | null;
|
|
4
|
+
employeeAt: (offset: number, employeeId: number) => Employee | undefined;
|
|
5
|
+
currentOffset: () => number;
|
|
6
|
+
onPersistError?: (message: string) => void;
|
|
7
|
+
}
|
|
8
|
+
export declare function useScheduleAssignmentMutations(options: ScheduleAssignmentMutationOptions): {
|
|
9
|
+
persistSlot: (empId: number, dayIdx: number, oldSlot: DaySlot, newSlot: WorkSlot | WorkSlot[], dateOverride?: string | null, offset?: number, restoreDaySlot?: DaySlot) => Promise<void>;
|
|
10
|
+
persistRemoval: (oldSlot: DaySlot) => Promise<void>;
|
|
11
|
+
persistMove: (toEmpId: number, dayIdx: number, slot: WorkSlot | WorkSlot[], dateOverride?: string | null) => Promise<void>;
|
|
12
|
+
recoverPersistFailure: (error: unknown, fallback: string) => Promise<void>;
|
|
13
|
+
};
|
|
@@ -57,9 +57,9 @@ export declare function useScheduleAutoSchedule(board: ScheduleBoardApi, demand:
|
|
|
57
57
|
occupied: number;
|
|
58
58
|
notQualified: number;
|
|
59
59
|
weeklyCap: number;
|
|
60
|
+
dailyCap: number;
|
|
60
61
|
rest: number;
|
|
61
62
|
dayOff: number;
|
|
62
|
-
dayCap: number;
|
|
63
63
|
};
|
|
64
64
|
}[];
|
|
65
65
|
metrics: {
|
|
@@ -121,9 +121,9 @@ export declare function useScheduleAutoSchedule(board: ScheduleBoardApi, demand:
|
|
|
121
121
|
occupied: number;
|
|
122
122
|
notQualified: number;
|
|
123
123
|
weeklyCap: number;
|
|
124
|
+
dailyCap: number;
|
|
124
125
|
rest: number;
|
|
125
126
|
dayOff: number;
|
|
126
|
-
dayCap: number;
|
|
127
127
|
};
|
|
128
128
|
}[];
|
|
129
129
|
metrics: {
|
|
@@ -185,9 +185,9 @@ export declare function useScheduleAutoSchedule(board: ScheduleBoardApi, demand:
|
|
|
185
185
|
occupied: number;
|
|
186
186
|
notQualified: number;
|
|
187
187
|
weeklyCap: number;
|
|
188
|
+
dailyCap: number;
|
|
188
189
|
rest: number;
|
|
189
190
|
dayOff: number;
|
|
190
|
-
dayCap: number;
|
|
191
191
|
};
|
|
192
192
|
}[];
|
|
193
193
|
metrics: {
|
|
@@ -1,27 +1,26 @@
|
|
|
1
1
|
import type { Employee, OpenShift, PendingChange, ScheduleStatusInfo, ScheduleVersion, ScheduleVersionSnapshot, Section, WorkSlot } from '../types';
|
|
2
2
|
import { RANGE_LEN } from './schedule-week-cache';
|
|
3
|
-
import { contractCapFor, isGenuineSplitGroup, isLeaveSlot, isPartTime, isoDateKey, isWorkSlot, overContract, positionKeyOf, workSlotsOf } from './schedule-board-helpers';
|
|
4
|
-
export { contractCapFor, isGenuineSplitGroup, isLeaveSlot, isPartTime, isoDateKey, isWorkSlot, overContract, positionKeyOf, workSlotsOf, };
|
|
3
|
+
import { contractCapFor, isGenuineSplitGroup, isLeaveSlot, isPartTime, isoDateKey, isWorkSlot, overContract, overlapsAnotherSlot, positionKeyOf, workSlotsOf } from './schedule-board-helpers';
|
|
4
|
+
export { contractCapFor, isGenuineSplitGroup, isLeaveSlot, isPartTime, isoDateKey, isWorkSlot, overContract, overlapsAnotherSlot, positionKeyOf, workSlotsOf, };
|
|
5
5
|
export { RANGE_LEN };
|
|
6
6
|
export type ScheduleGranularity = 'day' | 'week';
|
|
7
7
|
export declare function useScheduleBoard(handlers?: {
|
|
8
8
|
onPersistError?: (message: string) => void;
|
|
9
9
|
}): {
|
|
10
10
|
dayNote: (dayIdx: number) => import("../types").ScheduleDayNote | null;
|
|
11
|
-
setDayNote: (dayIdx: number, title: string, desc: string) => void;
|
|
11
|
+
setDayNote: (dayIdx: number, title: string, desc: string, isPublicHoliday?: boolean) => void;
|
|
12
12
|
clearDayNote: (dayIdx: number) => void;
|
|
13
13
|
isStandingClosedWeekday: (dayIdx: number) => boolean;
|
|
14
14
|
holidayName: (dayIdx: number) => string | null;
|
|
15
|
-
holidayIsAuto: (dayIdx: number) => boolean;
|
|
16
15
|
isPublicHoliday: (dayIdx: number) => boolean;
|
|
17
16
|
holidayRateApplies: (dayIdx: number) => boolean;
|
|
18
|
-
setHolidayNormal: (dayIdx: number, toNormal: boolean) => void;
|
|
19
17
|
setPublicHoliday: (dayIdx: number, on: boolean) => void;
|
|
20
18
|
otRateOn: (dayIdx: number) => number;
|
|
21
19
|
regularRateOn: (dayIdx: number) => number;
|
|
22
20
|
isHoliday: (dayIdx: number) => boolean;
|
|
23
21
|
employees: import("vue").Ref<{
|
|
24
22
|
id: number;
|
|
23
|
+
sourceId: string;
|
|
25
24
|
name: string;
|
|
26
25
|
employmentType: "FULLTIME" | "PARTTIME";
|
|
27
26
|
role: string;
|
|
@@ -32,10 +31,12 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
32
31
|
contractHours?: number | undefined;
|
|
33
32
|
rate: number;
|
|
34
33
|
positions: string[];
|
|
34
|
+
archivedPositions?: string[] | undefined;
|
|
35
35
|
shifts: ({
|
|
36
36
|
start: string;
|
|
37
37
|
end: string;
|
|
38
38
|
role: string;
|
|
39
|
+
positionId?: string | undefined;
|
|
39
40
|
status: import("../types").ShiftStatus;
|
|
40
41
|
clock?: {
|
|
41
42
|
in: string | null;
|
|
@@ -57,6 +58,7 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
57
58
|
breakPayType: "PAID" | "UNPAID";
|
|
58
59
|
})[] | undefined;
|
|
59
60
|
assignmentId?: string | undefined;
|
|
61
|
+
updatedAt?: string | undefined;
|
|
60
62
|
splitGroupId?: string | undefined;
|
|
61
63
|
} | {
|
|
62
64
|
timeOff: "approved" | "pending";
|
|
@@ -83,6 +85,7 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
83
85
|
start: string;
|
|
84
86
|
end: string;
|
|
85
87
|
role: string;
|
|
88
|
+
positionId?: string | undefined;
|
|
86
89
|
status: import("../types").ShiftStatus;
|
|
87
90
|
clock?: {
|
|
88
91
|
in: string | null;
|
|
@@ -104,6 +107,7 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
104
107
|
breakPayType: "PAID" | "UNPAID";
|
|
105
108
|
})[] | undefined;
|
|
106
109
|
assignmentId?: string | undefined;
|
|
110
|
+
updatedAt?: string | undefined;
|
|
107
111
|
splitGroupId?: string | undefined;
|
|
108
112
|
}[] | null)[];
|
|
109
113
|
remarks: {
|
|
@@ -120,9 +124,16 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
120
124
|
payBasis?: "hourly" | "monthly" | undefined;
|
|
121
125
|
payAmount?: number | undefined;
|
|
122
126
|
maxHours?: number | undefined;
|
|
123
|
-
maxOtHours?: number | undefined;
|
|
124
127
|
minHours?: number | undefined;
|
|
125
|
-
|
|
128
|
+
minHoursPerDay?: number | undefined;
|
|
129
|
+
workingHours?: {
|
|
130
|
+
minHoursPerDay: number | null;
|
|
131
|
+
maxHoursPerDay: number | null;
|
|
132
|
+
maxHoursPerWeek: number | null;
|
|
133
|
+
} | undefined;
|
|
134
|
+
overtime?: {
|
|
135
|
+
maxHoursPerMonth: number | null;
|
|
136
|
+
} | undefined;
|
|
126
137
|
preferences?: string[] | undefined;
|
|
127
138
|
seniority?: "senior" | "junior" | "" | undefined;
|
|
128
139
|
availDays?: boolean[] | undefined;
|
|
@@ -131,9 +142,11 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
131
142
|
to: string;
|
|
132
143
|
}[] | undefined;
|
|
133
144
|
passcode?: string | undefined;
|
|
145
|
+
code?: string | undefined;
|
|
134
146
|
masterUser?: boolean | undefined;
|
|
135
147
|
}[], Employee[] | {
|
|
136
148
|
id: number;
|
|
149
|
+
sourceId: string;
|
|
137
150
|
name: string;
|
|
138
151
|
employmentType: "FULLTIME" | "PARTTIME";
|
|
139
152
|
role: string;
|
|
@@ -144,10 +157,12 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
144
157
|
contractHours?: number | undefined;
|
|
145
158
|
rate: number;
|
|
146
159
|
positions: string[];
|
|
160
|
+
archivedPositions?: string[] | undefined;
|
|
147
161
|
shifts: ({
|
|
148
162
|
start: string;
|
|
149
163
|
end: string;
|
|
150
164
|
role: string;
|
|
165
|
+
positionId?: string | undefined;
|
|
151
166
|
status: import("../types").ShiftStatus;
|
|
152
167
|
clock?: {
|
|
153
168
|
in: string | null;
|
|
@@ -169,6 +184,7 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
169
184
|
breakPayType: "PAID" | "UNPAID";
|
|
170
185
|
})[] | undefined;
|
|
171
186
|
assignmentId?: string | undefined;
|
|
187
|
+
updatedAt?: string | undefined;
|
|
172
188
|
splitGroupId?: string | undefined;
|
|
173
189
|
} | {
|
|
174
190
|
timeOff: "approved" | "pending";
|
|
@@ -195,6 +211,7 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
195
211
|
start: string;
|
|
196
212
|
end: string;
|
|
197
213
|
role: string;
|
|
214
|
+
positionId?: string | undefined;
|
|
198
215
|
status: import("../types").ShiftStatus;
|
|
199
216
|
clock?: {
|
|
200
217
|
in: string | null;
|
|
@@ -216,6 +233,7 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
216
233
|
breakPayType: "PAID" | "UNPAID";
|
|
217
234
|
})[] | undefined;
|
|
218
235
|
assignmentId?: string | undefined;
|
|
236
|
+
updatedAt?: string | undefined;
|
|
219
237
|
splitGroupId?: string | undefined;
|
|
220
238
|
}[] | null)[];
|
|
221
239
|
remarks: {
|
|
@@ -232,9 +250,16 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
232
250
|
payBasis?: "hourly" | "monthly" | undefined;
|
|
233
251
|
payAmount?: number | undefined;
|
|
234
252
|
maxHours?: number | undefined;
|
|
235
|
-
maxOtHours?: number | undefined;
|
|
236
253
|
minHours?: number | undefined;
|
|
237
|
-
|
|
254
|
+
minHoursPerDay?: number | undefined;
|
|
255
|
+
workingHours?: {
|
|
256
|
+
minHoursPerDay: number | null;
|
|
257
|
+
maxHoursPerDay: number | null;
|
|
258
|
+
maxHoursPerWeek: number | null;
|
|
259
|
+
} | undefined;
|
|
260
|
+
overtime?: {
|
|
261
|
+
maxHoursPerMonth: number | null;
|
|
262
|
+
} | undefined;
|
|
238
263
|
preferences?: string[] | undefined;
|
|
239
264
|
seniority?: "senior" | "junior" | "" | undefined;
|
|
240
265
|
availDays?: boolean[] | undefined;
|
|
@@ -243,6 +268,7 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
243
268
|
to: string;
|
|
244
269
|
}[] | undefined;
|
|
245
270
|
passcode?: string | undefined;
|
|
271
|
+
code?: string | undefined;
|
|
246
272
|
masterUser?: boolean | undefined;
|
|
247
273
|
}[]>;
|
|
248
274
|
sections: import("vue").Ref<{
|
|
@@ -281,7 +307,6 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
281
307
|
end: string;
|
|
282
308
|
breakMins?: number | undefined;
|
|
283
309
|
}[]>;
|
|
284
|
-
highlightEmpId: import("vue").Ref<number | null, number | null>;
|
|
285
310
|
rangeStart: import("vue").Ref<Date, Date>;
|
|
286
311
|
weekOffset: import("vue").ComputedRef<number>;
|
|
287
312
|
peekWeek: (offset: number) => import("./schedule-week-cache").WeekBucket;
|
|
@@ -290,11 +315,13 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
290
315
|
dayLocked: (dayIdx: number) => boolean;
|
|
291
316
|
pendingChanges: import("vue").Ref<{
|
|
292
317
|
empId: number;
|
|
318
|
+
employeeKey: string;
|
|
293
319
|
dayIdx: number;
|
|
294
320
|
kind: "add" | "change" | "remove";
|
|
295
321
|
label: string;
|
|
296
322
|
}[], PendingChange[] | {
|
|
297
323
|
empId: number;
|
|
324
|
+
employeeKey: string;
|
|
298
325
|
dayIdx: number;
|
|
299
326
|
kind: "add" | "change" | "remove";
|
|
300
327
|
label: string;
|
|
@@ -304,7 +331,8 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
304
331
|
empId: number;
|
|
305
332
|
dayIdx: number;
|
|
306
333
|
slot: WorkSlot;
|
|
307
|
-
}>) => Promise<
|
|
334
|
+
}>) => Promise<boolean>;
|
|
335
|
+
flushAssignmentWrites: () => Promise<void>;
|
|
308
336
|
recordChange: (empId: number, dayIdx: number, kind: PendingChange["kind"], label: string) => void;
|
|
309
337
|
scheduleVersions: import("vue").Ref<{
|
|
310
338
|
v: number;
|
|
@@ -321,6 +349,7 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
321
349
|
start: string;
|
|
322
350
|
end: string;
|
|
323
351
|
role: string;
|
|
352
|
+
positionId?: string | undefined;
|
|
324
353
|
status: import("../types").ShiftStatus;
|
|
325
354
|
clock?: {
|
|
326
355
|
in: string | null;
|
|
@@ -342,6 +371,7 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
342
371
|
breakPayType: "PAID" | "UNPAID";
|
|
343
372
|
})[] | undefined;
|
|
344
373
|
assignmentId?: string | undefined;
|
|
374
|
+
updatedAt?: string | undefined;
|
|
345
375
|
splitGroupId?: string | undefined;
|
|
346
376
|
} | {
|
|
347
377
|
timeOff: "approved" | "pending";
|
|
@@ -368,6 +398,7 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
368
398
|
start: string;
|
|
369
399
|
end: string;
|
|
370
400
|
role: string;
|
|
401
|
+
positionId?: string | undefined;
|
|
371
402
|
status: import("../types").ShiftStatus;
|
|
372
403
|
clock?: {
|
|
373
404
|
in: string | null;
|
|
@@ -389,6 +420,7 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
389
420
|
breakPayType: "PAID" | "UNPAID";
|
|
390
421
|
})[] | undefined;
|
|
391
422
|
assignmentId?: string | undefined;
|
|
423
|
+
updatedAt?: string | undefined;
|
|
392
424
|
splitGroupId?: string | undefined;
|
|
393
425
|
}[] | null)[];
|
|
394
426
|
}[];
|
|
@@ -407,6 +439,7 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
407
439
|
start: string;
|
|
408
440
|
end: string;
|
|
409
441
|
role: string;
|
|
442
|
+
positionId?: string | undefined;
|
|
410
443
|
status: import("../types").ShiftStatus;
|
|
411
444
|
clock?: {
|
|
412
445
|
in: string | null;
|
|
@@ -428,6 +461,7 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
428
461
|
breakPayType: "PAID" | "UNPAID";
|
|
429
462
|
})[] | undefined;
|
|
430
463
|
assignmentId?: string | undefined;
|
|
464
|
+
updatedAt?: string | undefined;
|
|
431
465
|
splitGroupId?: string | undefined;
|
|
432
466
|
} | {
|
|
433
467
|
timeOff: "approved" | "pending";
|
|
@@ -454,6 +488,7 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
454
488
|
start: string;
|
|
455
489
|
end: string;
|
|
456
490
|
role: string;
|
|
491
|
+
positionId?: string | undefined;
|
|
457
492
|
status: import("../types").ShiftStatus;
|
|
458
493
|
clock?: {
|
|
459
494
|
in: string | null;
|
|
@@ -475,6 +510,7 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
475
510
|
breakPayType: "PAID" | "UNPAID";
|
|
476
511
|
})[] | undefined;
|
|
477
512
|
assignmentId?: string | undefined;
|
|
513
|
+
updatedAt?: string | undefined;
|
|
478
514
|
splitGroupId?: string | undefined;
|
|
479
515
|
}[] | null)[];
|
|
480
516
|
}[];
|
|
@@ -498,6 +534,7 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
498
534
|
rangeLabel: import("vue").ComputedRef<string>;
|
|
499
535
|
isToday: (dayIdx: number) => boolean;
|
|
500
536
|
dateKey: (dayIdx: number) => string | null;
|
|
537
|
+
dateKeyAt: (offset: number, dayIdx: number) => string | null;
|
|
501
538
|
navigate: (delta: number) => void;
|
|
502
539
|
goToday: () => void;
|
|
503
540
|
membersOf: (sectionId: string) => Employee[];
|
|
@@ -508,6 +545,10 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
508
545
|
commitShiftAt: (offset: number, empId: number, dayIdx: number, slot: WorkSlot | WorkSlot[], replaceIndex?: number, replaceCount?: number) => void;
|
|
509
546
|
removeShift: (empId: number, dayIdx: number, slotIndex?: number, count?: number) => void;
|
|
510
547
|
removeShiftAt: (offset: number, empId: number, dayIdx: number, slotIndex?: number, count?: number) => void;
|
|
548
|
+
employeeShiftsToClear: (empId: number) => number[];
|
|
549
|
+
clearEmployeeShifts: (empId: number) => {
|
|
550
|
+
shifts: number;
|
|
551
|
+
};
|
|
511
552
|
moveShift: (fromEmpId: number, fromDayIdx: number, toEmpId: number, toDayIdx: number, fromSlotIndex?: number, fromSlotCount?: number) => boolean;
|
|
512
553
|
swapShifts: (empIdA: number, empIdB: number, dayA: number, dayB?: number, slotIndexA?: number, slotIndexB?: number, slotCountA?: number) => boolean;
|
|
513
554
|
clearShiftsInRange: () => {
|
|
@@ -3,7 +3,9 @@ import type { ScheduleOutletApi } from './useScheduleOutlet';
|
|
|
3
3
|
* not the page's draft — to one or more other outlets the manager ticks. Scoped to pay rates
|
|
4
4
|
* because that is the only outlet-scoped setting this page persists; the mockup's broader
|
|
5
5
|
* "rules, shifts, coverage and positions" clone lives on pages this one doesn't own. */
|
|
6
|
-
export declare function useScheduleCloneOutletModal(outlet: ScheduleOutletApi
|
|
6
|
+
export declare function useScheduleCloneOutletModal(outlet: ScheduleOutletApi, options?: {
|
|
7
|
+
notify?: (message: string, type?: 'success' | 'error' | 'info') => void;
|
|
8
|
+
}): {
|
|
7
9
|
open: import("vue").Ref<boolean, boolean>;
|
|
8
10
|
query: import("vue").Ref<string, string>;
|
|
9
11
|
selected: import("vue").Ref<Set<string> & Omit<Set<string>, keyof Set<any>>, Set<string> | (Set<string> & Omit<Set<string>, keyof Set<any>>)>;
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import type { Proposal } from '../types';
|
|
1
2
|
import type { ScheduleBoardApi } from './useScheduleBoard';
|
|
3
|
+
import type { ScheduleEmployeeLoad } from './useScheduleEmployeeIdentity';
|
|
2
4
|
export declare function slotHours(start: string, end: string): number;
|
|
3
5
|
export interface ScheduleDayCost {
|
|
4
6
|
hours: number;
|
|
@@ -27,10 +29,13 @@ export interface ScheduleOtRisk {
|
|
|
27
29
|
hours: number;
|
|
28
30
|
contract: number;
|
|
29
31
|
}
|
|
32
|
+
/** The staff rail consumes the same employee identity/load derivation as the area view. */
|
|
33
|
+
export type ScheduleRailRow = ScheduleEmployeeLoad;
|
|
30
34
|
/** Weekly labour cost + monthly OT gauge for the collapsible cost rail, built off one
|
|
31
35
|
* per-day breakdown so the rail's totals and the stats row's per-day figures can never
|
|
32
36
|
* disagree about what a day cost. */
|
|
33
|
-
export declare function useScheduleCostRail(board: ScheduleBoardApi): {
|
|
37
|
+
export declare function useScheduleCostRail(board: ScheduleBoardApi, proposalAt?: () => ((empId: number, dayIdx: number) => Proposal | undefined) | undefined): {
|
|
38
|
+
rows: import("vue").ComputedRef<ScheduleEmployeeLoad[]>;
|
|
34
39
|
collapsed: import("vue").Ref<boolean, boolean>;
|
|
35
40
|
byDay: import("vue").ComputedRef<ScheduleDayCost[]>;
|
|
36
41
|
weeklyCost: import("vue").ComputedRef<number>;
|
|
@@ -7,7 +7,7 @@ export interface ScheduleDayNoteState {
|
|
|
7
7
|
}
|
|
8
8
|
export interface ScheduleDayNoteOptions {
|
|
9
9
|
/** Toasts for the writes that happen on the spot — closing a day, repricing it, saving. */
|
|
10
|
-
onToast?: (message: string) => void;
|
|
10
|
+
onToast?: (message: string, type?: 'info' | 'success' | 'error') => void;
|
|
11
11
|
}
|
|
12
12
|
/** One decimal, always: "2×" reads as a count, and 1.5 beside a bare 2 in one sentence looks
|
|
13
13
|
* like two different kinds of number. Ported from the mockup's fmtRate(). */
|
|
@@ -33,7 +33,6 @@ export declare function useScheduleDayNote(board: ScheduleBoardApi, opts?: Sched
|
|
|
33
33
|
savedNote: import("vue").ComputedRef<import("../types").ScheduleDayNote | null>;
|
|
34
34
|
hasSaved: import("vue").ComputedRef<boolean>;
|
|
35
35
|
whenLabel: import("vue").ComputedRef<string>;
|
|
36
|
-
isAuto: import("vue").ComputedRef<boolean>;
|
|
37
36
|
rateApplies: import("vue").ComputedRef<boolean>;
|
|
38
37
|
holidayHint: import("vue").ComputedRef<string>;
|
|
39
38
|
openFor: (dayIdx: number, anchor: HTMLElement) => void;
|
|
@@ -51,8 +51,6 @@ export declare function useScheduleDayTimeline(board: ScheduleBoardApi, roster:
|
|
|
51
51
|
onAddShift: (empId: number, dayIdx: number) => void;
|
|
52
52
|
onEditShift: (empId: number, dayIdx: number) => void;
|
|
53
53
|
onEditLeave: (empId: number, dayIdx: number) => void;
|
|
54
|
-
onOpenAssign: (openId: number) => void;
|
|
55
|
-
onAddAreaShift: (dayIdx: number, position: string) => void;
|
|
56
54
|
onOpenDemand: (dayIdx: number) => void;
|
|
57
55
|
onOpenEmployeeMenu: (empId: number, anchor: HTMLElement) => void;
|
|
58
56
|
onDemandSegment: (dayIdx: number, from: number, to: number, anchor: HTMLElement) => void;
|
|
@@ -68,7 +66,6 @@ export declare function useScheduleDayTimeline(board: ScheduleBoardApi, roster:
|
|
|
68
66
|
clock: string;
|
|
69
67
|
}[]>;
|
|
70
68
|
isOpenHour: (m: number) => boolean;
|
|
71
|
-
openShiftsRow: import("vue").ComputedRef<ScheduleTimelineRow | null>;
|
|
72
69
|
employeeRows: import("vue").ComputedRef<ScheduleTimelineRow[]>;
|
|
73
70
|
positionTimelineRows: import("vue").ComputedRef<ScheduleTimelineRow[]>;
|
|
74
71
|
demandRow: import("vue").ComputedRef<{
|
|
@@ -1,34 +1,17 @@
|
|
|
1
1
|
import type { CoverageSegment, DaySlot, DemandPeriod, Employee, Proposal } from '../types';
|
|
2
2
|
import type { ScheduleBoardApi } from './useScheduleBoard';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
export declare function spanOf(start: string, end: string): [number, number];
|
|
8
|
-
/** 12-hour clock for prose — the sheet and the popovers read as sentences, and "16:00" in the
|
|
9
|
-
* middle of one does not. */
|
|
10
|
-
export declare function t12(hhmm: string): string;
|
|
11
|
-
/** The timeline's two end labels — "8am", "10:30pm", meridiem spelled out. */
|
|
12
|
-
export declare function minToShort(m: number): string;
|
|
13
|
-
export declare function rangeText(from: number, to: number): string;
|
|
14
|
-
export declare function roleTotalOf(p: DemandPeriod): number;
|
|
15
|
-
/** The unnamed part of a period's headcount. Derived, never typed — so it cannot disagree with
|
|
16
|
-
* the total above it. Negative means the breakdown has overrun that total. */
|
|
17
|
-
export declare function anyLeftOf(p: DemandPeriod): number;
|
|
18
|
-
export interface ScheduleCoverageAxis {
|
|
19
|
-
from: number;
|
|
20
|
-
to: number;
|
|
21
|
-
}
|
|
3
|
+
import { anyLeftOf, minToHHMM, minToShort, rangeText, roleTotalOf, spanOf, t12, toMin } from './schedule-demand-domain';
|
|
4
|
+
import type { ScheduleCoverageAxis } from './schedule-demand-domain';
|
|
5
|
+
export { anyLeftOf, minToHHMM, minToShort, rangeText, roleTotalOf, spanOf, t12, toMin };
|
|
6
|
+
export type { ScheduleCoverageAxis } from './schedule-demand-domain';
|
|
22
7
|
/** Staffing demand, and coverage read against it.
|
|
23
8
|
*
|
|
24
9
|
* Storage follows this board's dayNotes rather than the mockup's flat `di` index: the mockup
|
|
25
10
|
* renders one long horizon so a day index identifies a date, but this board pages through
|
|
26
|
-
* weeks, and demand put on this Monday must not reappear on every other Monday.
|
|
27
|
-
*
|
|
11
|
+
* weeks, and demand put on this Monday must not reappear on every other Monday. Demand is
|
|
12
|
+
* therefore keyed by explicit ISO date.
|
|
28
13
|
*
|
|
29
|
-
*
|
|
30
|
-
* needs eight" is a standing statement, and "this Tuesday is different" has to be able to
|
|
31
|
-
* override it without rewriting the rule. */
|
|
14
|
+
* The weekday fallback remains only as a defensive read path until legacy records are removed. */
|
|
32
15
|
export declare function useScheduleDemand(board: ScheduleBoardApi): {
|
|
33
16
|
byDate: Record<string, DemandPeriod[]>;
|
|
34
17
|
byWeekday: Record<number, DemandPeriod[]>;
|