49 lines
1.4 KiB
JavaScript

module.exports = function (RED) {
/**
*
* @param {*} config
*/
function UIGroupNode (config) {
RED.nodes.createNode(this, config)
const node = this
const page = RED.nodes.getNode(config.page)
if (!('showTitle' in config)) {
// migration backwards compatibility
// we now use showTitle, not disp, but older flows still may have disp
config.showTitle = config.disp || true
}
// register self
page.getBase().register(null, config)
node.on('close', function (removed, done) {
node.deregister() // deregister self
done()
})
/**
* Function for widgets to register themselves with this page
* Calls the parent UI Base "register" function and registers this page,
* along with the widget
* @param {*} widget
*/
node.register = function (widgetNode, widgetConfig, widgetEvents) {
const group = config
page.register(group, widgetNode, widgetConfig, widgetEvents)
}
node.deregister = function (widgetNode) {
const group = config
page.deregister(group, widgetNode)
}
// Return the UI Base Node this group lives in
node.getBase = function () {
return RED.nodes.getNode(config.page).getBase()
}
}
RED.nodes.registerType('ui-group', UIGroupNode)
}