Add impulse routine resolution to project scheduler

This commit is contained in:
2026-04-15 02:06:30 +02:00
parent 9883953e67
commit 6e5beaa54d

View File

@@ -505,7 +505,8 @@ export function resolveRuntimeProjectScheduleState(options: {
pathsById: options.pathsById
})
),
controls: resolveRuntimeScheduledControlRoutines(options)
controls: resolveRuntimeScheduledControlRoutines(options),
impulses: resolveRuntimeScheduledImpulseRoutines(options)
};
}
@@ -555,6 +556,52 @@ function resolveRuntimeScheduledControlRoutines(options: {
return resolved;
}
function resolveRuntimeScheduledImpulseRoutines(options: {
scheduler: ProjectScheduler;
sequences: ProjectSequenceLibrary;
dayNumber: number;
timeOfDayHours: number;
}): RuntimeResolvedScheduledImpulseRoutine[] {
const activeRoutines = Object.values(options.scheduler.routines)
.filter(
(routine) =>
routine.sequenceId !== null &&
isProjectScheduleRoutineActiveAt(
routine,
options.dayNumber,
options.timeOfDayHours
)
)
.sort(compareProjectScheduleRoutinePriority);
const resolved: RuntimeResolvedScheduledImpulseRoutine[] = [];
for (const routine of activeRoutines) {
if (routine.sequenceId === null) {
continue;
}
const sequence = options.sequences.sequences[routine.sequenceId] ?? null;
if (sequence === null) {
continue;
}
const effects = getProjectSequenceImpulseSteps(sequence);
if (effects.length === 0) {
continue;
}
resolved.push({
routineId: routine.id,
title: routine.title,
effects
});
}
return resolved;
}
export function applyRuntimeProjectScheduleToControlState(
resolved: RuntimeResolvedControlState,
schedule: RuntimeResolvedProjectScheduleState,