node-red / node-red.github.io

Node-RED Site
http://nodered.org
Other
99 stars 151 forks source link

Creating your own Node - where to add TypedInput on('change') event handlers #332

Open jpravetz opened 7 months ago

jpravetz commented 7 months ago

This issue is to suggest a couple of areas where documentation could be improved. Documentation is otherwise very good.

I haven't been able to find documentation for when in time to add a function to watch for change events as documented here. For example, to show/hide or enable/disable an HTML element based on a value of one of the Node properties.

Adding this within oneditprepare does not work ...

    $('#node-input-instruction').on('change', (event, type, value) => {
      if (value === 'turn_on') {
        $('#node-wrapper-speed').typedInput('enable');
        $('#node-wrapper-timeout').typedInput('enable');
      } else if (value === 'turn_off') {
        $('#node-wrapper-speed').typedInput('disable');
        $('#node-wrapper-timeout').typedInput('disable');
      }
    });

... because you get an error since you can't call the typedInput function this early. Is there an official/recommended callback we should be using for once the UI has been setup (added to the DOM, or whaterver work you do)? In the meantime, I am setting hide/show directly on various elements, rather than using typedInput().

Can the documentation in Node Properties and/or TypedInput Widget be updated to make this easier to understand, to provide examples of method calls? Or maybe I've just missed something in the documentation.

If I am confused, maybe others are as well (or maybe they are better at reading documentation).