Warning and danger per event (#677)

* feat: warning and danger per event

---------

Co-authored-by: Fabian Posenau <fabian@fphome.de>
This commit is contained in:
Fabian Posenau
2023-12-30 20:56:57 +01:00
committed by GitHub
parent 7b9f64a630
commit 3998b8927d
31 changed files with 290 additions and 203 deletions
-2
View File
@@ -24,9 +24,7 @@ export const dbModel: DatabaseModel = {
overrideStyles: false,
normalColor: '#ffffffcc',
warningColor: '#FFAB33',
warningThreshold: 120000,
dangerColor: '#ED3333',
dangerThreshold: 60000,
endMessage: '',
},
aliases: [],
@@ -25,6 +25,8 @@ export const event: Omit<OntimeEvent, 'id' | 'delay' | 'cue'> = {
user9: '',
type: SupportedEvent.Event,
revision: 0,
timeWarning: 120000,
timeDanger: 60000,
};
export const delay: Omit<OntimeDelay, 'id'> = {
+6
View File
@@ -79,6 +79,8 @@ export class TimerService {
duration: null,
timerType: null,
endAction: null,
timeWarning: null,
timeDanger: null,
};
this.loadedTimerId = null;
this.loadedTimerStart = null;
@@ -156,6 +158,8 @@ export class TimerService {
this.timer.endAction = timer.endAction;
this.loadedTimerStart = timer.timeStart;
this.loadedTimerEnd = timer.timeEnd;
this.timer.timeWarning = timer.timeWarning;
this.timer.timeDanger = timer.timeDanger;
// this might not be ideal
this.timer.finishedAt = null;
@@ -196,6 +200,8 @@ export class TimerService {
this.timer.endAction = timer.endAction;
this.pausedTime = 0;
this.pausedAt = 0;
this.timer.timeWarning = timer.timeWarning;
this.timer.timeDanger = timer.timeDanger;
this.timer.current = this.timer.duration;
if (this.timer.timerType === TimerType.TimeToEnd) {
@@ -30,6 +30,8 @@ describe('calculateRuntimeDelays', () => {
user9: '',
type: SupportedEvent.Event,
revision: 0,
timeWarning: 120000,
timeDanger: 60000,
id: '659e1',
cue: '1',
},
@@ -64,6 +66,8 @@ describe('calculateRuntimeDelays', () => {
user9: '',
type: SupportedEvent.Event,
revision: 0,
timeWarning: 120000,
timeDanger: 60000,
id: '1c48f',
cue: '2',
},
@@ -98,6 +102,8 @@ describe('calculateRuntimeDelays', () => {
user9: '',
type: SupportedEvent.Event,
revision: 0,
timeWarning: 120000,
timeDanger: 60000,
id: 'd48c2',
cue: '3',
},
@@ -131,6 +137,8 @@ describe('calculateRuntimeDelays', () => {
user9: '',
type: SupportedEvent.Event,
revision: 0,
timeWarning: 120000,
timeDanger: 60000,
id: '2f185',
cue: '4',
},
@@ -173,6 +181,8 @@ describe('getDelayAt()', () => {
user9: '',
type: SupportedEvent.Event,
revision: 0,
timeWarning: 120000,
timeDanger: 60000,
id: '659e1',
delay: 0,
cue: '1',
@@ -208,6 +218,8 @@ describe('getDelayAt()', () => {
user9: '',
type: SupportedEvent.Event,
revision: 0,
timeWarning: 120000,
timeDanger: 60000,
id: '1c48f',
delay: 600000,
cue: '2',
@@ -243,6 +255,8 @@ describe('getDelayAt()', () => {
user9: '',
type: SupportedEvent.Event,
revision: 0,
timeWarning: 120000,
timeDanger: 60000,
id: 'd48c2',
delay: 1800000,
cue: '3',
@@ -277,6 +291,8 @@ describe('getDelayAt()', () => {
user9: '',
type: SupportedEvent.Event,
revision: 0,
timeWarning: 120000,
timeDanger: 60000,
id: '2f185',
delay: 0,
cue: '4',
@@ -337,6 +353,8 @@ describe('calculateRuntimeDelaysFrom()', () => {
user9: '',
type: SupportedEvent.Event,
revision: 0,
timeWarning: 120000,
timeDanger: 60000,
id: '659e1',
delay: 0,
cue: '1',
@@ -372,6 +390,8 @@ describe('calculateRuntimeDelaysFrom()', () => {
user9: '',
type: SupportedEvent.Event,
revision: 0,
timeWarning: 120000,
timeDanger: 60000,
id: '1c48f',
delay: 0,
cue: '2',
@@ -407,6 +427,8 @@ describe('calculateRuntimeDelaysFrom()', () => {
user9: '',
type: SupportedEvent.Event,
revision: 0,
timeWarning: 120000,
timeDanger: 60000,
id: 'd48c2',
delay: 1800000,
cue: '3',
@@ -441,6 +463,8 @@ describe('calculateRuntimeDelaysFrom()', () => {
user9: '',
type: SupportedEvent.Event,
revision: 0,
timeWarning: 120000,
timeDanger: 60000,
id: '2f185',
delay: 0,
cue: '4',
@@ -852,9 +852,7 @@ describe('test views import', () => {
viewSettings: {
normalColor: '#ffffffcc',
warningColor: '#FFAB33',
warningThreshold: 120000,
dangerColor: '#ED3333',
dangerThreshold: 60000,
endMessage: '',
overrideStyles: false,
notAthing: true,
@@ -866,9 +864,7 @@ describe('test views import', () => {
const expectedParsedViewSettings = {
normalColor: '#ffffffcc',
warningColor: '#FFAB33',
warningThreshold: 120000,
dangerColor: '#ED3333',
dangerThreshold: 60000,
endMessage: '',
overrideStyles: false,
};
+10
View File
@@ -88,6 +88,8 @@ export const parseExcel = (excelData: unknown[][], options?: Partial<ExcelImport
let timeStartIndex: number | null = null;
let timeEndIndex: number | null = null;
let durationIndex: number | null = null;
let timeWarningIndex: number | null = null;
let timeDangerIndex: number | null = null;
// options: enum properties
let endActionIndex: number | null = null;
@@ -151,6 +153,8 @@ export const parseExcel = (excelData: unknown[][], options?: Partial<ExcelImport
[importMap.user7]: (index: number) => (user7Index = index),
[importMap.user8]: (index: number) => (user8Index = index),
[importMap.user9]: (index: number) => (user9Index = index),
[importMap.timeWarning]: (index: number) => (timeWarningIndex = index),
[importMap.timeDanger]: (index: number) => (timeDangerIndex = index),
} as const;
row.forEach((column, j) => {
@@ -219,6 +223,10 @@ export const parseExcel = (excelData: unknown[][], options?: Partial<ExcelImport
event.user8 = makeString(column, '');
} else if (j === user9Index) {
event.user9 = makeString(column, '');
} else if (j === timeWarningIndex) {
event.timeWarning = parseExcelDate(column);
} else if (j === timeDangerIndex) {
event.timeDanger = parseExcelDate(column);
} else {
// 2. if there is no flag, lets see if we know the field type
if (typeof column === 'string') {
@@ -333,6 +341,8 @@ export const validateEvent = (eventArgs: Partial<OntimeEvent>, cueFallback: stri
cue: makeString(e.cue, cueFallback),
id,
type: 'event',
timeWarning: e.timeWarning,
timeDanger: e.timeDanger,
};
}
-2
View File
@@ -149,9 +149,7 @@ export const parseViewSettings = (data): ViewSettings => {
overrideStyles: v.overrideStyles ?? dbModel.viewSettings.overrideStyles,
normalColor: v.normalColor ?? dbModel.viewSettings.normalColor,
warningColor: v.warningColor ?? dbModel.viewSettings.warningColor,
warningThreshold: v.warningThreshold ?? dbModel.viewSettings.warningThreshold,
dangerColor: v.dangerColor ?? dbModel.viewSettings.dangerColor,
dangerThreshold: v.dangerThreshold ?? dbModel.viewSettings.dangerThreshold,
endMessage: v.endMessage ?? dbModel.viewSettings.endMessage,
};