Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
136 commits
Select commit Hold shift + click to select a range
749c8a2
feat: RundownPlaylist T-Timers which are controllable from blueprints
Julusian Jan 19, 2026
c295446
fix: expose IBlueprintSegmentDB through getSegment to bluerpints
Julusian Jan 20, 2026
c20297e
chore: ttimer debug test
Julusian Jan 20, 2026
5dc0334
T-timers refactor (#71)
rjmunro Feb 4, 2026
10f5fd0
feat: allow t-timers from syncIngestChanges
Julusian Feb 3, 2026
7c833cb
feat: provide allParts and an approx index to syncIngest
Julusian Feb 4, 2026
34d85d9
SOFIE-261 | add UI for t-timers (WIP)
anteeek Jan 16, 2026
972c787
SOFIE-261 | change alignment of t-timers in rundown screen
anteeek Feb 4, 2026
5e79da5
Refactor UI for new timer style
rjmunro Jan 30, 2026
12df6df
Apply code review suggestions
anteeek Feb 17, 2026
35121b5
WIP - new topbar
anteeek Feb 17, 2026
ef63bf9
New top bar UI - WIP
anteeek Feb 25, 2026
1322669
top-bar ui: some style changes, implement est. end properly'
anteeek Feb 25, 2026
fbd7c4e
chore: Styling walltime clock with correct font properties.
hummelstrand Feb 26, 2026
a24d144
chore: Styling of Over/Under labels and ON AIR label.
hummelstrand Feb 26, 2026
b1bac18
chore: Common label style for header labels that react to hover. Fixe…
hummelstrand Feb 27, 2026
527ad66
chore: Updated styling on the Over/Under (previously known as "Diff")…
hummelstrand Feb 27, 2026
e846efe
chore: Removed extra styling of the labels of the Show Counters group.
hummelstrand Feb 27, 2026
ad209e7
add simplified mode to top bar
anteeek Feb 27, 2026
c55f73b
New top bar UI: refactor class names
anteeek Mar 2, 2026
8b4d8a5
New top bar UI: remove caret on text and restore legacy component for…
anteeek Mar 2, 2026
e6fb449
new top bar UI: make playlist name hidden until hovered over
anteeek Mar 2, 2026
d6bd52d
Update yarn.lock
Julusian Jan 13, 2026
0dd04ee
Tidy migration
Julusian Jan 14, 2026
8c17163
Change path of import
Julusian Jan 14, 2026
3470bcb
Update yarn.lock
Julusian Jan 19, 2026
681e1d0
lockfile
Julusian Jan 19, 2026
3c16f73
SOFIE-261 | add UI for t-timers (WIP)
anteeek Jan 16, 2026
d200da6
SOFIE-261 | change alignment of t-timers in rundown screen
anteeek Feb 4, 2026
eb6ee13
SOFIE-261 | (WIP) add estimates over/under to t-timers UI in director
anteeek Feb 11, 2026
df7224d
New top bar UI: visual tweaks
anteeek Mar 3, 2026
5072871
New top bar UI: fix circular scss dependencies
anteeek Mar 3, 2026
f2f55b9
chore: Added single-pixel line at the bottom of the Top Bar.
hummelstrand Mar 3, 2026
0f5fb9e
chore: Created two distinct styles for two types of counters.
hummelstrand Mar 3, 2026
aa27dd4
chore: Small tweaks to the typographic styles of Top Bar counters.
hummelstrand Mar 3, 2026
b04456c
Top bar UI: fix clocks alignment
anteeek Mar 3, 2026
b373609
chore: Created the two separate font stylings for the Over/Under pill…
hummelstrand Mar 4, 2026
97398f5
New top bar ui: visual changes - fix hover transition on text in play…
anteeek Mar 4, 2026
0973ca6
New top bar UI: unify styles, fix visual issues
anteeek Mar 4, 2026
d26388a
chore: Playlist and Rundown font styling.
hummelstrand Mar 5, 2026
044002b
New top bar UI: fix countdown classes
anteeek Mar 5, 2026
7622896
Top bar UI: unify over/under in t-timers
anteeek Mar 5, 2026
df6f5c1
chore: Counter and TimeOf Day styling.
hummelstrand Mar 5, 2026
4d3fce9
Top bar UI: change layout of t-timers to grid
anteeek Mar 5, 2026
c8183ed
Top bar UI: add dimming to inactive timer parts
anteeek Mar 5, 2026
44ee15d
chore: Tweaks to styling of T-timers.
hummelstrand Mar 5, 2026
d646773
Top bar UI: css tweaks
anteeek Mar 5, 2026
0e674ca
Top bar UI: css tweaks
anteeek Mar 5, 2026
1b9f0e1
Top bar UI: css tweaks
anteeek Mar 6, 2026
8f33ced
chore: Tweaked vertical label placement.
hummelstrand Mar 5, 2026
ae61fc1
New Top Bar UI: align onair styles with timeline, hide segment budget…
anteeek Mar 6, 2026
8df3ebb
chore: Corrected the vertical alignment of the ON AIR label.
hummelstrand Mar 6, 2026
c9fcb7d
chore: Tweaked the T-timer Over/Under pill and narrowed the gap betwe…
hummelstrand Mar 6, 2026
0221812
chore: Made the Show Timers group glow when the user hovers over the …
hummelstrand Mar 6, 2026
917aacc
chore: Tweak to vertical counter label alignment.
hummelstrand Mar 6, 2026
6837cdc
feat: Add optional estimateState to T-Timer data type
rjmunro Jan 30, 2026
c07b4e7
feat: Add function to Caclulate estimates for anchored T-Timers
rjmunro Feb 4, 2026
36c662b
feat: Add RecalculateTTimerEstimates job and integrate into playout w…
rjmunro Feb 4, 2026
de867b1
feat: add timeout for T-Timer recalculations when pushing expected to…
rjmunro Feb 4, 2026
f615091
feat: queue initial T-Timer recalculation when job-worker restarts
rjmunro Feb 4, 2026
c0dfed6
feat(blueprints): Add blueprint interface methods for T-Timer estimat…
rjmunro Feb 4, 2026
5e26041
feat: Add ignoreQuickLoop parameter to getOrderedPartsAfterPlayhead f…
rjmunro Feb 17, 2026
69657d1
feat: Refactor recalculateTTimerEstimates to use getOrderedPartsAfter…
rjmunro Feb 17, 2026
477b378
test: Add tests for new T-Timers functions
rjmunro Feb 4, 2026
0baeaa8
feat(T-Timers): Add segment budget timing support to estimate calcula…
rjmunro Feb 5, 2026
8f5a103
Fix test by adding missing mocks
rjmunro Feb 20, 2026
3c21f9d
feat(T-Timers): Add convenience method to set estimate anchor part by…
rjmunro Feb 25, 2026
060ef95
feat(T-Timers): Add pauseTime field to timer estimates
rjmunro Feb 18, 2026
22abc97
Remove timeout based update of T-Timer now we have pauseTime
rjmunro Feb 19, 2026
825e367
docs(T-Timers): Add client rendering logic for pauseTime
rjmunro Feb 19, 2026
9a60bdb
feat(T-Timers): Add timerStateToDuration helper function
rjmunro Feb 19, 2026
05ee3bf
Fix sign of over/under calculation
rjmunro Mar 6, 2026
2914087
Include next part in calculation
rjmunro Mar 6, 2026
0ac6ff1
Don't fetch all parts just to get a max length
rjmunro Mar 6, 2026
a20cc05
Ensure we recalculate timings when we queue segments
rjmunro Mar 6, 2026
03d2937
Fix linting issue
rjmunro Mar 9, 2026
db1ba21
chore: changes wording for Rem. Dur (was Est. Dur)
jesperstarkar Mar 12, 2026
7014cd4
chore: Added missing font variant variable.
hummelstrand Mar 11, 2026
759b77f
chore: Removed unused style for timeOfDay T-timer counters, as T-time…
hummelstrand Mar 12, 2026
0c432a2
chore: Show only the playlist name if the playlist contains more than…
hummelstrand Mar 12, 2026
f61cf24
chore: Tweaked width of time of day counters so that their total widt…
hummelstrand Mar 12, 2026
34e1dba
chore: Added label before the counter to/from "Planned Start" in Deta…
hummelstrand Mar 12, 2026
24d290e
chore: Removed erraneous margin of some of the counter colons.
hummelstrand Mar 12, 2026
5e3f903
chore: Made all timer labels center-aligned.
hummelstrand Mar 12, 2026
6aca4a3
remove RundownHeader_old folder left behind by mistake
rjmunro Mar 12, 2026
73042fb
fix: Correct duration calculations in RundownHeader components by usi…
rjmunro Mar 12, 2026
1125a22
Linting improvements
rjmunro Mar 12, 2026
92c59fb
chore: Changed the Rehearsal background to striped grey, and added la…
hummelstrand Mar 12, 2026
8030f96
fix: more explicit truthy check allow keeping 0 dur timers visible
jesperstarkar Mar 12, 2026
4afed0e
chore: cleanup
jesperstarkar Mar 12, 2026
0192c01
WIP: add open state to menu icon in top bar
anteeek Mar 12, 2026
fce270b
fix: allow Plan. end to show even at the end of the show
jesperstarkar Mar 12, 2026
a720055
Remove no longer needed file
rjmunro Mar 12, 2026
b4d9871
Fix overdeletion of _old files
rjmunro Mar 12, 2026
5244cdc
Top bar: fix hamburger menu not closing in some cases
anteeek Mar 13, 2026
47e13e7
Top bar: add close option to context menu
anteeek Mar 13, 2026
8e01c34
Fix close button disappearing from view on smaller screens in rundown…
anteeek Mar 13, 2026
03c8af7
Top bar UI: disable diff display in untimed mode before first take
anteeek Mar 13, 2026
93e29f8
Top bar UI: keep showing remaining duration and estimated end before …
anteeek Mar 13, 2026
711b844
Top bar: disable mode switching of timers if the other one is empty
anteeek Mar 13, 2026
2201689
Unify t-timers styling in topbar
anteeek Mar 13, 2026
36e22de
Top bar UI: fix baseline of playlist name
anteeek Mar 13, 2026
4ed0e0f
Revert "Top bar UI: keep showing remaining duration and estimated end…
jesperstarkar Mar 13, 2026
dcc4a05
chore: Changed the Detailed View Start label.
hummelstrand Mar 13, 2026
951337f
chore: Removed the "Rehearsal" and "Deactivated" labels.
hummelstrand Mar 13, 2026
197a335
chore: Reliably vertically aligned the labels in the middle.
hummelstrand Mar 13, 2026
d02f107
chore: Made the layout stable when icons of differing widths were use…
hummelstrand Mar 13, 2026
08450fb
fix: Correct prefix for Start In when passing the planned start time
jesperstarkar Mar 13, 2026
0a5497c
fix: more robust falsy checks that allow 0 values
jesperstarkar Mar 13, 2026
533a9c0
chore: Tweaks to the menu wording and menu styling. Added visible men…
hummelstrand Mar 13, 2026
d265fac
fix: swaps the timers in the simple view mode
jesperstarkar Mar 13, 2026
128f281
chore: Made sure the menu icon only changed state and was clickable w…
hummelstrand Mar 13, 2026
24adb35
chore: Made Top Bar label colored instead of semi-transparent since t…
hummelstrand Mar 13, 2026
107fbb3
chore: Flipped the angle of the "unfocused window" border so that it …
hummelstrand Mar 13, 2026
b94a6e2
Top bar UI: css improvements
anteeek Mar 16, 2026
9638236
chore: Added visual hover indication on the menu and close buttons.
hummelstrand Mar 16, 2026
5f039b7
chore: Added a Bootstrap CSS customization to get around the faulty s…
hummelstrand Mar 16, 2026
a2308db
Lint fixes
rjmunro Mar 16, 2026
088b958
Remove mock timer
rjmunro Mar 17, 2026
2299440
chore: Vertically aligned the Over/Under and Clock.
hummelstrand Mar 17, 2026
620eb00
Improve empty t-timers object in test
rjmunro Mar 17, 2026
3c7d1be
Simplify validating index and add more tests
rjmunro Mar 17, 2026
518d406
Change T-Timer estimate to projection
rjmunro Mar 17, 2026
d2418d3
chore: Clarified hover styling of Menu and Close icons. Tweaked the R…
hummelstrand Mar 17, 2026
4965cc8
chore: Add gap between the On Air group and T-timers group of the Top…
hummelstrand Mar 17, 2026
e1cbdf7
fix: show planned duration for duration based shows
jesperstarkar Mar 18, 2026
6be417b
fix: pipe duration through, but in a conservative non-perfect way to …
jesperstarkar Mar 18, 2026
1f51296
fix: bottom align solo timers in advanced view
jesperstarkar Mar 18, 2026
e513f4d
fix: allow showing diff in duration based show before start
jesperstarkar Mar 18, 2026
8edcb6f
fix: correctly show planned start, start in and started
jesperstarkar Mar 23, 2026
ae84276
fix: correctly show est end before planned start time
jesperstarkar Mar 23, 2026
2babf33
Fix linting
rjmunro Mar 26, 2026
0958c2f
Move T-Timer types to blueprints integration so they can be shared
rjmunro Mar 26, 2026
3d29f1d
feat: align T-Timer blueprint API with DB structure
rjmunro Mar 23, 2026
ddcafc8
feat(blueprints): Add T-Timer duration/timing methods and expose rund…
rjmunro Mar 25, 2026
93069ea
feat: expose startedPlayback to blueprint contexts via getter properties
rjmunro Mar 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions meteor/__mocks__/defaultCollectionObjects.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,11 @@ export function defaultRundownPlaylist(_id: RundownPlaylistId, studioId: StudioI
type: 'none' as any,
},
rundownIdsInOrder: [],
tTimers: [
{ index: 1, label: '', mode: null, state: null },
{ index: 2, label: '', mode: null, state: null },
{ index: 3, label: '', mode: null, state: null },
],
}
}
export function defaultRundown(
Expand Down
5 changes: 5 additions & 0 deletions meteor/server/__tests__/cronjobs.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -622,6 +622,11 @@ describe('cronjobs', () => {
type: PlaylistTimingType.None,
},
activationId: protectString(''),
tTimers: [
{ index: 1, label: '', mode: null, state: null },
{ index: 2, label: '', mode: null, state: null },
{ index: 3, label: '', mode: null, state: null },
],
})

