mirror of
https://github.com/cpvalente/ontime.git
synced 2026-09-08 15:59:16 +00:00
don't persist offset mode
This commit is contained in:
@@ -19,7 +19,7 @@ import * as projectService from '../../services/project-service/ProjectService.j
|
|||||||
export async function patchPartialProjectFile(req: Request, res: Response<DatabaseModel | ErrorResponse>) {
|
export async function patchPartialProjectFile(req: Request, res: Response<DatabaseModel | ErrorResponse>) {
|
||||||
try {
|
try {
|
||||||
const { rundown, project, settings, viewSettings, urlPresets, customFields, automation } = req.body;
|
const { rundown, project, settings, viewSettings, urlPresets, customFields, automation } = req.body;
|
||||||
const patchDb: Partial<DatabaseModel> = {
|
const patchDb: DatabaseModel = {
|
||||||
rundown,
|
rundown,
|
||||||
project,
|
project,
|
||||||
settings,
|
settings,
|
||||||
|
|||||||
@@ -170,8 +170,6 @@ export const startServer = async (
|
|||||||
|
|
||||||
socket.init(expressServer, showWelcome, prefix);
|
socket.init(expressServer, showWelcome, prefix);
|
||||||
|
|
||||||
const offsetMode = getDataProvider().getOffsetMode();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Module initialises the services and provides initial payload for the store
|
* Module initialises the services and provides initial payload for the store
|
||||||
*/
|
*/
|
||||||
@@ -212,7 +210,6 @@ export const startServer = async (
|
|||||||
|
|
||||||
// TODO: pass event store to rundownservice
|
// TODO: pass event store to rundownservice
|
||||||
runtimeService.init(maybeRestorePoint);
|
runtimeService.init(maybeRestorePoint);
|
||||||
runtimeService.setOffsetMode(offsetMode);
|
|
||||||
|
|
||||||
const nif = getNetworkInterfaces();
|
const nif = getNetworkInterfaces();
|
||||||
consoleSuccess(`Local: http://localhost:${resultPort}${prefix}/editor`);
|
consoleSuccess(`Local: http://localhost:${resultPort}${prefix}/editor`);
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import {
|
|||||||
CustomFields,
|
CustomFields,
|
||||||
URLPreset,
|
URLPreset,
|
||||||
AutomationSettings,
|
AutomationSettings,
|
||||||
OffsetMode,
|
|
||||||
} from 'ontime-types';
|
} from 'ontime-types';
|
||||||
|
|
||||||
import type { Low } from 'lowdb';
|
import type { Low } from 'lowdb';
|
||||||
@@ -56,8 +55,6 @@ export function getDataProvider() {
|
|||||||
setAutomation,
|
setAutomation,
|
||||||
getRundown,
|
getRundown,
|
||||||
mergeIntoData,
|
mergeIntoData,
|
||||||
getOffsetMode,
|
|
||||||
setOffsetMode,
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -135,17 +132,6 @@ function getRundown(): Readonly<OntimeRundown> {
|
|||||||
return db.data.rundown;
|
return db.data.rundown;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getOffsetMode(): Readonly<OffsetMode> {
|
|
||||||
return db.data.offsetMode;
|
|
||||||
}
|
|
||||||
|
|
||||||
async function setOffsetMode(mode): ReadonlyPromise<OffsetMode> {
|
|
||||||
db.data.offsetMode = mode;
|
|
||||||
//TODO: should this maybe not be persisted every time
|
|
||||||
await persist();
|
|
||||||
return db.data.offsetMode;
|
|
||||||
}
|
|
||||||
|
|
||||||
async function mergeIntoData(newData: Partial<DatabaseModel>): ReadonlyPromise<DatabaseModel> {
|
async function mergeIntoData(newData: Partial<DatabaseModel>): ReadonlyPromise<DatabaseModel> {
|
||||||
const mergedData = safeMerge(db.data, newData);
|
const mergedData = safeMerge(db.data, newData);
|
||||||
db.data.project = mergedData.project;
|
db.data.project = mergedData.project;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { DatabaseModel, OffsetMode, OntimeRundown, Settings, URLPreset, ViewSettings } from 'ontime-types';
|
import { DatabaseModel, OntimeRundown, Settings, URLPreset, ViewSettings } from 'ontime-types';
|
||||||
import { safeMerge } from '../DataProvider.utils.js';
|
import { safeMerge } from '../DataProvider.utils.js';
|
||||||
|
|
||||||
describe('safeMerge', () => {
|
describe('safeMerge', () => {
|
||||||
@@ -42,7 +42,6 @@ describe('safeMerge', () => {
|
|||||||
triggers: [],
|
triggers: [],
|
||||||
automations: {},
|
automations: {},
|
||||||
},
|
},
|
||||||
offsetMode: OffsetMode.Absolute,
|
|
||||||
} as DatabaseModel;
|
} as DatabaseModel;
|
||||||
|
|
||||||
it('returns existing data if new data is not provided', () => {
|
it('returns existing data if new data is not provided', () => {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { DatabaseModel, OffsetMode } from 'ontime-types';
|
import { DatabaseModel } from 'ontime-types';
|
||||||
import { ONTIME_VERSION } from '../ONTIME_VERSION.js';
|
import { ONTIME_VERSION } from '../ONTIME_VERSION.js';
|
||||||
|
|
||||||
export const dbModel: DatabaseModel = {
|
export const dbModel: DatabaseModel = {
|
||||||
@@ -38,5 +38,4 @@ export const dbModel: DatabaseModel = {
|
|||||||
triggers: [],
|
triggers: [],
|
||||||
automations: {},
|
automations: {},
|
||||||
},
|
},
|
||||||
offsetMode: OffsetMode.Absolute,
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { DatabaseModel, EndAction, OffsetMode, SupportedEvent, TimeStrategy, TimerType } from 'ontime-types';
|
import { DatabaseModel, EndAction, SupportedEvent, TimeStrategy, TimerType } from 'ontime-types';
|
||||||
|
|
||||||
export const demoDb: DatabaseModel = {
|
export const demoDb: DatabaseModel = {
|
||||||
rundown: [
|
rundown: [
|
||||||
@@ -457,5 +457,4 @@ export const demoDb: DatabaseModel = {
|
|||||||
triggers: [],
|
triggers: [],
|
||||||
automations: {},
|
automations: {},
|
||||||
},
|
},
|
||||||
offsetMode: OffsetMode.Absolute,
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -38,7 +38,6 @@ import {
|
|||||||
import { getForceUpdate, getShouldClockUpdate, getShouldTimerUpdate } from './rundownService.utils.js';
|
import { getForceUpdate, getShouldClockUpdate, getShouldTimerUpdate } from './rundownService.utils.js';
|
||||||
import { skippedOutOfEvent } from '../timerUtils.js';
|
import { skippedOutOfEvent } from '../timerUtils.js';
|
||||||
import { triggerAutomations } from '../../api-data/automation/automation.service.js';
|
import { triggerAutomations } from '../../api-data/automation/automation.service.js';
|
||||||
import { getDataProvider } from '../../classes/data-provider/DataProvider.js';
|
|
||||||
|
|
||||||
type RuntimeStateEventKeys = keyof Pick<RuntimeState, 'eventNext' | 'eventNow' | 'publicEventNow' | 'publicEventNext'>;
|
type RuntimeStateEventKeys = keyof Pick<RuntimeState, 'eventNext' | 'eventNow' | 'publicEventNow' | 'publicEventNext'>;
|
||||||
|
|
||||||
@@ -73,9 +72,6 @@ class RuntimeService {
|
|||||||
@broadcastResult
|
@broadcastResult
|
||||||
setOffsetMode(mode: OffsetMode) {
|
setOffsetMode(mode: OffsetMode) {
|
||||||
runtimeState.setOffsetMode(mode);
|
runtimeState.setOffsetMode(mode);
|
||||||
process.nextTick(() => {
|
|
||||||
getDataProvider().setOffsetMode(mode);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -27,14 +27,7 @@ import { logger } from '../classes/Logger.js';
|
|||||||
import { event as eventDef } from '../models/eventsDefinition.js';
|
import { event as eventDef } from '../models/eventsDefinition.js';
|
||||||
|
|
||||||
import { makeString } from './parserUtils.js';
|
import { makeString } from './parserUtils.js';
|
||||||
import {
|
import { parseProject, parseRundown, parseSettings, parseUrlPresets, parseViewSettings } from './parserFunctions.js';
|
||||||
parseOffsetMode,
|
|
||||||
parseProject,
|
|
||||||
parseRundown,
|
|
||||||
parseSettings,
|
|
||||||
parseUrlPresets,
|
|
||||||
parseViewSettings,
|
|
||||||
} from './parserFunctions.js';
|
|
||||||
import { parseExcelDate } from './time.js';
|
import { parseExcelDate } from './time.js';
|
||||||
|
|
||||||
export type ErrorEmitter = (message: string) => void;
|
export type ErrorEmitter = (message: string) => void;
|
||||||
@@ -343,7 +336,6 @@ export function parseDatabaseModel(jsonData: Partial<DatabaseModel>): { data: Da
|
|||||||
urlPresets: parseUrlPresets(jsonData, makeEmitError('URL Presets')),
|
urlPresets: parseUrlPresets(jsonData, makeEmitError('URL Presets')),
|
||||||
customFields,
|
customFields,
|
||||||
automation: parseAutomationSettings(jsonData),
|
automation: parseAutomationSettings(jsonData),
|
||||||
offsetMode: parseOffsetMode(jsonData, makeEmitError('OffsetMode')),
|
|
||||||
};
|
};
|
||||||
|
|
||||||
return { data, errors };
|
return { data, errors };
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ import {
|
|||||||
CustomField,
|
CustomField,
|
||||||
CustomFields,
|
CustomFields,
|
||||||
DatabaseModel,
|
DatabaseModel,
|
||||||
OffsetMode,
|
|
||||||
OntimeBlock,
|
OntimeBlock,
|
||||||
OntimeDelay,
|
OntimeDelay,
|
||||||
OntimeEvent,
|
OntimeEvent,
|
||||||
@@ -21,7 +20,6 @@ import { customFieldLabelToKey, generateId, isAlphanumericWithSpace } from 'onti
|
|||||||
import { dbModel } from '../models/dataModel.js';
|
import { dbModel } from '../models/dataModel.js';
|
||||||
import { block as blockDef, delay as delayDef } from '../models/eventsDefinition.js';
|
import { block as blockDef, delay as delayDef } from '../models/eventsDefinition.js';
|
||||||
import { createEvent, type ErrorEmitter } from './parser.js';
|
import { createEvent, type ErrorEmitter } from './parser.js';
|
||||||
import { coerceEnum } from './coerceType.js';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parse rundown array of an entry
|
* Parse rundown array of an entry
|
||||||
@@ -119,25 +117,6 @@ export function parseProject(data: Partial<DatabaseModel>, emitError?: ErrorEmit
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Parse offsetmode
|
|
||||||
*/
|
|
||||||
export function parseOffsetMode(data: Partial<DatabaseModel>, emitError?: ErrorEmitter): OffsetMode {
|
|
||||||
if (!data.offsetMode) {
|
|
||||||
emitError?.('No offsetmode found to import');
|
|
||||||
return dbModel.offsetMode;
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log('Found offsetmode, importing...');
|
|
||||||
|
|
||||||
try {
|
|
||||||
return coerceEnum<OffsetMode>(data.offsetMode, OffsetMode);
|
|
||||||
} catch (error) {
|
|
||||||
emitError?.('Invalid offsetmode found');
|
|
||||||
return dbModel.offsetMode;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parse settings portion of an entry
|
* Parse settings portion of an entry
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
import type {
|
import type {
|
||||||
AutomationSettings,
|
AutomationSettings,
|
||||||
CustomFields,
|
CustomFields,
|
||||||
OffsetMode,
|
|
||||||
OntimeRundown,
|
OntimeRundown,
|
||||||
ProjectData,
|
ProjectData,
|
||||||
Settings,
|
Settings,
|
||||||
@@ -17,5 +16,4 @@ export type DatabaseModel = {
|
|||||||
urlPresets: URLPreset[];
|
urlPresets: URLPreset[];
|
||||||
customFields: CustomFields;
|
customFields: CustomFields;
|
||||||
automation: AutomationSettings;
|
automation: AutomationSettings;
|
||||||
offsetMode: OffsetMode;
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -14,5 +14,5 @@ export type Runtime = {
|
|||||||
actualStart: MaybeNumber;
|
actualStart: MaybeNumber;
|
||||||
plannedEnd: MaybeNumber;
|
plannedEnd: MaybeNumber;
|
||||||
expectedEnd: MaybeNumber;
|
expectedEnd: MaybeNumber;
|
||||||
offsetMode: OffsetMode; // TODO: get proper names
|
offsetMode: OffsetMode;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user