Skip to content

Commit 1b31e45

Browse files
authored
Merge pull request #1366 from bbc/feat/new-sourcelayers
feat: add new SourceLayer Types
2 parents 0db1454 + ca872a1 commit 1b31e45

File tree

16 files changed

+132
-9
lines changed

16 files changed

+132
-9
lines changed

meteor/server/api/rest/v1/typeConversion.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,9 @@ export function sourceLayerFrom(apiSourceLayer: APISourceLayer): ISourceLayer {
200200
case 'transition':
201201
layerType = SourceLayerType.TRANSITION
202202
break
203+
case 'lights':
204+
layerType = SourceLayerType.LIGHTS
205+
break
203206
case 'unknown':
204207
layerType = SourceLayerType.UNKNOWN
205208
break
@@ -209,6 +212,9 @@ export function sourceLayerFrom(apiSourceLayer: APISourceLayer): ISourceLayer {
209212
case 'studio-screen':
210213
layerType = SourceLayerType.STUDIO_SCREEN
211214
break
215+
case 'remote-speak':
216+
layerType = SourceLayerType.REMOTE_SPEAK
217+
break
212218
default:
213219
layerType = SourceLayerType.UNKNOWN
214220
assertNever(apiSourceLayer.layerType)
@@ -257,6 +263,9 @@ export function APISourceLayerFrom(sourceLayer: ISourceLayer): APISourceLayer {
257263
case SourceLayerType.TRANSITION:
258264
layerType = 'transition'
259265
break
266+
case SourceLayerType.LIGHTS:
267+
layerType = 'lights'
268+
break
260269
case SourceLayerType.UNKNOWN:
261270
layerType = 'unknown'
262271
break
@@ -266,6 +275,9 @@ export function APISourceLayerFrom(sourceLayer: ISourceLayer): APISourceLayer {
266275
case SourceLayerType.STUDIO_SCREEN:
267276
layerType = 'studio-screen'
268277
break
278+
case SourceLayerType.REMOTE_SPEAK:
279+
layerType = 'remote-speak'
280+
break
269281
default:
270282
layerType = 'unknown'
271283
assertNever(sourceLayer.type)

meteor/server/lib/rest/v1/showstyles.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,9 @@ export interface APISourceLayer {
249249
| 'lower-third'
250250
| 'live-speak'
251251
| 'transition'
252+
| 'lights'
252253
| 'local'
253254
| 'studio-screen'
255+
| 'remote-speak'
254256
exclusiveGroup?: string
255257
}

packages/blueprints-integration/src/content.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ export type SomeContent =
4242
| GraphicsContent
4343
| UnknownContent
4444
| EvsContent
45+
| RemoteSpeakContent
46+
| LightingContent
4547

4648
export type UnknownContent = BaseContent
4749

@@ -194,4 +196,8 @@ export interface TransitionContent extends BaseContent {
194196

195197
export type SomeTransitionContent = VTContent | TransitionContent
196198

199+
export type RemoteSpeakContent = RemoteContent
200+
201+
export type LightingContent = UnknownContent
202+
197203
export { SourceLayerType }

packages/shared-lib/src/core/model/ShowStyle.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,14 @@ export enum SourceLayerType {
2121
LIVE_SPEAK = 11,
2222
/** Transition effects, content object can use VTContent or TransitionContent */
2323
TRANSITION = 13,
24-
// LIGHTS = 14,
24+
/** Control of Studio Lighting, Effects, etc. */
25+
LIGHTS = 14,
2526
/** Uncontrolled local sources, such as PowerPoint presentation inputs, Weather systems, EVS replay machines, etc. */
2627
LOCAL = 15,
2728
/** Sources that are intended for a studio screen, such as weather, presentations etc. */
2829
STUDIO_SCREEN = 16,
30+
/** Remote source with (Local) Studio Audio */
31+
REMOTE_SPEAK = 17,
2932
}
3033

3134
/** A single source layer, f.g Cameras, VT, Graphics, Remotes */

packages/webui/src/client/styles/_itemTypeColors.scss

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,39 @@ $segment-layer-background-graphics: #dc5c00;
1010
$segment-layer-background-graphics--second: darken($segment-layer-background-graphics, 10%);
1111
$segment-layer-border-live-speak: #2f74ff;
1212
/** Gradients need to be defined with each color separately, so that they can be applied in SVG **/
13+
$segment-layer-background-gradient-divider: rgba(0, 0, 0, 0.5) 1px;
1314
$segment-layer-background-live-speak-1: #2f74ff;
1415
$segment-layer-background-live-speak-2: #39762b;
1516
$segment-layer-background-live-speak: linear-gradient(
1617
to bottom,
17-
$segment-layer-background-live-speak-1 50%,
18-
$segment-layer-background-live-speak-2 50%
18+
$segment-layer-background-live-speak-1 70%,
19+
$segment-layer-background-gradient-divider,
20+
$segment-layer-background-live-speak-2 72%
1921
);
2022
$segment-layer-background-live-speak--second-1: darken(#2f74ff, 10%);
2123
$segment-layer-background-live-speak--second-2: darken(#39762b, 10%);
2224
$segment-layer-background-live-speak--second: linear-gradient(
2325
to bottom,
24-
$segment-layer-background-live-speak--second-1 50%,
25-
$segment-layer-background-live-speak--second-2 50%
26+
$segment-layer-background-live-speak--second-1 70%,
27+
$segment-layer-background-gradient-divider,
28+
$segment-layer-background-live-speak--second-2 72%
29+
);
30+
$segment-layer-border-remote-speak: #e80064;
31+
$segment-layer-background-remote-speak-1: #e80064;
32+
$segment-layer-background-remote-speak-2: #39762b;
33+
$segment-layer-background-remote-speak: linear-gradient(
34+
to bottom,
35+
$segment-layer-background-remote-speak-1 70%,
36+
$segment-layer-background-gradient-divider,
37+
$segment-layer-background-remote-speak-2 72%
38+
);
39+
$segment-layer-background-remote-speak--second-1: darken(#e80064, 10%);
40+
$segment-layer-background-remote-speak--second-2: darken(#39762b, 10%);
41+
$segment-layer-background-remote-speak--second: linear-gradient(
42+
to bottom,
43+
$segment-layer-background-remote-speak--second-1 70%,
44+
$segment-layer-background-gradient-divider,
45+
$segment-layer-background-remote-speak--second-2 72%
2646
);
2747
$segment-layer-background-remote: #e80064;
2848
$segment-layer-background-remote--second: darken($segment-layer-background-remote, 10%);
@@ -42,7 +62,7 @@ $segment-item-disabled-color: #c9c9c9;
4262

4363
$layer-types-solid: 'unknown', 'camera', 'lower-third', 'graphics', 'remote', 'vt', 'local', 'script', 'mic', 'guest',
4464
'studio-screen';
45-
$layer-types-gradient: 'live-speak'; //
65+
$layer-types-gradient: 'live-speak', 'remote-speak'; //
4666

4767
$layer-types: join($layer-types-solid, $layer-types-gradient);
4868

@@ -460,6 +480,12 @@ $layer-types: join($layer-types-solid, $layer-types-gradient);
460480
--segment-layer-background-live-speak--second-1: #{$segment-layer-background-live-speak--second-1};
461481
--segment-layer-background-live-speak--second-2: #{$segment-layer-background-live-speak--second-2};
462482
--segment-layer-background-live-speak--second: #{$segment-layer-background-live-speak--second};
483+
--segment-layer-background-remote-speak-1: #{$segment-layer-background-remote-speak-1};
484+
--segment-layer-background-remote-speak-2: #{$segment-layer-background-remote-speak-2};
485+
--segment-layer-background-remote-speak: #{$segment-layer-background-remote-speak};
486+
--segment-layer-background-remote-speak--second-1: #{$segment-layer-background-remote-speak--second-1};
487+
--segment-layer-background-remote-speak--second-2: #{$segment-layer-background-remote-speak--second-2};
488+
--segment-layer-background-remote-speak--second: #{$segment-layer-background-remote-speak--second};
463489
--segment-layer-background-remote: #{$segment-layer-background-remote};
464490
--segment-layer-background-remote--second: #{$segment-layer-background-remote--second};
465491
--segment-layer-background-local: #{$segment-layer-background-local};

packages/webui/src/client/styles/rundownView.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1914,7 +1914,7 @@ svg.icon {
19141914
}
19151915

19161916
&.splits,
1917-
&.live-speak {
1917+
&.live-speak &.remote-speak {
19181918
.segment-timeline__piece__preview {
19191919
position: absolute;
19201920
top: 0;

packages/webui/src/client/styles/shelf/adLibPanel.scss

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,13 @@ $adlib-item-selected-color: var(--adlib-item-selected-color);
213213
var(--$segment-layer-background-camera) 50.0001%
214214
);
215215
}
216+
&.remote-speak {
217+
background: linear-gradient(
218+
to bottom,
219+
var(--segment-layer-background-remote-speak-1) 50%,
220+
var(--$segment-layer-background-remote-speak-2) 50.0001%
221+
);
222+
}
216223

217224
&.splits {
218225
background: linear-gradient(

packages/webui/src/client/styles/shelf/dashboard.scss

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,14 @@ $dashboard-button-height: 3.625em;
313313
);
314314
}
315315

316+
&.remote-speak {
317+
background: linear-gradient(
318+
to top,
319+
var(--segment-layer-background-remote-speak-2) 1em,
320+
var(--segment-layer-background-remote-speak-1) 1em
321+
);
322+
}
323+
316324
&.live {
317325
box-shadow: $dashboard-panel__button__border-width $dashboard-panel__button__border-width 0 $general-live-color,
318326
($dashboard-panel__button__border-width * -1) ($dashboard-panel__button__border-width * -1) 0

packages/webui/src/client/ui/ClockView/CameraScreen/index.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
import React, { useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react'
2-
import { CameraContent, RemoteContent, SourceLayerType, SplitsContent } from '@sofie-automation/blueprints-integration'
2+
import {
3+
CameraContent,
4+
RemoteContent,
5+
RemoteSpeakContent,
6+
SourceLayerType,
7+
SplitsContent,
8+
} from '@sofie-automation/blueprints-integration'
39
import { RundownId, ShowStyleBaseId, StudioId } from '@sofie-automation/corelib/dist/dataModel/Ids'
410
import { Rundown } from '@sofie-automation/corelib/dist/dataModel/Rundown'
511
import { unprotectString } from '@sofie-automation/corelib/dist/protectedString'
@@ -163,7 +169,7 @@ export function CameraScreen({ playlist, studioId }: Readonly<IProps>): JSX.Elem
163169

164170
const pieceFilterFunction = useMemo(() => {
165171
return (piece: PieceExtended) => {
166-
const camLikeContent = piece.instance.piece.content as CameraContent | RemoteContent
172+
const camLikeContent = piece.instance.piece.content as CameraContent | RemoteContent | RemoteSpeakContent
167173
if (
168174
sourceLayerIds !== null &&
169175
(piece.sourceLayer?._id === undefined || !sourceLayerIds.includes(piece.sourceLayer?._id))

packages/webui/src/client/ui/PieceIcons/PieceCountdown.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ const supportedLayers = new Set([
2727
SourceLayerType.STUDIO_SCREEN,
2828
SourceLayerType.LIVE_SPEAK,
2929
SourceLayerType.REMOTE,
30+
SourceLayerType.REMOTE_SPEAK,
3031
SourceLayerType.SPLITS,
3132
SourceLayerType.VT,
3233
SourceLayerType.CAMERA,

0 commit comments

Comments
 (0)