Giter Site home page Giter Site logo

node-red-dashboard's Introduction

node-red-dashboard

platform NPM version NPM

This module provides a set of nodes in Node-RED to quickly create a live data dashboard.

These nodes require node.js version 12 or more recent. The last version to support node v8 was 2.30.0.

From version 2.10.0 you can create and install widget nodes like other Node-RED nodes. See the Wiki for more information.

For the latest updates see the CHANGELOG.md

NOTE: This project is based on Angular v1 - As that is now no longer maintained, this project should be considered to be on "life support". Small patches will be applied on a best can do basis, but there will be no major feature upgrades, and underlying security breakage may occur.

Dashboard example

Pre-requisites

The Node-RED-Dashboard requires Node-RED to be installed.

Install

To install the stable version use the Menu - Manage palette option and search for node-red-dashboard, or run the following command in your Node-RED user directory - typically ~/.node-red:

npm i node-red-dashboard

Restart your Node-RED instance and you should have UI nodes available in the palette and a new dashboard tab in the right side panel. The UI interface is available at http://localhost:1880/ui (if the default settings are used).

If you want to try the latest version from github, you can install it by

npm i node-red/node-red-dashboard

Settings

The default url for the dashboard is based off your existing Node-RED httpRoot path with /ui added. This can be changed in your Node-RED settings.js file.

ui: { path: "ui" },

You can also add your own express middleware to handle the http requests by using the ui: { middleware: your_function } property in settings.js. For example

ui: { middleware: function (req, res, next) {
            // Do something more interesting here.
            console.log('LOGGED')
            next()
        }
    },

You can also add middleware to the websocket connection using

ui: { ioMiddleware: function (socket, next) {
            // Do something more interesting here.
            console.log('HELLO')
            next()
        }
    },

Note: both of these also accept an array of functions if you need to pass in multiple middleware actions.

Setting your own ioMiddleware will disable the default cross domain origin check.

You can also set the dashboard to be read only by ui: { readOnly: true }. This does not stop the user interacting with the dashboard but does ignore all updates coming from the dashboard.

Finally you can customise the default Group name (for i18n) by setting

ui: { defaultGroup: "Better Default" }

You can of course combine any combination of these properties

Layout

The dashboard layout should be considered as a grid.

Each group element has a width - by default 6 'units' (a unit is 48px wide by default with a 6px gap).

Each widget in the group also has a width - by default, 'auto' which means it will fill the width of the group it is in, but you can set it to a fixed number of units.

The layout algorithm of the dashboard always tries to place items as high and to the left as they can within their container - this applies to how groups are positioned on the page, as well as how widgets are positioned in a group.

Given a group with width 6, if you add six widgets, each with a width of 2, then they will be laid out in two rows - three widgets in each.

If you add two groups of width 6, as long as your browser window is wide enough, they will sit alongside each other. If you shrink the browser, at some point the second group will shift to be below the first, in a column.

It is advisable to use multiple groups if possible, rather than one big group, so that the page can dynamically resize on smaller screens.

Features

Dashboard sidebar

The widget layout is managed by a dashboard tab in the sidebar of the Node-RED editor.

Layout
  • Tabs - From here you can re-order the tabs, groups and widgets, and add and edit their properties. You can also open the layout tools that may help you organise the widgets more easily than via the sidebar.

  • Links - to other web pages can also be added to the menu. They can optionally be opened in an iframe - if allowed by the target page.

Site
  • Title - the title of the UI page can be set.

  • Options - optionally hide the title bar, and allow swiping sideways between tabs on a touch screen. You can also set whether the template uses the selected theme or uses the underlying Angular Material theme. You can also choose to use the Angular Material theme everywhere.

  • Date Format - sets the default date format for chart and other labels.

  • Sizes - sets the basic geometry of the grid layout in pixels. The width and height of widgets can be set, as can the width of groups. These are the basic definitions of the "units' used elsewhere within the dashboard.

Theme
  • Style - the theme and font of the UI is set in the dashboard sidebar. You can select a default Light, Dark or Custom Theme. You cannot have different themes for each tab.

You can also choose to use the basic Angular Material themes instead if you like, either just within any ui_templates or for the whole Dashboard. This will only affect angular components so some of the charts and so on may need extra work.

