Update ProjectSchedulePane to use getRenderedRoutineTargetKey and add drag functionality
This commit is contained in:
@@ -810,8 +810,7 @@ export function ProjectSequencerPane({
|
|||||||
targetOptions.map((targetOption) => {
|
targetOptions.map((targetOption) => {
|
||||||
const routines = Object.values(scheduler.routines)
|
const routines = Object.values(scheduler.routines)
|
||||||
.filter(
|
.filter(
|
||||||
(routine) =>
|
(routine) => getRenderedRoutineTargetKey(routine) === targetOption.key
|
||||||
getControlTargetRefKey(routine.target) === targetOption.key
|
|
||||||
)
|
)
|
||||||
.sort((left, right) => left.startHour - right.startHour);
|
.sort((left, right) => left.startHour - right.startHour);
|
||||||
|
|
||||||
@@ -832,10 +831,16 @@ export function ProjectSequencerPane({
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="schedule-row__track">
|
<div
|
||||||
|
className="schedule-row__track"
|
||||||
|
data-sequencer-target-key={targetOption.key}
|
||||||
|
data-sequencer-track="true"
|
||||||
|
>
|
||||||
<div className="schedule-row__grid" />
|
<div className="schedule-row__grid" />
|
||||||
{routines.map((routine) =>
|
{routines.map((routine) => {
|
||||||
getProjectScheduleTimelineSegments(routine).map(
|
const renderedRoutine = getRenderedRoutine(routine);
|
||||||
|
|
||||||
|
return getProjectScheduleTimelineSegments(renderedRoutine).map(
|
||||||
(segment) => (
|
(segment) => (
|
||||||
<button
|
<button
|
||||||
key={segment.key}
|
key={segment.key}
|
||||||
@@ -849,6 +854,10 @@ export function ProjectSequencerPane({
|
|||||||
: ""
|
: ""
|
||||||
} ${
|
} ${
|
||||||
routine.enabled ? "" : "schedule-block--disabled"
|
routine.enabled ? "" : "schedule-block--disabled"
|
||||||
|
} ${
|
||||||
|
routineDragState?.routineId === routine.id
|
||||||
|
? "schedule-block--dragging"
|
||||||
|
: ""
|
||||||
}`.trim()}
|
}`.trim()}
|
||||||
type="button"
|
type="button"
|
||||||
title={`${routine.title} · ${getRoutineSummary(routine, sequences)}`}
|
title={`${routine.title} · ${getRoutineSummary(routine, sequences)}`}
|
||||||
@@ -856,15 +865,32 @@ export function ProjectSequencerPane({
|
|||||||
left: `${(segment.startHour / HOURS_PER_DAY) * 100}%`,
|
left: `${(segment.startHour / HOURS_PER_DAY) * 100}%`,
|
||||||
width: `${((segment.endHour - segment.startHour) / HOURS_PER_DAY) * 100}%`
|
width: `${((segment.endHour - segment.startHour) / HOURS_PER_DAY) * 100}%`
|
||||||
}}
|
}}
|
||||||
|
onPointerDown={(event) =>
|
||||||
|
beginRoutineDrag(event, routine, "move")
|
||||||
|
}
|
||||||
onClick={() => onSelectRoutine(routine.id)}
|
onClick={() => onSelectRoutine(routine.id)}
|
||||||
>
|
>
|
||||||
|
<span
|
||||||
|
className="schedule-block__resize-handle schedule-block__resize-handle--start"
|
||||||
|
aria-label={`Resize start of ${routine.title}`}
|
||||||
|
onPointerDown={(event) =>
|
||||||
|
beginRoutineDrag(event, routine, "resize-start")
|
||||||
|
}
|
||||||
|
/>
|
||||||
<span className="schedule-block__title">
|
<span className="schedule-block__title">
|
||||||
{routine.title}
|
{routine.title}
|
||||||
</span>
|
</span>
|
||||||
|
<span
|
||||||
|
className="schedule-block__resize-handle schedule-block__resize-handle--end"
|
||||||
|
aria-label={`Resize end of ${routine.title}`}
|
||||||
|
onPointerDown={(event) =>
|
||||||
|
beginRoutineDrag(event, routine, "resize-end")
|
||||||
|
}
|
||||||
|
/>
|
||||||
</button>
|
</button>
|
||||||
)
|
)
|
||||||
)
|
);
|
||||||
)}
|
})}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user