Table of Contents
Whilst we are not a dashboard, there is some runtime information that we do want to expose in the UI. Currently, this includes:
- 'state' of a node
- performance/through-put indicators
- ...
Each of these will be individually toggle-able
'State' of a node
What 'state' means will be specific to the individual node. The main use case will be for nodes that connect to external services (MQTT for eg) to indicate their connection state.
The state indicators will be on the bottom edge of the node, away from the 'edit state' indicators on the top edge of the node.
Question: should there be a single dot indicator that the node can control the colour of, or can the shape be customised from a small selection of choices (dot/square/star/hexagon...)... can there be multiple indicators per node (Nick thinks: single dot indicator to begin with - unless a use case for multiple/varied shape becomes obvious)
The runtime Node api will have a setState
(maybe emit('state')
instead) to update the status. The state value will be either a number (0,1,2..) or an object of the form (exact property names tbd):
{state:1,msg:"connected"}
The state updates the indicator and the message is provided as a hover/tool-tip on the indicator. (what about touch ui for tool-tip?)
Question: should there be a limited palette of colours with well-defined state values, or do individual node types have to provide a mapping for state value to colour. (Nick thinks: limited palette, with suitable constants
STATE_RED
STATE_GREEN
- what about blinking?)
Performance/through-put indicators
Communication
This will require a websocket connection to efficiently share the state updates from the runtime to the browser. Debug node already has its own, but this should be generalised.
- have a comms module in the runtime and browser
- provide pub/sub like semantics - debug subscribes to 'debug' topic etc
- not a replacement for the REST api - this is for the runtime information only