Note: For users creating their own templates the following CSS variable names are available to help pick up the theme colours.

  • --nr-dashboard-pageBackgroundColor
  • --nr-dashboard-pageTitlebarBackgroundColor
  • --nr-dashboard-pageSidebarBackgroundColor
  • --nr-dashboard-groupBackgroundColor
  • --nr-dashboard-groupTextColor
  • --nr-dashboard-groupBorderColor
  • --nr-dashboard-widgetColor
  • --nr-dashboard-widgetTextColor
  • --nr-dashboard-widgetBgndColor

Widgets

Don't forget there are also extra ui widgets available on the Node-RED flows website. Search for node-ui- or contrib-ui- .

Group labels are optional.

Most widgets can have a label and value - both of these can be specified by properties of the incoming msg if required, and modified by angular filters. For example the label can be set to {{msg.topic}}, or the value could be set to {{value | number:1}}% to round the value to one decimal place and append a % sign.

Each node may parse the msg.payload to make it suitable for display. This converted version is exposed as the variable called value, (see example above).

Any widget can be disabled by passing in a msg.enabled property set to false;. Note: this doesn't stop the widget receiving messages but does stop inputs being active and does re-style the widget.

Most widgets and the ui group can have a CSS class or multiple CSS class names. This permits the user to override styles one or more widgets and their inner contents. e.g to colourise a warning toast, add the CSS class notification-warn to the notification widget and add a ui-template (set to "Add to site head section")...

<style>
  md-toast.notification-warn {
    border-width: 10px;
    border-color: darkorange;
  }
  md-toast.notification-warn > h3 {
    background-color: orange;
  }
  md-toast.notification-warn > div {
    background: rgba(245, 173, 66, 0.5);
    color: darkorange;
  }
</style>

Additionally, any widget that has a Class field can be dynamically updated by passing in a msg.className string property set to one or more class names.

Most ui widgets can also be configured by using a msg.ui_control message - see config-fields.md for further details.

  • Audio out - a widget that will let you play audio (wav or mp3) or send Text to Speech (TTS) to the client.

  • Button - the icon can be set using either Material or fa-icons - the colour and background colour may also be set. If the widget is sized to 1 wide the icon has precedence.

  • Chart - has both line, bar and pie chart modes. Also the X-Axis labels can be customised using a date formatter string. See this document for more information on the chart data formats accepted.

  • Colour Picker - a colour picker widget.

  • Date Picker - a date picker widget. The displayed Date format can be specified in the Site tab using moment.js formatting.

  • Dropdown - a dropdown select widget has been added. Multiple label, value pairs can be specified. The choices can also be set via msg.options containing an array of objects. If just text then the value will be the same as the label, otherwise you can specify both by using an object of "label":"value" pairs :

    [ "Choice 1", "Choice 2", {"Choice 3": 3} ]
    

    Setting msg.payload will pre-select the value in the dropdown.

  • Form - a widget that can be composed of several sub-widgets. When submitted all values are submitted as a single message.

  • Gauge - has 4 modes - standard (simple gauge), donut (complete 360°), compass, and wave. You can also specify the colour range of the standard and donut gauges.

  • Notification - creates alerts to the user - can either be a toast popup, or a dismissable alert box. The alert may be targeted to a single user.

  • Numeric - a Numeric input widget with up/down buttons.

  • Slider - a simple horizontal slider, with variable step size.

  • Switch - can also set two icons and/or colours depending on state.

  • Template - the template node allows the user to specify and create their own widgets within the framework using HTML, Javascript. This is an Angular.js widget. You may also use this to override the built in CSS styles.

  • Text - A read only widget, the layout of the label, and value can be configured.

  • Text input - text input box, with optional label, can also support password, email and colour modes.

  • UI-Control - allows some dynamic control of the dashboard. Sending a msg.payload of the tab number (from 0) or tab_name will switch to that tab. Tabs can be enabled/disabled/hide/show via msg like {"tabs":{"hide":["tab_name_with_underscores"],"show":["another_tab_name"],"disable":["unused_tab_name"]}}. Groups can be hidden and made visible via a msg like {"group":{"hide":["tab_name_group_name_with_underscores"],"show":["tab_name_another_group"],"focus":true}}. Outputs a msg.payload for every browser connect and loss, and every tab change. This can be used to trigger other actions like resetting the visibility of tabs and groups.

