mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-15 04:13:47 +00:00
Refactor: split runtime state (#1725)
* refactor: runtime types * refactor: runtimeState functions to use the split type * refactor: RuntimeService to use the new split data * refactor: use the split data in the UI * update comments * refactor: rename runtime to offset * fix utils test
This commit is contained in:
committed by
Carlos Valente
parent
ed93cf313a
commit
048a9c96ea
@@ -1,13 +0,0 @@
|
||||
import type { MaybeNumber } from '../../utils/utils.type.js';
|
||||
import type { EntryId } from '../core/OntimeEntry.js';
|
||||
|
||||
export type GroupState = {
|
||||
id: EntryId;
|
||||
startedAt: MaybeNumber;
|
||||
expectedEnd: MaybeNumber;
|
||||
};
|
||||
|
||||
export type UpcomingEntry = {
|
||||
id: EntryId;
|
||||
expectedStart: MaybeNumber;
|
||||
};
|
||||
@@ -0,0 +1,15 @@
|
||||
import type { MaybeNumber } from '../../utils/utils.type.js';
|
||||
|
||||
export enum OffsetMode {
|
||||
Absolute = 'absolute',
|
||||
Relative = 'relative',
|
||||
}
|
||||
|
||||
export type Offset = {
|
||||
absolute: number; // a positive value means that we are in over time aka behind schedule
|
||||
relative: number;
|
||||
mode: OffsetMode;
|
||||
expectedGroupEnd: MaybeNumber;
|
||||
expectedRundownEnd: MaybeNumber;
|
||||
expectedFlagStart: MaybeNumber;
|
||||
};
|
||||
@@ -0,0 +1,9 @@
|
||||
import type { MaybeNumber } from '../../utils/utils.type.js';
|
||||
|
||||
export type RundownState = {
|
||||
selectedEventIndex: MaybeNumber;
|
||||
numEvents: number;
|
||||
plannedStart: MaybeNumber;
|
||||
actualStart: MaybeNumber;
|
||||
plannedEnd: MaybeNumber;
|
||||
};
|
||||
@@ -1,18 +0,0 @@
|
||||
import type { MaybeNumber } from '../../utils/utils.type.js';
|
||||
|
||||
export enum OffsetMode {
|
||||
Absolute = 'absolute',
|
||||
Relative = 'relative',
|
||||
}
|
||||
|
||||
export type Runtime = {
|
||||
selectedEventIndex: MaybeNumber;
|
||||
numEvents: number;
|
||||
offsetAbs: number; // a positive value means that we are in over time aka behind schedule
|
||||
offsetRel: number;
|
||||
plannedStart: MaybeNumber;
|
||||
actualStart: MaybeNumber;
|
||||
plannedEnd: MaybeNumber;
|
||||
expectedEnd: MaybeNumber;
|
||||
offsetMode: OffsetMode;
|
||||
};
|
||||
@@ -1,6 +1,6 @@
|
||||
import { SimpleDirection, SimplePlayback } from './AuxTimer.type.js';
|
||||
import { OffsetMode } from './Offset.type.js';
|
||||
import { Playback } from './Playback.type.js';
|
||||
import { OffsetMode } from './Runtime.type.js';
|
||||
import type { RuntimeStore } from './RuntimeStore.type.js';
|
||||
import { TimerPhase } from './TimerState.type.js';
|
||||
|
||||
@@ -27,22 +27,25 @@ export const runtimeStorePlaceholder: Readonly<RuntimeStore> = {
|
||||
},
|
||||
secondary: '',
|
||||
},
|
||||
runtime: {
|
||||
rundown: {
|
||||
selectedEventIndex: null, // changes if rundown changes or we load a new event
|
||||
numEvents: 0, // change initiated by user
|
||||
offsetAbs: 0, // changes at runtime
|
||||
offsetRel: 0, // changes at runtime
|
||||
plannedStart: 0, // only changes if event changes
|
||||
plannedEnd: 0, // only changes if event changes, overflows over dayInMs
|
||||
actualStart: null, // set once we start the timer
|
||||
expectedEnd: null, // changes with runtime, based on offset, overflows over dayInMs
|
||||
offsetMode: OffsetMode.Absolute,
|
||||
},
|
||||
offset: {
|
||||
absolute: 0, // changes at runtime
|
||||
relative: 0, // changes at runtime
|
||||
mode: OffsetMode.Absolute,
|
||||
expectedFlagStart: null,
|
||||
expectedGroupEnd: null,
|
||||
expectedRundownEnd: null,
|
||||
},
|
||||
groupNow: null,
|
||||
groupNext: null,
|
||||
nextFlag: null,
|
||||
eventNow: null,
|
||||
eventNext: null,
|
||||
eventFlag: null,
|
||||
auxtimer1: {
|
||||
current: 0,
|
||||
direction: SimpleDirection.CountUp,
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
import type { MaybeString } from '../../utils/utils.type.js';
|
||||
import type { OntimeEvent } from '../core/OntimeEntry.js';
|
||||
import type { OntimeEvent, OntimeGroup } from '../core/OntimeEntry.js';
|
||||
import type { SimpleTimerState } from './AuxTimer.type.js';
|
||||
import type { GroupState, UpcomingEntry } from './CurrentGroupState.type.js';
|
||||
import type { MessageState } from './MessageControl.type.js';
|
||||
import type { Runtime } from './Runtime.type.js';
|
||||
import type { Offset } from './Offset.type.js';
|
||||
import type { RundownState } from './RundownState.type.js';
|
||||
import type { TimerState } from './TimerState.type.js';
|
||||
|
||||
export type RuntimeStore = {
|
||||
@@ -15,13 +14,16 @@ export type RuntimeStore = {
|
||||
message: MessageState;
|
||||
|
||||
// rundown data
|
||||
runtime: Runtime;
|
||||
rundown: RundownState;
|
||||
|
||||
// runtime
|
||||
offset: Offset;
|
||||
|
||||
// relevant entries
|
||||
eventNow: OntimeEvent | null;
|
||||
eventNext: OntimeEvent | null;
|
||||
|
||||
groupNow: GroupState | null;
|
||||
groupNext: MaybeString;
|
||||
nextFlag: UpcomingEntry | null;
|
||||
eventFlag: OntimeEvent | null;
|
||||
groupNow: OntimeGroup | null;
|
||||
|
||||
// extra timers
|
||||
auxtimer1: SimpleTimerState;
|
||||
|
||||
@@ -96,12 +96,12 @@ export { Playback } from './definitions/runtime/Playback.type.js';
|
||||
export { TimerLifeCycle, timerLifecycleValues } from './definitions/core/TimerLifecycle.type.js';
|
||||
export type { TimerMessage, MessageState, SecondarySource } from './definitions/runtime/MessageControl.type.js';
|
||||
|
||||
export type { Runtime } from './definitions/runtime/Runtime.type.js';
|
||||
export { OffsetMode } from './definitions/runtime/Runtime.type.js';
|
||||
export type { RundownState } from './definitions/runtime/RundownState.type.js';
|
||||
export type { Offset } from './definitions/runtime/Offset.type.js';
|
||||
export { OffsetMode } from './definitions/runtime/Offset.type.js';
|
||||
export type { RuntimeStore } from './definitions/runtime/RuntimeStore.type.js';
|
||||
export { runtimeStorePlaceholder } from './definitions/runtime/RuntimeStore.js';
|
||||
export { type TimerState, TimerPhase } from './definitions/runtime/TimerState.type.js';
|
||||
export type { GroupState, UpcomingEntry } from './definitions/runtime/CurrentGroupState.type.js';
|
||||
|
||||
// ---> Extra Timer
|
||||
export { type SimpleTimerState, SimplePlayback, SimpleDirection } from './definitions/runtime/AuxTimer.type.js';
|
||||
|
||||
Reference in New Issue
Block a user