mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-28 18:39:12 +00:00
refactor: show next when waiting to roll
This commit is contained in:
committed by
Carlos Valente
parent
add769fe1e
commit
4bf2422ebc
@@ -978,6 +978,32 @@ describe('getRollTimers()', () => {
|
|||||||
expect(state).toStrictEqual(expected);
|
expect(state).toStrictEqual(expected);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('loads upcoming event while waiting to roll', () => {
|
||||||
|
const singleEventList: Partial<OntimeEvent>[] = [
|
||||||
|
{
|
||||||
|
id: '1',
|
||||||
|
timeStart: 72000000, // 20:00
|
||||||
|
timeEnd: 72010000, // 20:10
|
||||||
|
isPublic: true,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
const now = 6000; // 00:01
|
||||||
|
const expected = {
|
||||||
|
nowIndex: null,
|
||||||
|
nowId: null,
|
||||||
|
publicIndex: null,
|
||||||
|
nextIndex: 0,
|
||||||
|
publicNextIndex: 0,
|
||||||
|
timeToNext: 72000000 - now,
|
||||||
|
nextEvent: singleEventList[0],
|
||||||
|
nextPublicEvent: singleEventList[0],
|
||||||
|
currentEvent: null,
|
||||||
|
currentPublicEvent: null,
|
||||||
|
};
|
||||||
|
const state = getRollTimers(singleEventList as OntimeEvent[], now);
|
||||||
|
expect(state).toStrictEqual(expected);
|
||||||
|
});
|
||||||
|
|
||||||
it('handles roll that goes over midnight', () => {
|
it('handles roll that goes over midnight', () => {
|
||||||
const singleEventList: Partial<OntimeEvent>[] = [
|
const singleEventList: Partial<OntimeEvent>[] = [
|
||||||
{
|
{
|
||||||
@@ -1890,4 +1916,44 @@ describe('getTimerPhase()', () => {
|
|||||||
const phase = getTimerPhase(state);
|
const phase = getTimerPhase(state);
|
||||||
expect(phase).toBe(TimerPhase.Pending);
|
expect(phase).toBe(TimerPhase.Pending);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('#1042 identifies waiting to roll', () => {
|
||||||
|
const state = {
|
||||||
|
clock: 55691050,
|
||||||
|
eventNow: null,
|
||||||
|
publicEventNow: null,
|
||||||
|
eventNext: null,
|
||||||
|
publicEventNext: null,
|
||||||
|
runtime: {
|
||||||
|
selectedEventIndex: null,
|
||||||
|
numEvents: 1,
|
||||||
|
offset: null,
|
||||||
|
plannedStart: 55860000,
|
||||||
|
plannedEnd: 55880000,
|
||||||
|
actualStart: null,
|
||||||
|
expectedEnd: null,
|
||||||
|
},
|
||||||
|
timer: {
|
||||||
|
addedTime: 0,
|
||||||
|
current: null,
|
||||||
|
duration: null,
|
||||||
|
elapsed: 0,
|
||||||
|
expectedFinish: null,
|
||||||
|
finishedAt: null,
|
||||||
|
phase: 'none',
|
||||||
|
playback: 'roll',
|
||||||
|
secondaryTimer: 168950,
|
||||||
|
startedAt: null,
|
||||||
|
},
|
||||||
|
_timer: {
|
||||||
|
forceFinish: null,
|
||||||
|
totalDelay: 0,
|
||||||
|
pausedAt: null,
|
||||||
|
secondaryTarget: 55860000,
|
||||||
|
},
|
||||||
|
} as RuntimeState;
|
||||||
|
|
||||||
|
const phase = getTimerPhase(state);
|
||||||
|
expect(phase).toBe(TimerPhase.Pending);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -120,13 +120,13 @@ type RollTimers = {
|
|||||||
* @param {number} timeNow - time now in ms
|
* @param {number} timeNow - time now in ms
|
||||||
*/
|
*/
|
||||||
export const getRollTimers = (rundown: OntimeEvent[], timeNow: number, currentIndex?: number | null): RollTimers => {
|
export const getRollTimers = (rundown: OntimeEvent[], timeNow: number, currentIndex?: number | null): RollTimers => {
|
||||||
let nowIndex: number | null = null; // index of event now
|
let nowIndex: MaybeNumber = null; // index of event now
|
||||||
let nowId: string | null = null; // id of event now
|
let nowId: MaybeString = null; // id of event now
|
||||||
let publicIndex: number | null = null; // index of public event now
|
let publicIndex: MaybeNumber = null; // index of public event now
|
||||||
let nextIndex: number | null = null; // index of next event
|
let nextIndex: MaybeNumber = null; // index of next event
|
||||||
let publicNextIndex: number | null = null; // index of next public event
|
let publicNextIndex: MaybeNumber = null; // index of next public event
|
||||||
let timeToNext: number | null = null; // counter: time for next event
|
let timeToNext: MaybeNumber = null; // counter: time for next event
|
||||||
let publicTimeToNext: number | null = null; // counter: time for next public event
|
let publicTimeToNext: MaybeNumber = null; // counter: time for next public event
|
||||||
|
|
||||||
const hasLoaded = currentIndex !== null;
|
const hasLoaded = currentIndex !== null;
|
||||||
const canFilter = hasLoaded && currentIndex === rundown.length - 1;
|
const canFilter = hasLoaded && currentIndex === rundown.length - 1;
|
||||||
|
|||||||
@@ -466,6 +466,10 @@ export function roll(rundown: OntimeEvent[]) {
|
|||||||
current: endTime - runtimeState.clock,
|
current: endTime - runtimeState.clock,
|
||||||
});
|
});
|
||||||
} else if (nextEvent) {
|
} else if (nextEvent) {
|
||||||
|
if (nextEvent.isPublic) {
|
||||||
|
runtimeState.publicEventNext = nextEvent;
|
||||||
|
}
|
||||||
|
runtimeState.eventNext = nextEvent;
|
||||||
// account for day after
|
// account for day after
|
||||||
const nextStart = nextEvent.timeStart < runtimeState.clock ? nextEvent.timeStart + dayInMs : nextEvent.timeStart;
|
const nextStart = nextEvent.timeStart < runtimeState.clock ? nextEvent.timeStart + dayInMs : nextEvent.timeStart;
|
||||||
// nothing now, but something coming up
|
// nothing now, but something coming up
|
||||||
|
|||||||
Reference in New Issue
Block a user