Tip: The Text widget will accept html - so you can use it together with the fa-icons we already use to create indicator type widgets.

Icons

The dashboard has 4 sets of icons built in. They are

And one that can only be used if you have a permanent connection to the internet

  • Iconify : e.g. iconify-mdi:car-battery 48px

Again note you have to add iconify- to the icon name in the icon set of your choice. You may also optionally specify a size in standard px or em notation. Default is 24px. You must also add a ui_template node that loads the necessary iconify library into the header of the dashboard. It should contain

<script src="https://code.iconify.design/1/1.0.7/iconify.min.js"></script>

Once you have done that then you can also use them more generally, for example

<span class="iconify icon:wi:sunset icon-inline:false"></span>

You may also create your own set of icons using Icofont. Once downloaded you can serve them locally via Node-RED and add them to the head of the dashboard page by using a ui_template node : e.g.

<link rel="stylesheet" href="myserver/path/icofont.css">

then you can use then as per above by adding the icofont- prefix e.g. icofont-badge

Or just use them in a template

<link rel="stylesheet" href="/css/icofont.css">
<div style="display: flex;height: 100%;justify-content: center;align-items: center;">
<i class="icofont icofont-4x icofont-hail"></i>
</div>

And finally via an image - https://{myserver/path/image.png}

You can use them in any of the Icon fields. You may also be able to use some of them for example in labels via their inline style eg <i class="fa fa-flag"></i>

Loading the Dashboard

Due to the size of the dashboard libraries it can take a long time to load if you are running on wireless network. It is possible add a custom loading page if you wish. To do so add a file called loading.html to the node_modules/node-red-dashboard/dist/ folder. A simple example could be

 <div><i class="fa fa-spin fa-5x fa-spinner"></i></div>

Securing the Dashboard

You can use the httpNodeAuth property in your Node-RED settings.js file to secure the Dashboard as it is created the same way as other HTTP nodes are. The details can be found at the bottom of this page in the docs http://nodered.org/docs/security

Multiple Users

This Dashboard does NOT support multiple individual users. It is a view of the status of the underlying Node-RED flow, which itself is single user. If the state of the flow changes then all clients will get notified of that change.

Messages coming from the dashboard do have a msg.socketid, and updates like change of tab, notifications, and audio alerts will be directed only to that session. Delete the msg.sessionid to send to all sessions.

Discussions and suggestions

Use the Node-RED Discourse Forum: https://discourse.nodered.org/c/dashboard or the Dashboard-ui channel in Slack to ask questions or to discuss new features.

The current work in progress list is shown in the Github Project.

Contributing

Before raising a pull-request, please read our contributing guide.

This project adheres to the Contributor Covenant 1.4. By participating, you are expected to uphold this code. Please report unacceptable behavior to any of the project's core team.

Developers

cd ~\.node-red\node_modules
git clone https://github.com/node-red/node-red-dashboard.git
cd node-red-dashboard
npm install

The plugin uses the dist folder if it exists. Make sure it has been deleted if you want to use the non-minified version while developing. After finishing changes to the front-end code in the src folder, you can use gulp to update and rebuild the minified files and update the appcache manifest.

gulp

We also have suggested lint and js styles that can be checked with:

gulp lint
gulp jscs

If submitting a Pull Request (PR) please do NOT include the minified /dist files.

Thank you.

node-red-dashboard's People

Contributors

andrei-tatar avatar backgroundworkers avatar bartbutenaers avatar bonanitech avatar camilleb avatar cinhcet avatar dancunnington avatar dceejay avatar dsl400 avatar fejesd avatar fellinga avatar heikokue avatar hiroyasunishiyama avatar hobbyquaker avatar hotnipi avatar hugobox avatar juggledad avatar kazuhiroitoh avatar kazuhitoyokoi avatar knolleary avatar linhtranvu avatar meeki007 avatar namgk avatar natcl avatar petslane avatar pirminkager avatar shrickus avatar sudo-jj avatar thierrylegal avatar vicary avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

node-red-dashboard's Issues

private ui-controls, etc.

