52 lines
1.8 KiB
JavaScript
52 lines
1.8 KiB
JavaScript
module.exports = function (RED) {
|
|
function TemplateNode (config) {
|
|
const node = this
|
|
|
|
// create node in Node-RED
|
|
RED.nodes.createNode(this, config)
|
|
|
|
const evts = {
|
|
onAction: true // TODO: think we need an onSend event for template nodes that matches up with a `widget-send` message
|
|
}
|
|
|
|
if (config.templateScope === 'local') {
|
|
config.page = ''
|
|
config.ui = ''
|
|
} else if (config.templateScope === 'widget:page') {
|
|
config.ui = ''
|
|
config.group = ''
|
|
} else if (config.templateScope === 'widget:ui') {
|
|
config.page = ''
|
|
config.group = ''
|
|
} else if (config.templateScope === 'page:style') {
|
|
config.ui = ''
|
|
config.group = ''
|
|
} else if (config.templateScope === 'site:style') {
|
|
config.page = ''
|
|
config.group = ''
|
|
}
|
|
|
|
// ensure we have a value for passthru (default to true)
|
|
if (typeof config.passthru === 'undefined') {
|
|
config.passthru = true
|
|
}
|
|
|
|
// which group are we rendering this widget
|
|
if (config.group) {
|
|
const group = RED.nodes.getNode(config.group)
|
|
// inform the dashboard UI that we are adding this node
|
|
group.register(node, config, evts)
|
|
} else if (config.page) {
|
|
const page = RED.nodes.getNode(config.page)
|
|
// inform the dashboard UI that we are adding this node
|
|
page.register(null, node, config, evts)
|
|
} else if (config.ui) {
|
|
const ui = RED.nodes.getNode(config.ui)
|
|
// inform the dashboard UI that we are adding this node
|
|
ui.register(null, null, node, config, evts)
|
|
}
|
|
}
|
|
|
|
RED.nodes.registerType('ui-template', TemplateNode)
|
|
}
|