v2 beta5 modals (#377)

* refactor: folder structure

* style: modal wrapper

* feat: add nordic translations
This commit is contained in:
Carlos Valente
2023-05-12 22:16:33 +02:00
committed by GitHub
parent 29a9167d61
commit 139b667e20
49 changed files with 1103 additions and 1500 deletions
@@ -44,8 +44,12 @@ export class DataProvider {
}
static async deleteEvent(eventId) {
data.rundown = Array.from(data.rundown).filter((e) => e.id !== eventId);
await this.persist();
const eventIndex = data.rundown.findIndex((e) => e.id === eventId);
if (eventIndex !== -1) {
data.rundown.splice(eventIndex, 1);
await this.persist();
}
}
static getRundownLength() {
@@ -165,7 +169,6 @@ export class DataProvider {
data.settings = mergedData.settings;
data.viewSettings = mergedData.viewSettings;
data.osc = mergedData.osc;
data.http = mergedData.http;
data.aliases = mergedData.aliases;
data.userFields = mergedData.userFields;
data.rundown = mergedData.rundown;
+28 -27
View File
@@ -1,7 +1,6 @@
import fs from 'fs';
import type { EventData } from 'ontime-types';
import type { Alias, EventData } from 'ontime-types';
import { networkInterfaces } from 'os';
import { generateId } from 'ontime-utils';
import { fileHandler } from '../utils/parser.js';
import { DataProvider } from '../classes/data-provider/DataProvider.js';
import { failEmptyObjects, failIsNotArray } from '../utils/routerUtils.js';
@@ -136,10 +135,9 @@ export const postAliases = async (req, res) => {
return;
}
try {
const newAliases = [];
const newAliases: Alias[] = [];
req.body.forEach((a) => {
newAliases.push({
id: generateId(),
enabled: a.enabled,
alias: a.alias,
pathAndParams: a.pathAndParams,
@@ -178,16 +176,23 @@ export const postUserFields = async (req, res) => {
// Create controller for POST request to '/ontime/settings'
// Returns -
export const getSettings = async (req, res) => {
const { version, serverPort, pinCode, timeFormat } = DataProvider.getSettings();
res.status(200).send({
version,
serverPort,
pinCode,
timeFormat,
});
const settings = DataProvider.getSettings();
res.status(200).send(settings);
};
function extractPin(value: string | undefined | null, fallback: string | null): string | null {
if (value === null) {
return value;
}
if (typeof value === 'undefined') {
return fallback;
}
if (value.length === 0) {
return null;
}
return value;
}
// Create controller for POST request to '/ontime/settings'
// Returns ACK message
export const postSettings = async (req, res) => {
@@ -196,26 +201,22 @@ export const postSettings = async (req, res) => {
}
try {
const settings = DataProvider.getSettings();
let pin = settings.pinCode;
if (typeof req.body?.pinCode === 'string') {
if (req.body?.pinCode.length === 0) {
pin = null;
} else if (req.body?.pinCode.length <= 4) {
pin = req.body?.pinCode;
}
const editorKey = extractPin(req.body?.editorKey, settings.editorKey);
const operatorKey = extractPin(req.body?.operatorKey, settings.operatorKey);
let timeFormat = settings.timeFormat;
if (req.body?.timeFormat === '12' || req.body?.timeFormat === '24') {
timeFormat = req.body.timeFormat;
}
let format = settings.timeFormat;
if (typeof req.body?.timeFormat === 'string') {
if (req.body?.timeFormat === '12' || req.body?.timeFormat === '24') {
format = req.body.timeFormat;
}
}
const language = req.body?.language || 'en';
const newData = {
...settings,
pinCode: pin,
timeFormat: format,
editorKey,
operatorKey,
timeFormat,
language,
};
await DataProvider.setSettings(newData);
res.status(200).send(newData);
@@ -54,8 +54,10 @@ export const validateUserFields = [
* @description Validates object for POST /ontime/settings
*/
export const validateSettings = [
body('pinCode').isString().isLength({ min: 0, max: 4 }).optional({ nullable: true }),
body('editorKey').isString().isLength({ min: 0, max: 4 }).optional({ nullable: true }),
body('operatorKey').isString().isLength({ min: 0, max: 4 }).optional({ nullable: true }),
body('timeFormat').isString().isIn(['12', '24']),
body('language').isString(),
(req, res, next) => {
const errors = validationResult(req);
if (!errors.isEmpty()) return res.status(422).json({ errors: errors.array() });
+3 -33
View File
@@ -13,9 +13,10 @@ export const dbModel: DatabaseModel = {
app: 'ontime',
version: 2,
serverPort: 4001,
lock: null,
pinCode: null,
editorKey: null,
operatorKey: null,
timeFormat: '24',
language: 'en',
},
viewSettings: {
overrideStyles: false,
@@ -54,35 +55,4 @@ export const dbModel: DatabaseModel = {
onFinish: [],
},
},
http: {
user: null,
pwd: null,
messages: {
onLoad: {
url: '',
enabled: false,
},
onStart: {
url: '',
enabled: false,
},
onUpdate: {
url: '',
enabled: false,
},
onPause: {
url: '',
enabled: false,
},
onStop: {
url: '',
enabled: false,
},
onFinish: {
url: '',
enabled: false,
},
},
enabled: true,
},
};
+4 -27
View File
@@ -112,9 +112,10 @@ export const parseSettings = (data, enforce): Settings => {
console.log('ERROR: unknown app version, skipping');
} else {
const settings = {
lock: s.lock || null,
pinCode: s.pinCode || null,
editorKey: s.editorKey || null,
operatorKey: s.operatorKey || null,
timeFormat: s.timeFormat || '24',
language: s.language || 'en',
};
// write to db
@@ -221,23 +222,8 @@ export const parseHttp = (data, enforce) => {
const newHttp = {};
if ('http' in data) {
console.log('Found HTTP definition, importing...');
const h = data.http;
const http = {};
// @ts-expect-error -- not yet
if (h.user) http.user = h.user;
// @ts-expect-error -- not yet
if (h.pwd) http.pwd = h.pwd;
// @ts-expect-error -- not yet
newHttp.http = {
...dbModel.http,
...http,
};
} else if (enforce) {
// @ts-expect-error -- not yet
newHttp.http = { ...dbModel.http };
console.log('Created http object in db');
/* Not yet */
}
return newHttp;
};
@@ -251,22 +237,13 @@ export const parseAliases = (data): Alias[] => {
const newAliases: Alias[] = [];
if ('aliases' in data) {
console.log('Found Aliases definition, importing...');
const ids = [];
try {
for (const a of data.aliases) {
// double check unique ids
if (ids.indexOf(a?.id) !== -1) {
console.log('ERROR: ID collision on import, skipping');
continue;
}
const newAlias = {
id: a.id || generateId(),
enabled: a.enabled || false,
alias: a.alias || '',
pathAndParams: a.pathAndParams || '',
};
ids.push(newAlias.id);
newAliases.push(newAlias);
}
console.log(`Uploaded ${newAliases?.length || 0} alias(es)`);