12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- const statestore = require('../store/state.js')
-
- module.exports = function (RED) {
- function DropdownNode (config) {
- // create node in Node-RED
- RED.nodes.createNode(this, config)
- const node = this
-
- // which group are we rendering this widget
- const group = RED.nodes.getNode(config.group)
-
- const evts = {
- onChange: true,
- beforeSend: function (msg) {
- if (msg.ui_update) {
- const update = msg.ui_update
- if (update.options) {
- // dynamically set "options" property
- statestore.set(group.getBase(), node, msg, 'options', update.options)
- }
- if (typeof update.label !== 'undefined') {
- // dynamically set "label" property
- statestore.set(group.getBase(), node, msg, 'label', update.label)
- }
- if (typeof update.multiple !== 'undefined') {
- // dynamically set "label" property
- statestore.set(group.getBase(), node, msg, 'multiple', update.multiple)
- }
- }
- if (msg.options) {
- // backward compatibility support
- statestore.set(group.getBase(), node, msg, 'options', msg.options)
- }
- return msg
- }
- }
-
- // inform the dashboard UI that we are adding this node
- group.register(node, config, evts)
- }
-
- RED.nodes.registerType('ui-dropdown', DropdownNode)
- }
|