return {
Expand Down
1 change: 1 addition & 0 deletions meteor/server/api/__tests__/externalMessageQueue.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ describe('Test external message queue static methods', () => {
type: PlaylistTimingType.None,
},
rundownIdsInOrder: [protectString('rundown_1')],
tTimers: [] as any,
})
await Rundowns.mutableCollection.insertAsync({
_id: protectString('rundown_1'),
Expand Down
1 change: 1 addition & 0 deletions meteor/server/api/__tests__/peripheralDevice.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@
type: PlaylistTimingType.None,
},
rundownIdsInOrder: [rundownID],
tTimers: [] as any,
})
await Rundowns.mutableCollection.insertAsync({
_id: rundownID,
Expand Down Expand Up @@ -494,7 +495,7 @@
).rejects.toThrowMeteor(418, `Error thrown, as requested`)
})

/*

Check warning on line 498 in meteor/server/api/__tests__/peripheralDevice.test.ts

View workflow job for this annotation

GitHub Actions / Typecheck and Lint Core

Some tests seem to be commented

Check warning on line 498 in meteor/server/api/__tests__/peripheralDevice.test.ts

View workflow job for this annotation

GitHub Actions / Typecheck and Lint Core

Some tests seem to be commented
test('timelineTriggerTime', () => {
if (DEBUG) setLogLevel(LogLevel.DEBUG)
let timelineTriggerTimeResult: PeripheralDeviceAPI.TimelineTriggerTimeResult = [
Expand Down Expand Up @@ -562,7 +563,7 @@
})

// Note: this test fails, due to a backwards-compatibility hack in #c579c8f0
// test('initialize with bad arguments', () => {

Check warning on line 566 in meteor/server/api/__tests__/peripheralDevice.test.ts

View workflow job for this annotation

GitHub Actions / Typecheck and Lint Core

Some tests seem to be commented

Check warning on line 566 in meteor/server/api/__tests__/peripheralDevice.test.ts

View workflow job for this annotation

GitHub Actions / Typecheck and Lint Core

Some tests seem to be commented
// let options: PeripheralDeviceInitOptions = {
// category: PeripheralDeviceCategory.INGEST,
// type: PeripheralDeviceType.MOS,
Expand All @@ -583,7 +584,7 @@
// }
// })

// test('setStatus with bad arguments', () => {

Check warning on line 587 in meteor/server/api/__tests__/peripheralDevice.test.ts

View workflow job for this annotation

GitHub Actions / Typecheck and Lint Core

Some tests seem to be commented

Check warning on line 587 in meteor/server/api/__tests__/peripheralDevice.test.ts

View workflow job for this annotation

GitHub Actions / Typecheck and Lint Core

Some tests seem to be commented
// try {
// Meteor.call(PeripheralDeviceAPIMethods.setStatus, 'wibbly', device.token, { statusCode: 0 })
// fail('expected to throw')
Expand Down
27 changes: 25 additions & 2 deletions meteor/server/migration/X_X_X.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,30 @@ export const addSteps = addMigrationSteps(CURRENT_SYSTEM_VERSION, [
}
},
},
// Add your migration here

new ContainerIdsToObjectWithOverridesMigrationStep(),
{
id: 'Add T-timers to RundownPlaylist',
canBeRunAutomatically: true,
validate: async () => {
const playlistCount = await RundownPlaylists.countDocuments({ tTimers: { $exists: false } })
if (playlistCount > 1) return `There are ${playlistCount} RundownPlaylists without T-timers`
return false
},
migrate: async () => {
await RundownPlaylists.mutableCollection.updateAsync(
{ tTimers: { $exists: false } },
{
$set: {
tTimers: [
{ index: 1, label: '', mode: null, state: null },
{ index: 2, label: '', mode: null, state: null },
{ index: 3, label: '', mode: null, state: null },
],
},
},
{ multi: true }
)
},
},
// Add your migration here
])
100 changes: 85 additions & 15 deletions meteor/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1358,6 +1358,7 @@ __metadata:
"@sofie-automation/corelib": "npm:26.3.0-2"
"@sofie-automation/shared-lib": "npm:26.3.0-2"
amqplib: "npm:0.10.5"
chrono-node: "npm:^2.9.0"
deepmerge: "npm:^4.3.1"
elastic-apm-node: "npm:^4.15.0"
mongodb: "npm:^6.21.0"
Expand Down Expand Up @@ -2188,7 +2189,16 @@ __metadata:
languageName: node
linkType: hard

"acorn@npm:^8.0.4, acorn@npm:^8.14.0, acorn@npm:^8.15.0":
"acorn@npm:^8.0.4, acorn@npm:^8.14.0":
version: 8.14.0
resolution: "acorn@npm:8.14.0"
bin:
acorn: bin/acorn
checksum: 10/6df29c35556782ca9e632db461a7f97947772c6c1d5438a81f0c873a3da3a792487e83e404d1c6c25f70513e91aa18745f6eafb1fcc3a43ecd1920b21dd173d2
languageName: node
linkType: hard

"acorn@npm:^8.15.0":
version: 8.15.0
resolution: "acorn@npm:8.15.0"
bin:
Expand Down Expand Up @@ -2983,7 +2993,7 @@ __metadata:
languageName: node
linkType: hard

"call-bind-apply-helpers@npm:^1.0.0, call-bind-apply-helpers@npm:^1.0.1, call-bind-apply-helpers@npm:^1.0.2":
"call-bind-apply-helpers@npm:^1.0.0, call-bind-apply-helpers@npm:^1.0.2":
version: 1.0.2
resolution: "call-bind-apply-helpers@npm:1.0.2"
dependencies:
Expand All @@ -2993,6 +3003,16 @@ __metadata:
languageName: node
linkType: hard

"call-bind-apply-helpers@npm:^1.0.1":
version: 1.0.1
resolution: "call-bind-apply-helpers@npm:1.0.1"
dependencies:
es-errors: "npm:^1.3.0"
function-bind: "npm:^1.1.2"
checksum: 10/6e30c621170e45f1fd6735e84d02ee8e02a3ab95cb109499d5308cbe5d1e84d0cd0e10b48cc43c76aa61450ae1b03a7f89c37c10fc0de8d4998b42aab0f268cc
languageName: node
linkType: hard

"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2, call-bind@npm:^1.0.8":
version: 1.0.8
resolution: "call-bind@npm:1.0.8"
Expand Down Expand Up @@ -3089,6 +3109,13 @@ __metadata:
languageName: node
linkType: hard

"chrono-node@npm:^2.9.0":
version: 2.9.0
resolution: "chrono-node@npm:2.9.0"
checksum: 10/a30bbaa67f9a127e711db6e694ee4c89292d8f533dbfdc3d7cb34f479728e02e377f682e75ad84dd4b6a16016c248a5e85fb453943b96f93f5993f5ccddc6d08
languageName: node
linkType: hard

"ci-info@npm:^4.2.0":
version: 4.4.0
resolution: "ci-info@npm:4.4.0"
Expand Down Expand Up @@ -6003,7 +6030,16 @@ __metadata:
languageName: node
linkType: hard

"is-typed-array@npm:^1.1.10, is-typed-array@npm:^1.1.12, is-typed-array@npm:^1.1.14, is-typed-array@npm:^1.1.3, is-typed-array@npm:^1.1.9":
"is-typed-array@npm:^1.1.10, is-typed-array@npm:^1.1.12, is-typed-array@npm:^1.1.3, is-typed-array@npm:^1.1.9":
version: 1.1.12
resolution: "is-typed-array@npm:1.1.12"
dependencies:
which-typed-array: "npm:^1.1.11"
checksum: 10/d953adfd3c41618d5e01b2a10f21817e4cdc9572772fa17211100aebb3811b6e3c2e308a0558cc87d218a30504cb90154b833013437776551bfb70606fb088ca
languageName: node
linkType: hard

"is-typed-array@npm:^1.1.14":
version: 1.1.15
resolution: "is-typed-array@npm:1.1.15"
dependencies:
Expand Down Expand Up @@ -6775,8 +6811,8 @@ __metadata:
linkType: hard

"koa@npm:^2.13.4":
version: 2.16.4
resolution: "koa@npm:2.16.4"
version: 2.15.3
resolution: "koa@npm:2.15.3"
dependencies:
accepts: "npm:^1.3.5"
cache-content-type: "npm:^1.0.0"
Expand All @@ -6801,7 +6837,7 @@ __metadata:
statuses: "npm:^1.5.0"
type-is: "npm:^1.6.16"
vary: "npm:^1.1.2"
checksum: 10/f49e76c2cb7db4facbf215eef964c1eb3f0012c2f64490dfd9b349727e11c7f429f4bf16a47f725e41325415ffebefab0ca6ece3b1187518b42f979e4dbf6e01
checksum: 10/b2c2771a4ee5268f9d039ce025b9c3798a0baba8c3cf3895a6fc2d286363e0cd2c98c02a5b87f14100baa2bc17d854eed6ed80f9bd41afda1d056f803b206514
languageName: node
linkType: hard

Expand Down Expand Up @@ -6984,9 +7020,9 @@ __metadata:
linkType: hard

"lodash@npm:^4.0.0":
version: 4.17.23
resolution: "lodash@npm:4.17.23"
checksum: 10/82504c88250f58da7a5a4289f57a4f759c44946c005dd232821c7688b5fcfbf4a6268f6a6cdde4b792c91edd2f3b5398c1d2a0998274432cff76def48735e233
version: 4.17.21
resolution: "lodash@npm:4.17.21"
checksum: 10/c08619c038846ea6ac754abd6dd29d2568aa705feb69339e836dfa8d8b09abbb2f859371e86863eda41848221f9af43714491467b5b0299122431e202bb0c532
languageName: node
linkType: hard

Expand Down Expand Up @@ -8532,11 +8568,11 @@ __metadata:
linkType: hard

"qs@npm:^6.12.3, qs@npm:^6.5.2":
version: 6.15.0
resolution: "qs@npm:6.15.0"
version: 6.14.1
resolution: "qs@npm:6.14.1"
dependencies:
side-channel: "npm:^1.1.0"
checksum: 10/a3458f2f389285c3512e0ebc55522ee370ac7cb720ba9f0eff3e30fb2bb07631caf556c08e2a3d4481a371ac14faa9ceb7442a0610c5a7e55b23a5bdee7b701c
checksum: 10/34b5ab00a910df432d55180ef39c1d1375e550f098b5ec153b41787f1a6a6d7e5f9495593c3b112b77dbc6709d0ae18e55b82847a4c2bbbb0de1e8ccbb1794c5
languageName: node
linkType: hard

Expand Down Expand Up @@ -9058,7 +9094,7 @@ __metadata:
languageName: node
linkType: hard

"semver@npm:^7.0.0, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.3, semver@npm:^7.7.2, semver@npm:^7.7.3":
"semver@npm:^7.0.0, semver@npm:^7.7.2, semver@npm:^7.7.3":
version: 7.7.3
resolution: "semver@npm:7.7.3"
bin:
Expand All @@ -9067,6 +9103,15 @@ __metadata:
languageName: node
linkType: hard

"semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.3":
version: 7.7.1
resolution: "semver@npm:7.7.1"
bin:
semver: bin/semver.js
checksum: 10/4cfa1eb91ef3751e20fc52e47a935a0118d56d6f15a837ab814da0c150778ba2ca4f1a4d9068b33070ea4273629e615066664c2cfcd7c272caf7a8a0f6518b2c
languageName: node
linkType: hard

"set-function-length@npm:^1.2.2":
version: 1.2.2
resolution: "set-function-length@npm:1.2.2"
Expand Down Expand Up @@ -9113,7 +9158,19 @@ __metadata:
languageName: node
linkType: hard

"sha.js@npm:^2.4.0, sha.js@npm:^2.4.12, sha.js@npm:^2.4.8":
"sha.js@npm:^2.4.0, sha.js@npm:^2.4.8":
version: 2.4.11
resolution: "sha.js@npm:2.4.11"
dependencies:
inherits: "npm:^2.0.1"
safe-buffer: "npm:^5.0.1"
bin:
sha.js: ./bin.js
checksum: 10/d833bfa3e0a67579a6ce6e1bc95571f05246e0a441dd8c76e3057972f2a3e098465687a4369b07e83a0375a88703577f71b5b2e966809e67ebc340dbedb478c7
languageName: node
linkType: hard

"sha.js@npm:^2.4.12":
version: 2.4.12
resolution: "sha.js@npm:2.4.12"
dependencies:
Expand Down Expand Up @@ -10624,7 +10681,20 @@ __metadata:
languageName: node
linkType: hard

"which-typed-array@npm:^1.1.11, which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.2":
"which-typed-array@npm:^1.1.11, which-typed-array@npm:^1.1.2":
version: 1.1.11
resolution: "which-typed-array@npm:1.1.11"
dependencies:
available-typed-arrays: "npm:^1.0.5"
call-bind: "npm:^1.0.2"
for-each: "npm:^0.3.3"
gopd: "npm:^1.0.1"
has-tostringtag: "npm:^1.0.0"
checksum: 10/bc9e8690e71d6c64893c9d88a7daca33af45918861003013faf77574a6a49cc6194d32ca7826e90de341d2f9ef3ac9e3acbe332a8ae73cadf07f59b9c6c6ecad
languageName: node
linkType: hard

"which-typed-array@npm:^1.1.16":
version: 1.1.20
resolution: "which-typed-array@npm:1.1.20"
dependencies:
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
"unit:meteor": "cd meteor && yarn unit",
"meteor:run": "cd meteor && yarn start",
"lint": "run lint:meteor && run lint:packages",
"lint:fix": "run lint:meteor --fix && run lint:packages -- --fix",
"lint:fix": "run lint:meteor --fix && run lint:packages --fix",
"unit": "run unit:meteor && run unit:packages",
"validate:release": "yarn install && run install-and-build && run validate:versions && run validate:release:packages && run validate:release:meteor",
"validate:release:meteor": "cd meteor && yarn validate:prod-dependencies && yarn license-validate && yarn lint && yarn test",
Expand Down
9 changes: 9 additions & 0 deletions packages/blueprints-integration/src/api/showStyle.ts
Original file line number Diff line number Diff line change
Expand Up @@ -295,6 +295,15 @@ export interface BlueprintResultPart {
}

export interface BlueprintSyncIngestNewData {
/** All parts in the rundown, including the new/updated part */
allParts: IBlueprintPartDB[]
/**
* An approximate index of the current part in the allParts array
* Note: this will not always be an integer, such as when the part is an adlib part
* `null` means the part could not be placed
*/
currentPartIndex: number | null