This may not be the right place to drop this issue but there is no dedicated group yet and I just want to know whether the following is something which is considered for the future or not. Is there a good place to drop contribution suggestions or feature requests?
I have implement some test cases which required me to modify some of the base elements such as ui.js, events.js, ui-component-ctrl.js, …

Some of the issues I have implement are:

  • ui-controls that are private to a given client -
    I have added a post at: node-red https://groups.google.com/forum/#!topic/node-red/I6ojoN9ne4Q
  • simple things like text-input -> emit data when user hits enter rather than via delay
  • fill dropdown dynamically based on input node (current dropdown has no input channel; I have added one) – I have seen this request is an issue here already
  • mechanism to override control type, mechanism to inject control properties

Is this something you consider for your next releases?
Would be helpful to know where node-red-dashboard is heading, I assume that there is a backlog or list of issues for next releases?
Thanks an cheers - Peter

Some issues

Before making a pull request (if needed), some quick notes:

I've installed this repository under my Node-red installation and had the following issues:

  • An error at the initial page: Couldn't GET /ui/%7B%7Bmain.selectedTab.link%7D%7D
    I've solved this by modifying the partials/main.html page line from:
    iframe class="iframe" src="{{main.selectedTab.link}}"
    to
    frame class="iframe" ng-src="{{main.selectedTab.link}}"
  • Gauges weren't displayed at all. Missing raphael.min.js file. The npm install command failed to find the raphael defined version in package.json, so I've installed the latest. Gauges now appear, but do not work. I've also had to change the index.html file to refer to raphel.min.js instead of raphel-min.js.

I'm migrating from the npm repository node-red-contrib-ui version, so I've alread had some ui elements defined.

EDIT: Also shouldn't the README.md file refer to instructions for installing this repository, not Adrea's Tatar repository? Otherwise many people might be confused... :)

Dashboard Chart Infotip display on mobile device

Just noticed that the infotip (if that's what it is called!) doesn't display in the correct location on mobile devices (OK on laptop).
If you want to see the issue, the URL is https://digitalnut.co.uk:8443/home-usage
I have 3 groups, Home Power Usage, Solar Power Generation & Diverted Power, each of which contain a gauge and 2 charts. On a laptop, the groups display side by side, but on mobile naturally are stacked vertically due to the reduced viewport.
For ease of explanation, let me number each chart 1 - 6 (1 being the topmost, 6 being bottom).
If I tap the chart (1) to see an infotip of the value, I get a balloon within chart (1) as expected, but if I tap chart (2, 3, 4, 5 or 6) the balloon still appears within chart (1), meaning I have to carefully scroll up the top of the screen to see it.
Example, I tap chart (4) which is Solar Power Generation group, and as per screenshot, the infotip appears in chart (1) which is the Home Power Usage group.

node

Text Input "mode" options not working

The "mode" option for a "text-input" node should provide validation in the input field for email addresses, or provide the ability to show a color picker for the "color" mode. Neither work.

Chart node: Date line not in line with hover info

My system where node-red runs and my client are set to UTC +2h Timezone.
If i hover over a chart i see that the Date Line drawn is 2 hours offset from midnight compared to the tooltip times shown when hovering over the graph. The tooltip times seem correct, when i hover over the newest datapoint in the graph the time shown is current local time.

Must incoming messages be outputed directly?

Maybe the topic is not very well choosen, so for example:

I have a dimmer which is controlled via mqtt. The dimmer is shown as a slider on the dashboard with values from 0-100. There is a topic for setting the value and one where the current brightness is stored, like this:
bildschirmfoto 2016-09-02 um 20 41 36

The problem now is, that the value of the current brightness gets updated with a bit of lag on setting the dimmer via the dashboard. Naturally I'll get a race condition and the slider jumps from left to right. I can handle this by limiting the messages from the incoming topic.

But is it necessary to let the dashboard element output the incoming value immediately? Maybe it should be switchable that only on changing values on the dashboard element itself generate an output and an input is only used to display the value?

Maybe I've just thinking the wrong direction and you could just point me out. And also I hope you've could get what I mean ;-)

I love node-red-dashboard and hope that this project get's the attention it deserves. Meanwhile my whole home automation is running on node-red and node-red-dashboard.

Cheers,
Patrik

chart node: Restore fails for some arrays

Hi,

