Files
ProdDash/modules/overflow-tap/module.json
T

145 lines
4.2 KiB
JSON
Raw Normal View History

{
"id": "overflow-tap",
"name": "Overflow Tap",
"version": "1.0.0",
"proddash": ">=1.11.0",
"description": "Switches Overflow Tap destinations from keywords in ProPresenter slide notes",
"permissions": [
{
"kind": "local-network",
"reason": "Reaching ProPresenter on this network"
}
],
"client": "client.js",
"server": "server.js",
"style": "style.css",
"minSize": {
"w": 2,
"h": 2
},
"defaultSize": {
"w": 4,
"h": 3
},
"configGroups": {
"ProPresenter": {
"help": "The ProPresenter whose slide notes carry the keywords. Enable the network in ProPresenter's Preferences › Network and enter the host and port shown there. Only the live slide's notes are read — nothing on the stage screens changes."
},
"Overflow": {
"collapsed": "whenSet",
"help": "API credentials from the Overflow Dashboard: Developers › API Keys (a READ_WRITE key). Tap groups and destinations are read from the account once these are saved; the groups list below fills in from there."
},
"Keywords": {
"help": "One keyword per line, as `keyword = Destination name` — the destination exactly as it is named in Overflow's Tap module (or its id). Add ` @ Group A, Group B` to a line to switch only those groups instead of the ones chosen above. When a slide's notes carry one of these keywords, every chosen group is pointed at that destination; a slide without a keyword changes nothing. When several match, the first line wins."
},
"Alerts": {
"toggle": "alertEnabled",
"collapsed": true,
"help": "Flash the dashboards listening on this channel when a switch fails — Overflow unreachable or refusing the change — so someone can fix Tap by hand before the moment passes."
}
},
"configSchema": {
"propresenter": {
"type": "endpoint",
"label": "ProPresenter",
"group": "ProPresenter",
"default": {
"host": "",
"port": 1025
}
},
"password": {
"type": "password",
"label": "API password",
"group": "ProPresenter",
"default": "",
"help": "Only if a password is set in ProPresenter's network preferences."
},
"clientId": {
"type": "string",
"label": "Client ID",
"group": "Overflow",
"default": ""
},
"apiKey": {
"type": "password",
"label": "API key",
"group": "Overflow",
"default": ""
},
"groups": {
"type": "multiselect",
"label": "Tap groups",
"group": "Overflow",
"default": [],
"optionsRoute": "/groups",
"help": "The groups a keyword switches. None chosen means every group on the account."
},
"keywords": {
"type": "text",
"label": "Keywords",
"group": "Keywords",
"default": "",
"help": "One per line — give = Give Online"
},
"matching": {
"type": "select",
"label": "Match",
"group": "Keywords",
"default": "word",
"options": [
{
"value": "word",
"label": "Whole word in the notes"
},
{
"value": "anywhere",
"label": "Anywhere in the notes"
},
{
"value": "line",
"label": "On its own line"
}
],
"help": "Whole word keeps `give` from firing on `forgiveness`; anywhere is what Overflow's own helper does."
},
"alertEnabled": {
"type": "switch",
"label": "Alert when a switch fails",
"group": "Alerts",
"default": false
},
"alertChannel": {
"type": "number",
"label": "Channel",
"group": "Alerts",
"default": 1,
"min": 1,
"max": 6,
"help": "1–6; each dashboard chooses the channels it listens to in its Layouts menu."
}
},
"instanceSchema": {
"showDestination": {
"type": "switch",
"label": "Destination",
"default": true
},
"showGroups": {
"type": "switch",
"label": "Groups",
"default": true
},
"showSlide": {
"type": "switch",
"label": "Slide match",
"default": true
},
"showHistory": {
"type": "switch",
"label": "History",
"default": true
}
}
}