49 lines
1.4 KiB
JavaScript
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)
|
|
}
|