the restore of the chart node does not work steady. After a little digging into the code, I found out, that not all arrays are identified as array by instanceof array (line 27):

            convert: function(value, oldValue, msg) {
                if (value instanceof Array) {
                    oldValue = value;
                } else {

Changing this to Array.isArray(value) fixed it. See pull request on the original ui nodes Pull Request

Thanks.

Jochen

Template node code window not sized correctly

The template node's code window does not vertically size to the browser window. On my large monitor only 13 and a bit lines are actually visible though there is room for well over twice that number.

not in npm

It seems to me that the package can't be installed with

cd ~/.node-red
npm install node-red-dashboard

because it's not in the npm repo

ui.js beforeSend()

Suggestion: I think ui.js beforeSend should be revised:

        if (opt.forwardInputMessages && opt.node._wireCount) {
            //forward to output
            msg.payload = opt.convertBack(newValue);
            msg = opt.beforeSend(msg) || msg;
            opt.beforeSend(msg);
            opt.node.send(msg);
        }

beforeSend(msg) is called twice?
msg = opt.beforeSend(msg) || msg;
opt.beforeSend(msg);

since the default beforeSend(msg) in ui.js returns nothing (undefined) I would probably kill
msg = opt.beforeSend(msg) || msg;

ui.js handler passes two arguments to beforeSend()

   var toSend = {payload: converted};
   toSend = opt.beforeSend(toSend, msg) || toSend;

revising this could be a bit painfull as most controls could be affected...
e.g. ui_dropdown.js beforeSend(msg) takes one argument

Maybe there are some good reasons for this...

Formating values in charts?

Will it be possible to format the values displayed by the charts?

I can not format the incoming data as it is needed to render the chart correctly but it would be nice to allow formating the output with a value format like the gauges offer.

Furthermore will it be possible to format the data to a local value? Like 25,5 °C? I see that Angular Filters offer i18n but dont know if these are pressent in node-red/node-red-dashbaord and of course not how to use them ;-)

Thank you so much for your hard work. Many thanks!

Cheers,
pm

Arrow on template node

It will be better fo UI to set overflow-y to auto in .nd-dashboard-template class (file : node-red-dashboard/src/components/ui-component/templates/template.css) Line 3.

Values shown when navigating the UI

I didn't find an obvious solution to this: when navigating the UI, the panel is built according to the flow but the values shown inside each widget are coming up only as soon as messages reach them (according to the wiring etc). I would find it useful some async event reacting to "someone is loading the page". Not sure if this would mess everything but think of some value coming from MQTT each hour, would be nice to have "last known good value" shown. Having that event I could save useful values and trigger sending them to the UI when the page gets loaded.

Gauge node: gauge has fixed size

Hi,

the gauge is not resizing with the size of the card. It seems it has a fixed size.

gauge

Please make the gauge fill the available space.

Thanks.

Jochen

Odd versioning issue

I'm using Node-RED and dashboard on Bluemix. I'm trying to use the text-input node, with the delay set to 0 in order to wait for return, however it doesn't seem to exist in what I've pulled.

The package.json for my app has: "node-red-dashboard":"2.x", and when I examine the modules it pulls on deployment, it certainly looks like it has 2.0.1, however when I examine the html and js files for the text-input node, it doesn't appear to have the code to interpret the time delay<=0 case which I can clearly see in the repository. Is it me? Or am I somehow pulling an earlier version of the code?

Template node: Error while showing html in message

If i inject a message including html code like this:
<b>bold</b>
and i put these mustage tags template in the connected template node
{{{msg.payload}}}
i got an error in chrome and firefox:
Error: $parse:syntax Syntax Error.

Is there another way to display unescaped html?

Add ability to disable controls

It would be handy to have a boolean 'disabled' property on the controls. Setting the disabled property would work similarly to the standard HTML disabled property, causing them to be greyed out.

I'm pretty sure this could be handled with a template block, but that gets a little complicated.

My particular desire is to be able to disable gauges and switches if the device goes offline. A one-shot timer is reset when data is received from the device, and if the timer expires, it would set the gauge and switch to a disabled state to reflect that.

White space in drop-down

When you have whitespace in dropdown item (height siez : 1), text is written on 2 lines and dropdown list is too large (even with small text inside). I made test with _ and it works fine.

ui-card-panel position problem when resizing

When there are exactly two groups in a tab once div.masonry-container gets wider than 1398 px the second group is positioned on top of the first one.

with div.masonry-container exactly 1398 px the two ui-card-panels are placed at left: 348.5 px and left: 697.5 px side by side nicely in the middle of the page.
bildschirmfoto am 2016-08-25 um 21 08 38
with div.masonry-container exactly 1399 px they both get positioned at 349 px on top of each other.
bildschirmfoto am 2016-08-25 um 21 20 20

node-red-dashboard was installed from branch master on 25.08.2016
node-red version is 0.14.6
Browser is Firefox 48.0

Angular dependencies not installed for dev version

Strangely I had to manually install these 3:

[email protected] /root/.node-red/node_modules/node-red-dashboard
├── [email protected] extraneous
├── [email protected] extraneous
└── [email protected] extraneous

(I got these warnings before:
npm WARN [email protected] requires a peer of angular-messages@>=1.3 <1.6 but none was installed.
npm WARN [email protected] requires a peer of angular-mocks@>=1.3 <1.6 but none was installed.
npm WARN [email protected] requires a peer of angular-route@>=1.3 <1.6 but none was installed.
)

Switch node sends conflicting payloads

I added a switch node with a debug node on it's output, whenever I click the switch in the UI you get two messages, the first seems to be the current state of the switch the second seems to be the state that it's switching to.

Example below:

gifrecord_2016-05-19_105556

[{"id":"4edda852.6fea78","type":"ui_group","z":"60f99d2f.d43864","name":"Livingroom","order":"1","disp":true,"width":"8"},{"id":"36c3f680.c00d1a","type":"ui_tab","z":"60f99d2f.d43864","name":"James' Flat","icon":"dashboard","theme":"theme-light","order":"2"},{"id":"1b1b202.cbc71e","type":"ui_switch","z":"60f99d2f.d43864","tab":"36c3f680.c00d1a","group":"4edda852.6fea78","order":1,"width":6,"height":1,"name":"","label":"switch","topic":"","style":"","onvalue":"true","onicon":"","oncolor":"","offvalue":"false","officon":"","offcolor":"","x":1170,"y":100,"wires":[["c79171f9.848a6"]]},{"id":"c79171f9.848a6","type":"debug","z":"60f99d2f.d43864","name":"Switch Debug","active":true,"console":"false","complete":"payload","x":1160,"y":140,"wires":[]}]

Chart node: Tooltip / Hovering not disapperaring after some time

Hi,

when using chart node and hovering over points a tool tip is showing the actual value and time. In some cases, when using multiple charts it happens quite frequent, the tool tip is not disappearing. You have to reload the page. Changing the Tab does not solve the problem.

Node-RED version: v0.13.4
Node.js version: v5.10.1
node-red-dashboard (current from github)
Chromium Browser

See the problem on the screenshot.

Thanks

bildschirmfoto von 2016-05-23 16-44-14

Embedded Node-red ?

Hi,

I am trying to install the same in Embedded version of Node-red.
I get below error. Any suggestions ?

/node_modules/node-red-dashboard/ui.js:235
to.emit('ui-controls', {
^

TypeError: Cannot read property 'emit' of undefined
at /node_modules/node-red-dashboard/ui.js:235:11
at nextTickCallbackWith0Args (node.js:420:9)
at process._tickCallback (node.js:349:13)

I created the same issue at node-red-contrib-ui

Widget edit dialog tidy-up list

Capturing a todo list for tidy up tasks with the existing widget edit dialogs

  • ui_button
    • payload should be a typedInput
    • icon/label/color spacing/sizing/order
    • Color -> Text Color
    • placeholder text shouldn't have brackets
  • ui_dropdown
    • placeholder text shouldn't have brackets
    • Options ui should use editableList widget
  • ui_switch
    • placeholder text shouldn't have brackets
    • On/Off value should be typedInputs
    • Value/Color/Icon spacing/sizing/order
    • Add validation to custom icon/colour fields to ensure all are filled in
  • ui_slider
    • placeholder text shouldn't have brackets
    • Min/Max layout / sizing
  • ui_numeric
    • placeholder text shouldn't have brackets
    • Min/Max layout / sizing
  • ui_text_input
    • placeholder text shouldn't have brackets
    • Mode select should be fixed width
    • Is delay necessary?
  • ui_gauge
    • placeholder text shouldn't have brackets
    • Title/Value/Label layout indication
    • Graphical representations of gauge type
    • Min/Max layout / sizing
  • ui_chart
    • placeholder text shouldn't have brackets
    • Ymin/max are spinners - not used elsewhere for min/max..
    • Ymin/max sizing
    • "Time Window" - still think needs to explicitly reference X axis
    • 'No Data' - not clear what its for
      • made blank - showing prompt text the default.
  • ui_template
    • Replay/Forward options not described
      • Indeed, they don't mean what they say.
        • forward = passthru,
        • replay = add any message on output to the overall stored state - so will be there on reload. (I think) which I guess mean replay state on reload but that seems to happen anyway.. ???
  • General
    • Should templating (eg {{msg.topic}} be allowed to set label fields ? If so which widgets ?
    • Should the "restore" signal created by the chart on connection be more generally available ?
      • i.e. should there be an overall - ui connected event to trigger "stuff" (either via a specific node or via status node) - ie how should hidden config nodes emit events... ;-)

Add screenshots to the Readme.md

Hi.

Please consider adding a screenshot(s) of the resulting dashboard the Readme.md.
Could help people new to the project to glance and see if it fits their needs without the need to install and configure.

Thank you.

Charts overlap

I'm observing chart groups overlapping (screenshot below). The overlap wrapping is consistent and occurs in several browsers (Chrome/Win7, Chromium/Linux, Firefox/Win7 & Lightning/Android).

I had thought the cause was mixing automatic with explicit plot sizes (groups with explicitly sized plots would end up underneath), but further experimentation shows it's not that simple.

Here's what I'm seeing (@100% zoom):

overlapped_charts_100pct

When I zoom in, then back out to 90% I get something like this:

overlapped_charts_90pct

And at 75% but with reduced page width, the stacking looks like this:

overlapped_charts_75pct_narrow

Here's the order of my groups within the dashboard tab editor; unless specified, the plots all use auto size and all groups use default width.

  • ...some other tabs...
  • Outdoor Rack
    • TSI DustTrak II
    • Dylos DC1100 (6x5)
    • T300U
    • T400
    • Licor LI840A (6x4 and 6x2)
    • T200U

Edit: I forgot to specify which groups have set-size plots.

Migration guide

Need to have a clear guide on how to migrate from the current node-red-contrib-ui to node-red-dashboard.

node-red-dashboard won't show anything

I used node-red-contrib-ui which worked fine and now I wanted to change to the newer node-red-dashboard but despite updating my nodes, when I open http://localhost:1880/ui I can only see the top blue page whitout any graphs. Also on the bottom of the page it shows "The url cannot be loaded into an iframe."
What is wrong? Any ideas?
Thanks

Update / Rewrite package.json

  • re-version package.json
  • rename to node-red-dashboard
  • add correct author and contributors
  • update repository location url
  • add keywords

Date formating in chart?

Hi again,

is it possible to format the timestamp which is displayed as hh:mm:ss in a chart? Would be nice to display dates because charts could be used to display data over more than one day.

Cheers,
Patrik

Add CONTRIBUTING.md

  • add suitable CONTRIBUTING.md
  • add this repo to the ones the CLA checker monitors

Not published to npm as node-red-dashboard

Step 22 : RUN npm install -g node-red-dashboard
---> Running in 2ff11af0851d
npm ERR! Linux 3.16.0-67-generic
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "-g" "node-red-dashboard"
npm ERR! node v0.12.13
npm ERR! npm v2.15.0
npm ERR! code E404

npm ERR! 404 Registry returned 404 for GET on https://registry.npmjs.org/node-red-dashboard
npm ERR! 404
npm ERR! 404 'node-red-dashboard' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)
npm ERR! 404
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, http url, or git url.

npm ERR! Please include the following file with any support request:
npm ERR! /npm-debug.log
The command '/bin/sh -c npm install -g node-red-dashboard' returned a non-zero code: 1

pre-req levels

Just checking pre-reqs. Slightly behing the curve
angular-material-icons 0.6.0 0.6.0 0.7.0 angular-material-icons
nvd3 1.8.1 1.8.1 1.8.3 nvd3
svg-morpheus 0.3.0 git git svg-morpheus

the svg one is now released as 1.0.4.
Any reasons not to move to start on a recent base ?

Groups layout seems to be broken

When I add a second group, both groups seem to appear on top of each other:

[{"id":"4dfaa44a.b2055c","type":"ui_group","z":"2216ac32.dde954","order":"1","name":"Sliders","width":"6"},{"id":"a85539f6.57aac8","type":"ui_group","z":"2216ac32.dde954","order":"1","name":"Main","width":"6"},{"id":"c127f435.3ed808","type":"ui_tab","z":"2216ac32.dde954","name":"Home","icon":"dashboard","order":"1"},{"id":"17c6ec40.e83914","type":"ui_button","z":"2216ac32.dde954","tab":"c127f435.3ed808","group":"a85539f6.57aac8","order":1,"width":3,"height":1,"name":"button","label":"label","color":"","icon":"","payload":"","topic":"","x":280,"y":100,"wires":[[]]},{"id":"6f9bce30.90643","type":"ui_text_input","z":"2216ac32.dde954","tab":"c127f435.3ed808","group":"a85539f6.57aac8","order":1,"width":6,"height":1,"name":"","mode":"text","delay":300,"label":"Name","topic":"","x":460,"y":100,"wires":[[]]},{"id":"966b5b1a.6994a8","type":"ui_slider","z":"2216ac32.dde954","tab":"c127f435.3ed808","group":"4dfaa44a.b2055c","order":1,"width":6,"height":1,"name":"slider","label":"label","topic":"","min":0,"max":10,"x":270,"y":160,"wires":[[]]}]

capture d ecran 2016-05-10 a 12 00 41

Charts Cause Browser Page Crashes

I've been using a page with either 1 chart with 2 inputs or 2 charts with one input showing MQTT-derived data for an hour at a time (updated every 10 secs). After several hours, the pages 'snap' on both Chrome and Firefox on Win 10.

Bluemix node red integration

Hi,

May I know how to integrate this to bluemix platform please? I'm fairly new in bluemix development so it would be helpful to have a guide for that if possible.

Thank you kindly

Objects Hidden on Screen Resize

I have some objects as shown here:
triplecol

If I reduce the Window width, then one object (Freezer Temperature) disappears.
doublecol

In a single column, then all is well.
singlecol

I have noticed this behaviour on Windows Chrome and also, iOS Safari where the Temperature graph is always hidden. I have also seen instances where, when I take the window from a 2 column width to 3 column width, the hidden object will not reappear even in a new tab.

All objects are auto sized.

Default margin on template

the default inner margin on the template node is 0
image
which doesn't look great - I know it's the template so can be hacked as I wish - but it would be nice if the default looked basically OK to start with.

Dropdown: add input to set items dynamically

The dropdown widget is really nice !
I think it could be very useful if there was a way to dynamically set the elements of the dropdown by sending an object into the input of the dropdown. This way we could create dynamic menus by querying a database for example.

Ghost nodes

Hi,

Node version: 0.10.29
Node-RED Dashboard version: 2.0.1
Node-Red version: 0.14.5
Running on Raspberry Pi, Raspian (Jessie)

I've got an issue with NR Dashboard (2.0.1) in that it seems to create ghost groups. When I press deploy, I get the popup telling me that

You have some unused configuration nodes. Click here to see them

And yes, it does show such a node, "Spots [unassigned]". The global one doesn't seem to affect anything, but I didn't create that one afaik.
config

and double-clicking it to show the config for it, shows this:
is_unassigned

I do have created a node with the name "Spots", but it is properly configured, as shown by these two images:
tabs

but does have a tab

Am I doing something wrong?

I've attached my flows, if that helps:
flows_central.zip

Losing tab setting after updating icon

Noticed that groups lose their tab setting when their respective Tab node icon is updated.

1

If the 'Test' tab node icon is updated to say 'school' from 'github-circle', update & deploy, all of the flows contained within the 'Examples' group are orphaned from the 'Test' tab.

2

Now if the 'Examples' group is examined, it shows that it has changed tab from 'Test' to 'Power'

3

To restore things back to normal, it's necessary to revert the 'Examples' group's tab back to 'Test' from 'Power'.

Paul

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.