mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-19 06:04:05 +00:00
refactor: show running gap in UI
This commit is contained in:
committed by
Carlos Valente
parent
f5936e5254
commit
73db14c383
@@ -0,0 +1,48 @@
|
||||
import { MILLIS_PER_HOUR } from './conversionUtils';
|
||||
import { isNewLatest } from './isNewLatest';
|
||||
|
||||
describe('isNewLatest', () => {
|
||||
it('should be true if there is no previous', () => {
|
||||
expect(isNewLatest(0, 60000)).toBeTruthy();
|
||||
});
|
||||
|
||||
it('should be true if it starts when the previous finishes', () => {
|
||||
const nowStart = 10 * MILLIS_PER_HOUR;
|
||||
const nowEnd = 11 * MILLIS_PER_HOUR;
|
||||
const previousStart = 9 * MILLIS_PER_HOUR;
|
||||
const previousEnd = 10 * MILLIS_PER_HOUR;
|
||||
expect(isNewLatest(nowStart, nowEnd, previousStart, previousEnd)).toBeTruthy();
|
||||
});
|
||||
|
||||
it('should be true if it starts the same day the previous finishes', () => {
|
||||
const nowStart = 22 * MILLIS_PER_HOUR;
|
||||
const nowEnd = 23 * MILLIS_PER_HOUR;
|
||||
const previousStart = 9 * MILLIS_PER_HOUR;
|
||||
const previousEnd = 20 * MILLIS_PER_HOUR;
|
||||
expect(isNewLatest(nowStart, nowEnd, previousStart, previousEnd)).toBeTruthy();
|
||||
});
|
||||
|
||||
it('should be true if it finishes after the previous, accounting for passing midnight', () => {
|
||||
const nowStart = 1 * MILLIS_PER_HOUR;
|
||||
const nowEnd = 3 * MILLIS_PER_HOUR;
|
||||
const previousStart = 23 * MILLIS_PER_HOUR;
|
||||
const previousEnd = 2 * MILLIS_PER_HOUR;
|
||||
expect(isNewLatest(nowStart, nowEnd, previousStart, previousEnd)).toBeTruthy();
|
||||
});
|
||||
|
||||
it('should be true if it the next day', () => {
|
||||
const nowStart = 8 * MILLIS_PER_HOUR;
|
||||
const nowEnd = 10 * MILLIS_PER_HOUR;
|
||||
const previousStart = 9 * MILLIS_PER_HOUR;
|
||||
const previousEnd = 11 * MILLIS_PER_HOUR;
|
||||
expect(isNewLatest(nowStart, nowEnd, previousStart, previousEnd)).toBeTruthy();
|
||||
});
|
||||
|
||||
it('should be true if it the next day (2)', () => {
|
||||
const nowStart = 9 * MILLIS_PER_HOUR;
|
||||
const nowEnd = 11 * MILLIS_PER_HOUR;
|
||||
const previousStart = 9 * MILLIS_PER_HOUR;
|
||||
const previousEnd = 11 * MILLIS_PER_HOUR;
|
||||
expect(isNewLatest(nowStart, nowEnd, previousStart, previousEnd)).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,24 @@
|
||||
import { checkIsNextDay } from './checkIsNextDay.js';
|
||||
|
||||
/**
|
||||
* Checks whether a new element is the latest in the list
|
||||
*/
|
||||
export function isNewLatest(timeStart: number, timeEnd: number, previousStart?: number, previousEnd?: number): boolean {
|
||||
// true if there is no previous
|
||||
if (previousStart === undefined || previousEnd === undefined) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// true if it starts after the previous is finished
|
||||
if (timeStart >= previousEnd) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// true if it finishes later than previous
|
||||
if (timeEnd > previousEnd) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// true if it is the day after
|
||||
return checkIsNextDay(previousStart, timeStart, previousEnd - previousStart);
|
||||
}
|
||||
Reference in New Issue
Block a user