Skip to main content

Function: createTimeOffRule()

function createTimeOffRule(config): CompilationRule;
Blocks or penalizes assignments during specified time periods. Supports entity scoping (people, roles, skills) and time scoping (date ranges, specific dates, days of week, recurring periods). Optionally supports partial-day time-off with startTime/endTime.

Parameters

ParameterType
config{ dateRange?: { end: string; start: string; }; dayOfWeek?: ( | "monday" | "tuesday" | "wednesday" | "thursday" | "friday" | "saturday" | "sunday")[]; employeeIds?: string[]; endTime?: { hours: number; minutes: number; }; priority: "LOW" | "MEDIUM" | "HIGH" | "MANDATORY"; recurringPeriods?: { endDay: number; endMonth: number; name: string; startDay: number; startMonth: number; }[]; roleIds?: string[]; skillIds?: string[]; specificDates?: string[]; startTime?: { hours: number; minutes: number; }; }
config.dateRange?{ end: string; start: string; }
config.dateRange.endstring
config.dateRange.startstring
config.dayOfWeek?( | "monday" | "tuesday" | "wednesday" | "thursday" | "friday" | "saturday" | "sunday")[]
config.employeeIds?string[]
config.endTime?{ hours: number; minutes: number; }
config.endTime.hoursnumber
config.endTime.minutesnumber
config.priority"LOW" | "MEDIUM" | "HIGH" | "MANDATORY"
config.recurringPeriods?{ endDay: number; endMonth: number; name: string; startDay: number; startMonth: number; }[]
config.roleIds?string[]
config.skillIds?string[]
config.specificDates?string[]
config.startTime?{ hours: number; minutes: number; }
config.startTime.hoursnumber
config.startTime.minutesnumber

Returns

CompilationRule

Examples

createTimeOffRule({
  employeeIds: ["alice"],
  dateRange: { start: "2024-02-01", end: "2024-02-05" },
  priority: "MANDATORY",
});
createTimeOffRule({
  roleIds: ["student"],
  dayOfWeek: ["wednesday"],
  startTime: { hours: 14, minutes: 0 },
  endTime: { hours: 23, minutes: 59 },
  priority: "MANDATORY",
});
createTimeOffRule({
  employeeIds: ["bob"],
  specificDates: ["2024-03-15"],
  startTime: { hours: 16, minutes: 0 },
  endTime: { hours: 23, minutes: 59 },
  priority: "MANDATORY",
});