@tve/node-red-fd-html

0.1.12 • Public • Published

Node-RED FlexDash SVG

FlexDash HTML widget

This node & widget displays raw HTML in FlexDash and allows a Node-RED flow to alter the HTML via messages.

Messages may have the following fields:

  • payload - a string containing HTML to replace the entire contents of the widget
  • selector - a CSS selector to select elements to operate on
  • command - a string containing a command to execute on the selected elements, see below
  • args - an array of arguments to pass to the command
  • commands - an array of commands to execute, each element must contain a command an args field and optionally a selector field (the latter defaults to the HTML root!)

The fields are processed in the following order: first html, then selector, command and args, then commands.

Selectors

Standard selectors for ID (#id), class (.class) and attribute ([attr] or [attr=value]) are supported. The (space) combinator is supported, other combinators are not.

When an array of commands is specified, the selector field may have the value . to refer to the same elements as the previous command in the same message.

HTML elements in arguments

Some commands, such as append and prepend, take HTML elements as arguments. These must be Javascript objects with fields tag (the tag name), attrs (the attributes including id and class if desired) and optionally children (an array of child elements) or text (the text content of the element). Elements with text must have a tag of span and no children.

Command list

The commands are loosely patterned after JQuery.

Commands that return something should output a message but currently don't

  • id - set the ID of the element to args[0]
  • addClass - add args[...] to the classes of the element
  • hasClass - check whether any of the elements has class args[0], returns a boolean
  • removeClass - remove args[...] from the classes of the element
  • attr - if args.length==1 return an array with the values of the attribute args[0] for each selected element, if args.length==2 set the attribute args[0] to the value args[1] for each element
  • hasAttr - check whether any of the elements has attribute args[0], returns a boolean (doesn't exist in JQuery)
  • text - if args.length==0 get the "inner text" of the selected elements (concatenated), else set the "inner text" of the selected elements to args[0] creating span elements, which is equivalent to bare text in HTML (currently there is no escaping done of <, but that will be added...)
  • html - set the "inner HTML" of the selected elements to args[0], i.e., parse the HTML and set the resulting elements as children of the selected elements
  • append - append elements args[0...] to each of the selected elements
  • prepend - prepend elements args[0...] to each of the selected elements
  • empty - remove all children of the selected elements
  • remove - remove the selected elements
  • replaceWith - replace the selected elements with elements args[0...]

Readme

Keywords

none

Package Sidebar

Install

npm i @tve/node-red-fd-html

Weekly Downloads

2

Version

0.1.12

License

none

Unpacked Size

208 kB

Total Files

22

Last publish

Collaborators

  • tve