@514sid/signagekit 0.0.0-stage → 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +27 -0
- package/LICENSE +44 -0
- package/README.md +102 -2
- package/bin/signagekit.js +4 -0
- package/dist/chunks/chart-DT-Y4YWA.js +2 -0
- package/dist/chunks/empty--6iNLsra.js +2 -0
- package/dist/chunks/icon-paths-Dl0Rqja7.js +2 -0
- package/dist/chunks/lists-DYyvtVni.js +2 -0
- package/dist/chunks/measures-_ZIjSN7n.js +2 -0
- package/dist/chunks/media-DI-zWZSx.js +3 -0
- package/dist/chunks/qr-size-Dq23do6_.js +2 -0
- package/dist/chunks/ready-DI3QO8E5.js +2 -0
- package/dist/chunks/share-CtG_q4RM.js +2 -0
- package/dist/chunks/stat-DIAOyDND.js +2 -0
- package/dist/chunks/time-sq9LV8dr.js +2 -0
- package/dist/cli.js +10 -0
- package/dist/index.js +3 -0
- package/dist/style.css +2 -0
- package/dist/types/alert.d.ts +20 -0
- package/dist/types/binds.d.ts +6 -0
- package/dist/types/chart.d.ts +16 -0
- package/dist/types/check.d.ts +31 -0
- package/dist/types/checks.d.ts +30 -0
- package/dist/types/colors.d.ts +18 -0
- package/dist/types/components.d.ts +13 -0
- package/dist/types/cycle-fit.d.ts +6 -0
- package/dist/types/data.d.ts +19 -0
- package/dist/types/empty.d.ts +6 -0
- package/dist/types/fit.d.ts +3 -0
- package/dist/types/flow.d.ts +7 -0
- package/dist/types/icon-paths.d.ts +2 -0
- package/dist/types/icon.d.ts +7 -0
- package/dist/types/icons.d.ts +3 -0
- package/dist/types/index.d.ts +20 -0
- package/dist/types/lists.d.ts +28 -0
- package/dist/types/measure.d.ts +4 -0
- package/dist/types/measures.d.ts +22 -0
- package/dist/types/media.d.ts +15 -0
- package/dist/types/mount.d.ts +45 -0
- package/dist/types/parse.d.ts +11 -0
- package/dist/types/qr-size.d.ts +2 -0
- package/dist/types/ready.d.ts +3 -0
- package/dist/types/share.d.ts +33 -0
- package/dist/types/sizes.d.ts +15 -0
- package/dist/types/specs.d.ts +7 -0
- package/dist/types/stat.d.ts +38 -0
- package/dist/types/table-fit.d.ts +8 -0
- package/dist/types/table.d.ts +11 -0
- package/dist/types/time.d.ts +15 -0
- package/dist/types/trend-fit.d.ts +14 -0
- package/dist/types/type-scale.d.ts +10 -0
- package/dist/types/types.d.ts +271 -0
- package/dist/types/validate-layout.d.ts +2 -0
- package/dist/types/validate.d.ts +7 -0
- package/dist/types/version.d.ts +24 -0
- package/dist/types/views.d.ts +29 -0
- package/docs/api.md +106 -0
- package/docs/assistants.md +55 -0
- package/docs/format.md +183 -0
- package/docs/getting-started.md +77 -0
- package/docs/preview.md +84 -0
- package/examples/clinic-queue/data.json +17 -0
- package/examples/clinic-queue/layout.yml +43 -0
- package/examples/fire-alarm/data.yml +23 -0
- package/examples/fire-alarm/layout.yml +30 -0
- package/examples/gym-classes/data.yml +17 -0
- package/examples/gym-classes/layout.yml +47 -0
- package/examples/hotel-lobby/data.yml +2 -0
- package/examples/hotel-lobby/layout.yml +29 -0
- package/examples/lunch/data.yml +16 -0
- package/examples/lunch/layout.yml +43 -0
- package/examples/meeting-room/data.json +19 -0
- package/examples/meeting-room/layout.json +107 -0
- package/examples/noc-wall/data.yml +18 -0
- package/examples/noc-wall/layout.yml +63 -0
- package/examples/oee-line/data.yml +25 -0
- package/examples/oee-line/layout.yml +55 -0
- package/examples/office-air/data.yml +25 -0
- package/examples/office-air/layout.yml +71 -0
- package/examples/sales-today/data.json +28 -0
- package/examples/sales-today/layout.json +62 -0
- package/examples/snow-closure/data.yml +28 -0
- package/examples/snow-closure/layout.json +35 -0
- package/examples/station-departures/data.json +24 -0
- package/examples/station-departures/layout.json +34 -0
- package/examples/store-promo/data.yml +18 -0
- package/examples/store-promo/layout.yml +54 -0
- package/examples/storm-banner/data.json +20 -0
- package/examples/storm-banner/layout.json +33 -0
- package/examples/trading-floor/data.json +23 -0
- package/examples/trading-floor/layout.json +65 -0
- package/examples/warehouse/data.json +20 -0
- package/examples/warehouse/layout.json +50 -0
- package/package.json +100 -4
- package/schema.json +962 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
hours:
|
|
2
|
+
- [Maternity, '14:00 - 20:00']
|
|
3
|
+
- [Surgical, '15:00 - 19:00']
|
|
4
|
+
- [Paediatrics, '10:00 - 20:00']
|
|
5
|
+
- [Cardiology, '14:00 - 18:00']
|
|
6
|
+
notices:
|
|
7
|
+
- Two visitors per bed
|
|
8
|
+
- Use the hand gel at every ward door
|
|
9
|
+
- Parking validation at Reception
|
|
10
|
+
|
|
11
|
+
alert:
|
|
12
|
+
level: danger
|
|
13
|
+
icon: fire
|
|
14
|
+
title: Fire alarm
|
|
15
|
+
message: 'Fire reported on Level 2, East Wing. Leave the building by the nearest exit.'
|
|
16
|
+
steps:
|
|
17
|
+
- Do not use the lifts
|
|
18
|
+
- Follow the green exit signs
|
|
19
|
+
- Staff will guide patients and visitors
|
|
20
|
+
- Gather in Car Park B, away from the entrance
|
|
21
|
+
footer: 'Do not re-enter until a fire officer gives the all clear. Updated 14:32'
|
|
22
|
+
mode: takeover
|
|
23
|
+
until: '2026-11-15T00:00:00Z'
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# yaml-language-server: $schema=https://signagekit.514sid.com/schema.json
|
|
2
|
+
# St. Mary's Hospital main entrance: visitor information, with a fire alarm
|
|
3
|
+
# takeover bound to /alert. Clear the alert by setting /alert to null.
|
|
4
|
+
colors:
|
|
5
|
+
scheme: light
|
|
6
|
+
accent: '#0b5cad'
|
|
7
|
+
|
|
8
|
+
layout:
|
|
9
|
+
design: landscape
|
|
10
|
+
flow:
|
|
11
|
+
- { zone: head, span: 9, height: 170px }
|
|
12
|
+
- { zone: clock, span: 3, height: 170px }
|
|
13
|
+
- { zone: hours, span: 7, height: 2 }
|
|
14
|
+
- { zone: info, span: 5, height: 2 }
|
|
15
|
+
|
|
16
|
+
zones:
|
|
17
|
+
head: { type: heading, text: Welcome to St. Mary's }
|
|
18
|
+
clock: { type: clock, surface: raised, show_date: true }
|
|
19
|
+
hours:
|
|
20
|
+
type: table
|
|
21
|
+
title: Visiting hours
|
|
22
|
+
columns: [Ward, Hours]
|
|
23
|
+
align: [start, end]
|
|
24
|
+
rows: { bind: /hours }
|
|
25
|
+
info:
|
|
26
|
+
type: list
|
|
27
|
+
title: Visitor notices
|
|
28
|
+
items: { bind: /notices }
|
|
29
|
+
|
|
30
|
+
alert: { bind: /alert }
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Leeds is on GMT in November, so Z matches local time.
|
|
2
|
+
next_at: '2026-11-14T14:00:00Z'
|
|
3
|
+
next_label: Spin Power, Studio 1
|
|
4
|
+
spots_left: 3
|
|
5
|
+
spots_label: Book in the app
|
|
6
|
+
classes:
|
|
7
|
+
- ['14:00', Spin Power, Studio 1, Dani, 3 left]
|
|
8
|
+
- ['14:30', Yoga Flow, Studio 2, Mei, 8 left]
|
|
9
|
+
- ['15:15', HIIT 45, Studio 1, Marcus, 11 left]
|
|
10
|
+
- ['16:00', Pilates Core, Studio 2, Sofia, Full]
|
|
11
|
+
- ['17:00', Boxfit, Studio 3, Jayden, 6 left]
|
|
12
|
+
- ['17:30', Spin Endurance, Studio 1, Dani, 9 left]
|
|
13
|
+
- ['18:00', Stretch and Restore, Studio 2, Mei, 14 left]
|
|
14
|
+
messages:
|
|
15
|
+
- Towels at the front desk
|
|
16
|
+
- Late cancellations after 2 hours are charged
|
|
17
|
+
- Sauna closed for cleaning 15:00 to 15:30
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# yaml-language-server: $schema=https://signagekit.514sid.com/schema.json
|
|
2
|
+
# Pulse Fitness Leeds, reception wall. Landscape, dark with a hot accent.
|
|
3
|
+
colors:
|
|
4
|
+
scheme: dark
|
|
5
|
+
accent: '#f97316'
|
|
6
|
+
|
|
7
|
+
layout:
|
|
8
|
+
design: landscape
|
|
9
|
+
flow:
|
|
10
|
+
- { zone: head, span: 8, height: 170px }
|
|
11
|
+
- { zone: clock, span: 4, height: 170px }
|
|
12
|
+
- { zone: classes, span: 8, height: 4 }
|
|
13
|
+
- { zone: next, span: 4, height: 4 }
|
|
14
|
+
- { zone: ticker, height: 110px }
|
|
15
|
+
|
|
16
|
+
zones:
|
|
17
|
+
head: { type: heading, text: Classes today }
|
|
18
|
+
clock: { type: clock, surface: raised, hour12: false }
|
|
19
|
+
classes:
|
|
20
|
+
type: table
|
|
21
|
+
columns: [Time, Class, Studio, Coach, Spots]
|
|
22
|
+
align: [start, start, start, start, end]
|
|
23
|
+
widths: [1.1, 2.6, 1.4, 1.8, 1.3]
|
|
24
|
+
page_rows: 7
|
|
25
|
+
seconds: 12
|
|
26
|
+
rows: { bind: /classes }
|
|
27
|
+
next:
|
|
28
|
+
type: stack
|
|
29
|
+
items:
|
|
30
|
+
- type: countdown
|
|
31
|
+
weight: 2
|
|
32
|
+
title: Next class
|
|
33
|
+
label: { bind: /next_label }
|
|
34
|
+
to: { bind: /next_at }
|
|
35
|
+
done: Starting now
|
|
36
|
+
- type: stat
|
|
37
|
+
weight: 2
|
|
38
|
+
title: Studio 1 spots
|
|
39
|
+
value: { bind: /spots_left }
|
|
40
|
+
unit: left
|
|
41
|
+
thresholds: { warning: 5, danger: 2 }
|
|
42
|
+
label: { bind: /spots_label }
|
|
43
|
+
ticker:
|
|
44
|
+
type: cycle
|
|
45
|
+
surface: raised
|
|
46
|
+
seconds: 8
|
|
47
|
+
items: { bind: /messages }
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# yaml-language-server: $schema=https://signagekit.514sid.com/schema.json
|
|
2
|
+
# Sparse lobby screen: four zones, light scheme, landscape.
|
|
3
|
+
colors:
|
|
4
|
+
scheme: light
|
|
5
|
+
accent: '#0f5132'
|
|
6
|
+
|
|
7
|
+
layout:
|
|
8
|
+
design: landscape
|
|
9
|
+
flow:
|
|
10
|
+
- { zone: head, span: 12, height: 200px }
|
|
11
|
+
- { zone: time, span: 4, height: 1 }
|
|
12
|
+
- { zone: guide, span: 4, height: 1 }
|
|
13
|
+
- { zone: desk, span: 4, height: 1 }
|
|
14
|
+
|
|
15
|
+
zones:
|
|
16
|
+
head: { type: heading, title: Lobby, text: Welcome to Harbor House, align: start }
|
|
17
|
+
time: { type: clock, title: Local time, surface: raised, show_date: true, hour12: false }
|
|
18
|
+
guide:
|
|
19
|
+
type: qr
|
|
20
|
+
title: Guest guide
|
|
21
|
+
value: { bind: /guest_url }
|
|
22
|
+
label: Wi-Fi, room service and checkout
|
|
23
|
+
desk:
|
|
24
|
+
type: text
|
|
25
|
+
title: Front desk
|
|
26
|
+
surface: accent
|
|
27
|
+
text: { bind: /desk_note }
|
|
28
|
+
fit: true
|
|
29
|
+
align: start
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Every value in YAML data is read as text, so 4.50 stays "4.50".
|
|
2
|
+
menu:
|
|
3
|
+
- [Tomato soup, VG, 4.50]
|
|
4
|
+
- [Chicken curry, GF, 8.90]
|
|
5
|
+
- [Mushroom risotto, V, 8.20]
|
|
6
|
+
- [Fish and chips, '', 9.50]
|
|
7
|
+
- [Falafel wrap, VG, 6.80]
|
|
8
|
+
wait: 6
|
|
9
|
+
seats: 42
|
|
10
|
+
notices:
|
|
11
|
+
- 'Fire drill Thursday at 10:00'
|
|
12
|
+
- New vegan station opens Monday
|
|
13
|
+
messages:
|
|
14
|
+
- 'Coffee bar open until 16:00'
|
|
15
|
+
- 'Card payments only after 14:00'
|
|
16
|
+
- Reusable cups get 20p off
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# yaml-language-server: $schema=https://signagekit.514sid.com/schema.json
|
|
2
|
+
# A canteen screen: the menu, wait time, free seats and notices. Designed for
|
|
3
|
+
# landscape; on a portrait screen the zones move onto rows of their own.
|
|
4
|
+
colors:
|
|
5
|
+
scheme: dark
|
|
6
|
+
accent: '#2563eb'
|
|
7
|
+
|
|
8
|
+
layout:
|
|
9
|
+
design: landscape
|
|
10
|
+
flow:
|
|
11
|
+
- { zone: head, span: 9, height: 170px }
|
|
12
|
+
- { zone: clock, span: 3, height: 170px }
|
|
13
|
+
- { zone: menu, span: 6, height: 2 }
|
|
14
|
+
- { zone: info, span: 6, height: 2 }
|
|
15
|
+
- { zone: news, height: 110px }
|
|
16
|
+
|
|
17
|
+
zones:
|
|
18
|
+
head: { type: heading, text: Today's lunch }
|
|
19
|
+
clock: { type: clock, surface: raised, show_date: true }
|
|
20
|
+
menu:
|
|
21
|
+
type: table
|
|
22
|
+
title: Menu
|
|
23
|
+
columns: [Dish, Diet, Price]
|
|
24
|
+
align: [start, start, end]
|
|
25
|
+
rows: { bind: /menu }
|
|
26
|
+
info:
|
|
27
|
+
type: stack
|
|
28
|
+
items:
|
|
29
|
+
- type: stack
|
|
30
|
+
direction: row
|
|
31
|
+
items:
|
|
32
|
+
- { type: stat, title: Wait time, value: { bind: /wait }, unit: min }
|
|
33
|
+
- { type: stat, title: Seats free, value: { bind: /seats } }
|
|
34
|
+
- type: stack
|
|
35
|
+
direction: row
|
|
36
|
+
items:
|
|
37
|
+
- { type: list, title: Notices, items: { bind: /notices } }
|
|
38
|
+
- type: text
|
|
39
|
+
surface: accent
|
|
40
|
+
title: Allergens
|
|
41
|
+
fit: true
|
|
42
|
+
text: Ask at the counter for allergen information.
|
|
43
|
+
news: { type: cycle, surface: raised, items: { bind: /messages }, seconds: 8 }
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"room": {
|
|
3
|
+
"name": "Ada Lovelace",
|
|
4
|
+
"floor": "Floor 3, east wing",
|
|
5
|
+
"book_url": "https://rooms.northwind.example/r/ada-lovelace"
|
|
6
|
+
},
|
|
7
|
+
"status": {
|
|
8
|
+
"text": "In use",
|
|
9
|
+
"label": "Busy until 15:00",
|
|
10
|
+
"state": "danger",
|
|
11
|
+
"ends_at": "2026-11-14T15:00:00Z"
|
|
12
|
+
},
|
|
13
|
+
"agenda": [
|
|
14
|
+
{ "start": "13:00", "end": "15:00", "title": "Pricing review", "detail": "Organiser: M. Oyelaran" },
|
|
15
|
+
{ "start": "15:00", "end": "15:30", "title": "Interview debrief" },
|
|
16
|
+
{ "start": "15:30", "end": "16:30", "title": "Sprint planning, Payments squad", "detail": "Organiser: J. Whitcombe-Tarasova" },
|
|
17
|
+
{ "start": "17:00", "end": "17:30", "title": "1:1 Priya / Daniel" }
|
|
18
|
+
]
|
|
19
|
+
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"colors": {
|
|
4
|
+
"scheme": "dark",
|
|
5
|
+
"accent": "#f59e0b"
|
|
6
|
+
},
|
|
7
|
+
"layout": {
|
|
8
|
+
"design": "portrait",
|
|
9
|
+
"flow": [
|
|
10
|
+
{
|
|
11
|
+
"zone": "room",
|
|
12
|
+
"span": 8,
|
|
13
|
+
"height": "200px"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"zone": "clock",
|
|
17
|
+
"span": 4,
|
|
18
|
+
"height": "200px"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"zone": "status",
|
|
22
|
+
"span": 12,
|
|
23
|
+
"height": 2
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"zone": "ends",
|
|
27
|
+
"span": 6,
|
|
28
|
+
"height": 1.2
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"zone": "book",
|
|
32
|
+
"span": 6,
|
|
33
|
+
"height": 1.2
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"zone": "agenda",
|
|
37
|
+
"span": 12,
|
|
38
|
+
"height": 4
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"zone": "rules",
|
|
42
|
+
"span": 12,
|
|
43
|
+
"height": "150px"
|
|
44
|
+
}
|
|
45
|
+
]
|
|
46
|
+
},
|
|
47
|
+
"zones": {
|
|
48
|
+
"room": {
|
|
49
|
+
"type": "heading",
|
|
50
|
+
"title": "Meeting room",
|
|
51
|
+
"text": {
|
|
52
|
+
"bind": "/room/name"
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
"clock": {
|
|
56
|
+
"type": "clock",
|
|
57
|
+
"surface": "raised",
|
|
58
|
+
"hour12": false
|
|
59
|
+
},
|
|
60
|
+
"status": {
|
|
61
|
+
"type": "stat",
|
|
62
|
+
"title": {
|
|
63
|
+
"bind": "/room/floor"
|
|
64
|
+
},
|
|
65
|
+
"value": {
|
|
66
|
+
"bind": "/status/text"
|
|
67
|
+
},
|
|
68
|
+
"label": {
|
|
69
|
+
"bind": "/status/label"
|
|
70
|
+
},
|
|
71
|
+
"state": {
|
|
72
|
+
"bind": "/status/state"
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
"ends": {
|
|
76
|
+
"type": "countdown",
|
|
77
|
+
"surface": "raised",
|
|
78
|
+
"title": "Current meeting",
|
|
79
|
+
"to": {
|
|
80
|
+
"bind": "/status/ends_at"
|
|
81
|
+
},
|
|
82
|
+
"label": "left"
|
|
83
|
+
},
|
|
84
|
+
"book": {
|
|
85
|
+
"type": "qr",
|
|
86
|
+
"title": "Book this room",
|
|
87
|
+
"value": {
|
|
88
|
+
"bind": "/room/book_url"
|
|
89
|
+
},
|
|
90
|
+
"label": "Scan to book"
|
|
91
|
+
},
|
|
92
|
+
"agenda": {
|
|
93
|
+
"type": "schedule",
|
|
94
|
+
"title": "Next up",
|
|
95
|
+
"rows": 6,
|
|
96
|
+
"items": {
|
|
97
|
+
"bind": "/agenda"
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
"rules": {
|
|
101
|
+
"type": "text",
|
|
102
|
+
"surface": "accent",
|
|
103
|
+
"text": "Seats 10. Please wipe the whiteboard and take your cups when you leave.",
|
|
104
|
+
"fit": true
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
alert: ''
|
|
2
|
+
kpi:
|
|
3
|
+
error_rate: 0.31
|
|
4
|
+
error_state: warning
|
|
5
|
+
p99: 412
|
|
6
|
+
p99_spark: [530, 510, 498, 470, 455, 430, 412]
|
|
7
|
+
svc:
|
|
8
|
+
cdn: good
|
|
9
|
+
auth: good
|
|
10
|
+
api: warning
|
|
11
|
+
payments: good
|
|
12
|
+
db: warning
|
|
13
|
+
vpn: danger
|
|
14
|
+
incidents:
|
|
15
|
+
- [SEV2, VPN ams-02 saturated, 41 m]
|
|
16
|
+
- [SEV3, eu-west API over SLO, 36 m]
|
|
17
|
+
- [SEV3, Replica lag on pg-replica-04, 22 m]
|
|
18
|
+
- [SEV4, Certificate expires in 9 days, 3 d]
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# yaml-language-server: $schema=https://signagekit.514sid.com/schema.json
|
|
2
|
+
# Network operations wall: six zones, dark.
|
|
3
|
+
colors:
|
|
4
|
+
scheme: dark
|
|
5
|
+
|
|
6
|
+
layout:
|
|
7
|
+
flow:
|
|
8
|
+
- { zone: head, span: 8, height: 120px }
|
|
9
|
+
- { zone: clock, span: 4, height: 120px }
|
|
10
|
+
- { zone: err, span: 3, height: 1 }
|
|
11
|
+
- { zone: p99, span: 3, height: 1 }
|
|
12
|
+
- { zone: svc, span: 6, height: 1 }
|
|
13
|
+
- { zone: inc, span: 12, height: 1 }
|
|
14
|
+
|
|
15
|
+
alert:
|
|
16
|
+
text: { bind: /alert }
|
|
17
|
+
title: Major incident
|
|
18
|
+
state: danger
|
|
19
|
+
|
|
20
|
+
zones:
|
|
21
|
+
head:
|
|
22
|
+
type: heading
|
|
23
|
+
title: Network operations
|
|
24
|
+
text: Global edge and core
|
|
25
|
+
clock:
|
|
26
|
+
type: clock
|
|
27
|
+
surface: raised
|
|
28
|
+
show_date: true
|
|
29
|
+
hour12: false
|
|
30
|
+
err:
|
|
31
|
+
type: stat
|
|
32
|
+
title: Error rate
|
|
33
|
+
value: { bind: /kpi/error_rate }
|
|
34
|
+
unit: '%'
|
|
35
|
+
state: { bind: /kpi/error_state }
|
|
36
|
+
trend: up
|
|
37
|
+
delta: '+0.04'
|
|
38
|
+
good_when: down
|
|
39
|
+
p99:
|
|
40
|
+
type: stat
|
|
41
|
+
title: p99 latency
|
|
42
|
+
value: { bind: /kpi/p99 }
|
|
43
|
+
unit: ms
|
|
44
|
+
trend: down
|
|
45
|
+
delta: -18 ms
|
|
46
|
+
good_when: down
|
|
47
|
+
spark: { bind: /kpi/p99_spark }
|
|
48
|
+
svc:
|
|
49
|
+
type: status
|
|
50
|
+
title: Services
|
|
51
|
+
items:
|
|
52
|
+
- { label: Edge CDN, state: { bind: /svc/cdn } }
|
|
53
|
+
- { label: Sign-in, state: { bind: /svc/auth } }
|
|
54
|
+
- { label: Core API, state: { bind: /svc/api }, note: eu-west slow }
|
|
55
|
+
- { label: Payments, state: { bind: /svc/payments } }
|
|
56
|
+
- { label: Postgres, state: { bind: /svc/db }, note: lag 4 s }
|
|
57
|
+
- { label: Office VPN, state: { bind: /svc/vpn }, note: down }
|
|
58
|
+
inc:
|
|
59
|
+
type: table
|
|
60
|
+
title: Open incidents
|
|
61
|
+
columns: [Sev, Incident, Age]
|
|
62
|
+
align: [start, start, end]
|
|
63
|
+
rows: { bind: /incidents }
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Every value is read as text.
|
|
2
|
+
oee:
|
|
3
|
+
value: 78.4
|
|
4
|
+
state: warning
|
|
5
|
+
trend: up
|
|
6
|
+
delta: +1.6 pts
|
|
7
|
+
spark: [71, 73, 72, 75, 77, 76, 78.4]
|
|
8
|
+
hourly: [74, 76, 72, 79, 81, 77, 78]
|
|
9
|
+
target: [85, 85, 85, 85, 85, 85, 85]
|
|
10
|
+
hours: ['06:00', '07:00', '08:00', '09:00', '10:00', '11:00', '12:00']
|
|
11
|
+
lines:
|
|
12
|
+
- { label: Line 1 PET 0.5 L, value: 412, max: 480, state: good }
|
|
13
|
+
- { label: Line 2 PET 1.5 L, value: 301, max: 360, state: good }
|
|
14
|
+
- { label: Line 3 glass, value: 188, max: 300, state: warning }
|
|
15
|
+
- { label: Line 4 cans, value: 0, max: 600, state: danger }
|
|
16
|
+
downtime:
|
|
17
|
+
- { label: Changeover, value: 52 }
|
|
18
|
+
- { label: Glue pump, value: 41 }
|
|
19
|
+
- { label: No preforms, value: 27 }
|
|
20
|
+
- { label: Micro stops, value: 19 }
|
|
21
|
+
- { label: CIP cleaning, value: 15 }
|
|
22
|
+
messages:
|
|
23
|
+
- 'Changeover on Line 3 at 13:00, bring format parts'
|
|
24
|
+
- 'Forklift route B closed until 15:00'
|
|
25
|
+
- 'QA sample every 30 min, record on tablet'
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# yaml-language-server: $schema=https://signagekit.514sid.com/schema.json
|
|
2
|
+
# OEE board for a bottling plant floor, landscape.
|
|
3
|
+
colors:
|
|
4
|
+
scheme: dark
|
|
5
|
+
accent: '#0ea5e9'
|
|
6
|
+
|
|
7
|
+
layout:
|
|
8
|
+
design: landscape
|
|
9
|
+
gap: 2
|
|
10
|
+
flow:
|
|
11
|
+
- { zone: head, span: 9, height: 120px }
|
|
12
|
+
- { zone: clock, span: 3, height: 120px }
|
|
13
|
+
- { zone: oee, span: 4, height: 2 }
|
|
14
|
+
- { zone: trend, span: 8, height: 2 }
|
|
15
|
+
- { zone: lines, span: 6, height: 3 }
|
|
16
|
+
- { zone: downtime, span: 6, height: 3 }
|
|
17
|
+
- { zone: news, height: 100px }
|
|
18
|
+
|
|
19
|
+
zones:
|
|
20
|
+
head: { type: heading, text: Filling hall 2 OEE, surface: raised }
|
|
21
|
+
clock: { type: clock, surface: raised }
|
|
22
|
+
oee:
|
|
23
|
+
type: stat
|
|
24
|
+
title: OEE today
|
|
25
|
+
value: { bind: /oee/value }
|
|
26
|
+
unit: '%'
|
|
27
|
+
state: { bind: /oee/state }
|
|
28
|
+
trend: { bind: /oee/trend }
|
|
29
|
+
delta: { bind: /oee/delta }
|
|
30
|
+
good_when: up
|
|
31
|
+
spark: { bind: /oee/spark }
|
|
32
|
+
trend:
|
|
33
|
+
type: chart
|
|
34
|
+
kind: line
|
|
35
|
+
title: OEE by hour vs target
|
|
36
|
+
labels: { bind: /hours }
|
|
37
|
+
series:
|
|
38
|
+
- { name: OEE, values: { bind: /oee/hourly } }
|
|
39
|
+
- { name: Target, values: { bind: /oee/target } }
|
|
40
|
+
lines:
|
|
41
|
+
type: meters
|
|
42
|
+
title: Line speed
|
|
43
|
+
unit: bpm
|
|
44
|
+
items: { bind: /lines }
|
|
45
|
+
downtime:
|
|
46
|
+
type: bars
|
|
47
|
+
title: Downtime today
|
|
48
|
+
unit: min
|
|
49
|
+
limit: 5
|
|
50
|
+
items: { bind: /downtime }
|
|
51
|
+
news:
|
|
52
|
+
type: cycle
|
|
53
|
+
surface: raised
|
|
54
|
+
seconds: 6
|
|
55
|
+
items: { bind: /messages }
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Readings from the floor sensors. Every value in YAML data is read as text.
|
|
2
|
+
floor: Floor 3, east wing
|
|
3
|
+
co2:
|
|
4
|
+
now: 742
|
|
5
|
+
trend: down
|
|
6
|
+
delta: -58 since 10:00
|
|
7
|
+
label: Fresh
|
|
8
|
+
temp:
|
|
9
|
+
now: 21.8
|
|
10
|
+
label: Comfortable
|
|
11
|
+
state: good
|
|
12
|
+
humidity: 46
|
|
13
|
+
rooms:
|
|
14
|
+
- { label: Harbour, value: 1180, max: 1600 }
|
|
15
|
+
- { label: Lighthouse, value: 960, max: 1600 }
|
|
16
|
+
- { label: Quay, value: 812, max: 1600 }
|
|
17
|
+
- { label: Dockside, value: 655, max: 1600 }
|
|
18
|
+
- { label: Pier, value: 540, max: 1600 }
|
|
19
|
+
day:
|
|
20
|
+
hours: ['08:00', '09:00', '10:00', '11:00', '12:00', '13:00', '14:00']
|
|
21
|
+
co2: [520, 690, 800, 940, 1080, 870, 742]
|
|
22
|
+
tips:
|
|
23
|
+
- Harbour is getting stuffy, open the window or take a break
|
|
24
|
+
- Windows on the south side open with the grey handle
|
|
25
|
+
- Plants on this floor are watered on Mondays and Thursdays
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# yaml-language-server: $schema=https://signagekit.514sid.com/schema.json
|
|
2
|
+
# Air quality on an office floor, for the screen by the kitchen.
|
|
3
|
+
version: 1
|
|
4
|
+
colors:
|
|
5
|
+
scheme: dark
|
|
6
|
+
accent: '#0ea5e9'
|
|
7
|
+
|
|
8
|
+
layout:
|
|
9
|
+
flow:
|
|
10
|
+
- { zone: head, span: 9, height: 130px }
|
|
11
|
+
- { zone: clock, span: 3, height: 130px }
|
|
12
|
+
- { zone: co2, span: 4, height: 2 }
|
|
13
|
+
- { zone: temp, span: 4, height: 2 }
|
|
14
|
+
- { zone: humidity, span: 4, height: 2 }
|
|
15
|
+
- { zone: rooms, span: 5, height: 3 }
|
|
16
|
+
- { zone: today, span: 7, height: 3 }
|
|
17
|
+
- { zone: tips, height: 100px }
|
|
18
|
+
|
|
19
|
+
zones:
|
|
20
|
+
head:
|
|
21
|
+
type: heading
|
|
22
|
+
title: Air quality
|
|
23
|
+
text: { bind: /floor }
|
|
24
|
+
clock:
|
|
25
|
+
type: clock
|
|
26
|
+
surface: raised
|
|
27
|
+
show_date: true
|
|
28
|
+
co2:
|
|
29
|
+
type: stat
|
|
30
|
+
title: CO₂, open plan
|
|
31
|
+
value: { bind: /co2/now }
|
|
32
|
+
unit: ppm
|
|
33
|
+
thresholds: { warning: 1000, danger: 1400 }
|
|
34
|
+
trend: { bind: /co2/trend }
|
|
35
|
+
delta: { bind: /co2/delta }
|
|
36
|
+
good_when: down
|
|
37
|
+
label: { bind: /co2/label }
|
|
38
|
+
temp:
|
|
39
|
+
type: stat
|
|
40
|
+
title: Temperature
|
|
41
|
+
value: { bind: /temp/now }
|
|
42
|
+
unit: °C
|
|
43
|
+
label: { bind: /temp/label }
|
|
44
|
+
state: { bind: /temp/state }
|
|
45
|
+
humidity:
|
|
46
|
+
type: meter
|
|
47
|
+
title: Humidity
|
|
48
|
+
value: { bind: /humidity }
|
|
49
|
+
max: 100
|
|
50
|
+
unit: '%'
|
|
51
|
+
thresholds: { warning: 60, danger: 70 }
|
|
52
|
+
rooms:
|
|
53
|
+
type: meters
|
|
54
|
+
title: CO₂ by meeting room, ppm
|
|
55
|
+
items: { bind: /rooms }
|
|
56
|
+
thresholds: { warning: 1000, danger: 1400 }
|
|
57
|
+
today:
|
|
58
|
+
type: chart
|
|
59
|
+
kind: area
|
|
60
|
+
title: CO₂ today, open plan
|
|
61
|
+
labels: { bind: /day/hours }
|
|
62
|
+
series:
|
|
63
|
+
- name: CO₂
|
|
64
|
+
values: { bind: /day/co2 }
|
|
65
|
+
target: 1000
|
|
66
|
+
target_label: Open a window above 1000
|
|
67
|
+
tips:
|
|
68
|
+
type: cycle
|
|
69
|
+
surface: raised
|
|
70
|
+
items: { bind: /tips }
|
|
71
|
+
seconds: 8
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kpi": {
|
|
3
|
+
"revenue": 134210,
|
|
4
|
+
"vs_target": 105,
|
|
5
|
+
"target_label": "Day target 128K",
|
|
6
|
+
"state": "good",
|
|
7
|
+
"trend": "up",
|
|
8
|
+
"delta": "+2.4 pts"
|
|
9
|
+
},
|
|
10
|
+
"hourly": {
|
|
11
|
+
"labels": ["09:00", "10:00", "11:00", "12:00", "13:00", "14:00", "15:00", "16:00"],
|
|
12
|
+
"revenue": [9.1, 12.4, 14.8, 16.2, 17.5, 19.9, 21.3, 23.0]
|
|
13
|
+
},
|
|
14
|
+
"reps": [
|
|
15
|
+
{ "label": "Dana Reyes", "value": 31.2 },
|
|
16
|
+
{ "label": "Marcus Okafor", "value": 28.4 },
|
|
17
|
+
{ "label": "Lena Brandt", "value": 26.9 },
|
|
18
|
+
{ "label": "Sam Whitfield", "value": 22.1 },
|
|
19
|
+
{ "label": "Aiko Tanaka", "value": 19.7 },
|
|
20
|
+
{ "label": "Joel Mensah", "value": 17.4 }
|
|
21
|
+
],
|
|
22
|
+
"regions": [
|
|
23
|
+
{ "label": "North", "value": 104 },
|
|
24
|
+
{ "label": "East", "value": 97 },
|
|
25
|
+
{ "label": "South", "value": 78 },
|
|
26
|
+
{ "label": "West", "value": 62 }
|
|
27
|
+
]
|
|
28
|
+
}
|