More rundown metadata (#1429)

* add dayOffset to OntimeEvent

* refactor: isNewLatest

* calculate totalDays

* refactor: getTimeFromPrevious

* add gap as dataset in OntimeEvent

* use in ui

* format overlap is just a simple text formatting, big test is not needed

* add new fields where needed

* update apply delay

* show nex day eaven if there is no gap

* create test

* use buildin day offset in timeline

* remove todo

* consistent naming

* make a calculateDayOffset util for rundownCache

* refactor: checkIsNextDay to use dayOffset

* spelling

Co-authored-by: Carlos Valente <34649812+cpvalente@users.noreply.github.com>

* remove unneeded test

* remove todo

* update test db

* use data-testid

* spelling

Co-authored-by: Carlos Valente <34649812+cpvalente@users.noreply.github.com>

* update comments

* remove null option

---------

Co-authored-by: Carlos Valente <34649812+cpvalente@users.noreply.github.com>
This commit is contained in:
Alex Christoffer Rasmussen
2025-01-09 13:35:11 +01:00
committed by GitHub
parent 9ba40c35a1
commit e9a7cd0400
30 changed files with 866 additions and 660 deletions
@@ -0,0 +1,38 @@
import { expect, test } from '@playwright/test';
test('show warning when event crosses midnight', async ({ page }) => {
await page.goto('http://localhost:4001/editor');
await page.getByRole('button', { name: 'Clear rundown' }).click();
await page.getByRole('button', { name: 'Delete all' }).click();
await page.getByRole('button', { name: 'Create Event' }).click();
await page.getByRole('button', { name: 'Event' }).nth(4).click();
await page.getByRole('button', { name: 'Event', exact: true }).nth(1).click();
await page.getByTestId('entry-2').getByTestId('lock__end').getByRole('img').click();
await page.getByTestId('entry-2').getByTestId('time-input-timeEnd').click();
await page.getByTestId('entry-2').getByTestId('time-input-timeEnd').fill('23h');
await page.getByTestId('entry-2').getByTestId('time-input-timeEnd').press('Enter');
await page.getByTestId('entry-3').getByTestId('time-input-duration').click();
await page.getByTestId('entry-3').getByTestId('time-input-duration').fill('2h');
await page.getByTestId('entry-3').getByTestId('time-input-duration').press('Enter');
await expect(page.getByTestId('entry-3').getByTestId('event-warning')).toBeVisible();
});
test('show warning when event starts next day midnight', async ({ page }) => {
await page.goto('http://localhost:4001/editor');
await page.getByRole('button', { name: 'Clear rundown' }).click();
await page.getByRole('button', { name: 'Delete all' }).click();
await page.getByRole('button', { name: 'Create Event' }).click();
await page.getByRole('button', { name: 'Event' }).nth(4).click();
await page.getByTestId('entry-2').getByText('E').click();
await page.getByTestId('entry-2').getByTestId('time-input-timeEnd').click();
await page.getByTestId('entry-2').getByTestId('time-input-timeEnd').fill('0');
await page.getByTestId('entry-2').getByTestId('time-input-timeEnd').press('Enter');
await page.getByRole('button', { name: 'Event', exact: true }).nth(2).click();
await expect(page.getByText('(next day)')).toBeVisible();
});
+42 -14
View File
@@ -16,7 +16,9 @@
"skip": false,
"note": "SF1.01",
"colour": "",
"delay": 0,
"delay": 0,
"dayOffset": 0,
"gap": 0,
"cue": "SF1.01",
"revision": 0,
"timeWarning": 120000,
@@ -42,7 +44,9 @@
"skip": false,
"note": "SF1.02",
"colour": "",
"delay": 0,
"delay": 0,
"dayOffset": 0,
"gap": 0,
"cue": "SF1.02",
"revision": 0,
"timeWarning": 120000,
@@ -68,7 +72,9 @@
"skip": false,
"note": "SF1.03",
"colour": "",
"delay": 0,
"delay": 0,
"dayOffset": 0,
"gap": 0,
"cue": "SF1.03",
"revision": 0,
"timeWarning": 120000,
@@ -94,7 +100,9 @@
"skip": false,
"note": "SF1.04",
"colour": "",
"delay": 0,
"delay": 0,
"dayOffset": 0,
"gap": 0,
"cue": "SF1.04",
"revision": 0,
"timeWarning": 120000,
@@ -120,7 +128,9 @@
"skip": false,
"note": "SF1.05",
"colour": "",
"delay": 0,
"delay": 0,
"dayOffset": 0,
"gap": 0,
"cue": "SF1.05",
"revision": 0,
"timeWarning": 120000,
@@ -151,7 +161,9 @@
"skip": false,
"note": "SF1.06",
"colour": "",
"delay": 0,
"delay": 0,
"dayOffset": 0,
"gap": 0,
"cue": "SF1.06",
"revision": 0,
"timeWarning": 120000,
@@ -177,7 +189,9 @@
"skip": false,
"note": "SF1.07",
"colour": "",
"delay": 0,
"delay": 0,
"dayOffset": 0,
"gap": 0,
"cue": "SF1.07",
"revision": 0,
"timeWarning": 120000,
@@ -203,7 +217,9 @@
"skip": false,
"note": "SF1.08",
"colour": "",
"delay": 0,
"delay": 0,
"dayOffset": 0,
"gap": 0,
"cue": "SF1.08",
"revision": 0,
"timeWarning": 120000,
@@ -229,7 +245,9 @@
"skip": false,
"note": "SF1.09",
"colour": "",
"delay": 0,
"delay": 0,
"dayOffset": 0,
"gap": 0,
"cue": "SF1.09",
"revision": 0,
"timeWarning": 120000,
@@ -255,7 +273,9 @@
"skip": false,
"note": "SF1.10",
"colour": "",
"delay": 0,
"delay": 0,
"dayOffset": 0,
"gap": 0,
"cue": "SF1.10",
"revision": 0,
"timeWarning": 120000,
@@ -286,7 +306,9 @@
"skip": false,
"note": "SF1.11",
"colour": "",
"delay": 0,
"delay": 0,
"dayOffset": 0,
"gap": 0,
"cue": "SF1.11",
"revision": 0,
"timeWarning": 120000,
@@ -312,7 +334,9 @@
"skip": false,
"note": "SF1.12",
"colour": "",
"delay": 0,
"delay": 0,
"dayOffset": 0,
"gap": 0,
"cue": "SF1.12",
"revision": 0,
"timeWarning": 120000,
@@ -338,7 +362,9 @@
"skip": false,
"note": "SF1.13",
"colour": "",
"delay": 0,
"delay": 0,
"dayOffset": 0,
"gap": 0,
"cue": "SF1.13",
"revision": 0,
"timeWarning": 120000,
@@ -364,7 +390,9 @@
"skip": false,
"note": "SF1.14",
"colour": "",
"delay": 0,
"delay": 0,
"dayOffset": 0,
"gap": 0,
"cue": "SF1.14",
"revision": 0,
"timeWarning": 120000,