// source: BlueprintSyncIngestDataSource
/** The new part */
part: IBlueprintPartDB | undefined
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { IPartAndPieceActionContext } from './partsAndPieceActionContext.js'
import { IExecuteTSRActionsContext, ITriggerIngestChangeContext } from './executeTsrActionContext.js'
import { IBlueprintPart, IBlueprintPartInstance, IBlueprintPiece } from '../index.js'
import { IRouteSetMethods } from './routeSetContext.js'
import { ITTimersContext } from './tTimersContext.js'

/** Actions */
export interface IDataStoreMethods {
Expand All @@ -28,7 +29,8 @@ export interface IActionExecutionContext
IPartAndPieceActionContext,
IExecuteTSRActionsContext,
ITriggerIngestChangeContext,
IRouteSetMethods {
IRouteSetMethods,
ITTimersContext {
/** Fetch the showstyle config for the specified part */
// getNextShowStyleConfig(): Readonly<{ [key: string]: ConfigItemValue }>

Expand Down
1 change: 1 addition & 0 deletions packages/blueprints-integration/src/context/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,4 @@ export * from './rundownContext.js'
export * from './showStyleContext.js'
export * from './studioContext.js'
export * from './syncIngestChangesContext.js'
export * from './tTimersContext.js'
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,21 @@ import {
IBlueprintPieceDB,
IBlueprintPieceInstance,
IBlueprintResolvedPieceInstance,
IBlueprintSegment,
IBlueprintSegmentDB,
IEventContext,
IShowStyleUserContext,
} from '../index.js'
import { ITriggerIngestChangeContext } from './executeTsrActionContext.js'
import { BlueprintQuickLookInfo } from './quickLoopInfo.js'
import { ReadonlyDeep } from 'type-fest'
import type { ITTimersContext } from './tTimersContext.js'

/**
* Context in which 'current' is the part currently on air, and 'next' is the partInstance being set as Next
* This is similar to `IPartAndPieceActionContext`, but has more limits on what is allowed to be changed.
*/
export interface IOnSetAsNextContext extends IShowStyleUserContext, IEventContext, ITriggerIngestChangeContext {
export interface IOnSetAsNextContext
extends IShowStyleUserContext, IEventContext, ITriggerIngestChangeContext, ITTimersContext {
/** Information about the current loop, if there is one */
readonly quickLoopInfo: BlueprintQuickLookInfo | null

Expand Down Expand Up @@ -56,7 +58,7 @@ export interface IOnSetAsNextContext extends IShowStyleUserContext, IEventContex
/** Gets the Part for a Piece retrieved from findLastScriptedPieceOnLayer. This primarily allows for accessing metadata of the Part */
getPartForPreviousPiece(piece: IBlueprintPieceDB): Promise<IBlueprintPart | undefined>
/** Gets the Segment. This primarily allows for accessing metadata */
getSegment(segment: 'current' | 'next'): Promise<IBlueprintSegment | undefined>
getSegment(segment: 'current' | 'next'): Promise<IBlueprintSegmentDB | undefined>

/** Get a list of the upcoming Parts in the Rundown, in the order that they will be Taken
*
Expand Down
4 changes: 3 additions & 1 deletion packages/blueprints-integration/src/context/onTakeContext.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { IBlueprintPart, IBlueprintPiece, IEventContext, IShowStyleUserContext, Time } from '../index.js'
import { IPartAndPieceActionContext } from './partsAndPieceActionContext.js'
import { IExecuteTSRActionsContext, ITriggerIngestChangeContext } from './executeTsrActionContext.js'
import { ITTimersContext } from './tTimersContext.js'

/**
* Context in which 'current' is the partInstance we're leaving, and 'next' is the partInstance we're taking
Expand All @@ -11,7 +12,8 @@ export interface IOnTakeContext
IShowStyleUserContext,
IEventContext,
IExecuteTSRActionsContext,
ITriggerIngestChangeContext {
ITriggerIngestChangeContext,
ITTimersContext {
/** Inform core that a take out of the taken partinstance should be blocked until the specified time */
blockTakeUntil(time: Time | null): Promise<void>
/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {
IBlueprintPieceDB,
IBlueprintPieceInstance,
IBlueprintResolvedPieceInstance,
IBlueprintSegment,
IBlueprintSegmentDB,
Time,
} from '../index.js'
import { BlueprintQuickLookInfo } from './quickLoopInfo.js'
Expand Down Expand Up @@ -50,7 +50,7 @@ export interface IPartAndPieceActionContext {
/** Gets the Part for a Piece retrieved from findLastScriptedPieceOnLayer. This primarily allows for accessing metadata of the Part */
getPartForPreviousPiece(piece: IBlueprintPieceDB): Promise<IBlueprintPart | undefined>
/** Gets the Segment. This primarily allows for accessing metadata */
getSegment(segment: 'current' | 'next'): Promise<IBlueprintSegment | undefined>
getSegment(segment: 'current' | 'next'): Promise<IBlueprintSegmentDB | undefined>

/** Get a list of the upcoming Parts in the Rundown, in the order that they will be Taken
*
Expand Down
Loading
Loading