mirror of
https://github.com/cpvalente/ontime.git
synced 2026-09-10 08:39:34 +00:00
feat(telemprompter): remote control
This commit is contained in:
@@ -6,6 +6,17 @@ import type { MessageState } from '../../definitions/runtime/MessageControl.type
|
||||
import type { OffsetMode } from '../../definitions/runtime/Offset.type.js';
|
||||
import type { RuntimeStore } from '../../definitions/runtime/RuntimeStore.type.js';
|
||||
|
||||
export type TeleprompterCommand =
|
||||
| { type: 'play' }
|
||||
| { type: 'pause' }
|
||||
| { type: 'setSpeed'; linesPerMinute: number }
|
||||
| { type: 'nudge'; lines: number };
|
||||
export type TeleprompterAction = {
|
||||
tag: 'teleprompter';
|
||||
payload: { target: string; commandId: string; command: TeleprompterCommand };
|
||||
};
|
||||
export type TeleprompterResponse = { tag: 'teleprompter'; payload: { commandId: string; status: 'delivered' } };
|
||||
|
||||
export type VersionAction = {
|
||||
tag: 'version';
|
||||
payload: undefined;
|
||||
@@ -156,7 +167,8 @@ export type ApiAction =
|
||||
| AddtimeAction
|
||||
| AuxtimerAction
|
||||
| ClientAction
|
||||
| OffsetmodeAction;
|
||||
| OffsetmodeAction
|
||||
| TeleprompterAction;
|
||||
|
||||
export type ApiResponse =
|
||||
| VersionResponse
|
||||
@@ -172,6 +184,7 @@ export type ApiResponse =
|
||||
| AddtimeResponse
|
||||
| AuxtimerResponse
|
||||
| ClientResponse
|
||||
| OffsetmodeResponse;
|
||||
| OffsetmodeResponse
|
||||
| TeleprompterResponse;
|
||||
|
||||
export type ApiActionTag = ApiAction['tag'];
|
||||
|
||||
@@ -2,6 +2,7 @@ import type { Client } from '../../definitions/Clients.type.js';
|
||||
import type { Log } from '../../definitions/runtime/Logger.type.js';
|
||||
import type { RuntimeStore } from '../../definitions/runtime/RuntimeStore.type.js';
|
||||
import type { MaybeNumber } from '../../utils/utils.type.js';
|
||||
import type { TeleprompterCommand } from './api.type.js';
|
||||
import type { RefetchKey } from './refetch.type.js';
|
||||
|
||||
export enum MessageTag {
|
||||
@@ -17,6 +18,7 @@ export enum MessageTag {
|
||||
Log = 'log',
|
||||
RuntimeData = 'runtime-data',
|
||||
Refetch = 'refetch',
|
||||
TeleprompterCommand = 'teleprompter-command',
|
||||
}
|
||||
|
||||
// CLIENT TO SERVER
|
||||
@@ -35,6 +37,10 @@ type ListClientPacket = {
|
||||
payload: Record<string, Client>;
|
||||
};
|
||||
type RuntimePacket = { tag: MessageTag.RuntimeData; payload: Partial<RuntimeStore> };
|
||||
type TeleprompterCommandPacket = {
|
||||
tag: MessageTag.TeleprompterCommand;
|
||||
payload: { commandId: string; command: TeleprompterCommand };
|
||||
};
|
||||
|
||||
type RefetchPacket = {
|
||||
tag: MessageTag.Refetch;
|
||||
@@ -58,4 +64,5 @@ export type WsPacketToClient =
|
||||
| LogPacket
|
||||
| ListClientPacket
|
||||
| RuntimePacket
|
||||
| RefetchPacket;
|
||||
| RefetchPacket
|
||||
| TeleprompterCommandPacket;
|
||||
|
||||
@@ -1,11 +1,23 @@
|
||||
export type ClientType = 'unknown' | 'ontime' | string;
|
||||
|
||||
export type TeleprompterControlMode = 'free' | 'controlled';
|
||||
export type TeleprompterPlayback = 'playing' | 'paused';
|
||||
export type TeleprompterParkedAt = 'segment' | 'script' | null;
|
||||
export type TeleprompterControlState = {
|
||||
mode: TeleprompterControlMode;
|
||||
playback: TeleprompterPlayback;
|
||||
speed: number;
|
||||
isFollowingLoadedEvent: boolean;
|
||||
parkedAt: TeleprompterParkedAt;
|
||||
};
|
||||
|
||||
export type Client = {
|
||||
name: string;
|
||||
type: ClientType;
|
||||
identify: boolean;
|
||||
origin: string;
|
||||
path: string;
|
||||
teleprompter?: TeleprompterControlState;
|
||||
};
|
||||
|
||||
export type ClientList = Record<string, Client>;
|
||||
|
||||
@@ -107,7 +107,7 @@ export type {
|
||||
export { MessageTag } from './api/websocket/data.type.js';
|
||||
export type { WsPacketToServer, WsPacketToClient } from './api/websocket/data.type.js';
|
||||
export { RefetchKey } from './api/websocket/refetch.type.js';
|
||||
export type { ApiAction, ApiActionTag, ApiResponse } from './api/websocket/api.type.js';
|
||||
export type { ApiAction, ApiActionTag, ApiResponse, TeleprompterCommand } from './api/websocket/api.type.js';
|
||||
// SERVER RUNTIME
|
||||
export { type Log, LogLevel, type LogMessage, LogOrigin } from './definitions/runtime/Logger.type.js';
|
||||
export { Playback } from './definitions/runtime/Playback.type.js';
|
||||
@@ -125,7 +125,15 @@ export { type TimerState, TimerPhase } from './definitions/runtime/TimerState.ty
|
||||
export { type SimpleTimerState, SimplePlayback, SimpleDirection } from './definitions/runtime/AuxTimer.type.js';
|
||||
|
||||
// CLIENT
|
||||
export type { Client, ClientList, ClientType } from './definitions/Clients.type.js';
|
||||
export type {
|
||||
Client,
|
||||
ClientList,
|
||||
ClientType,
|
||||
TeleprompterControlMode,
|
||||
TeleprompterControlState,
|
||||
TeleprompterParkedAt,
|
||||
TeleprompterPlayback,
|
||||
} from './definitions/Clients.type.js';
|
||||
|
||||
// TYPE UTILITIES
|
||||
export {
|
||||
|
||||
Reference in New Issue
Block a user