A heads-up dashboard for displaying thing-statuses.
Example: https://github.com/nicinabox/glances-example
Demo: https://glances-example.herokuapp.com/
Glances is designed to be displayed on a monitor and works primarily over websockets. Built with React and Socket.io for lightning fast updates.
npm install -S glances-app
echo "require('glances-app')()" > server.js
tiles/
npm start
A tile is an object and structured like the following:
var state = {
id: 'counter',
title: 'Counter',
color: 'teal',
value: 0
}
module.exports = {
state,
onRequest($, body) {
Object.assign(state, {
value: +body.counter
})
return $.emitChange(state)
},
schedule($) {
$.every('2 sec', 'update counter', () => {
Object.assign(state, {
value: state.value + 1
})
return $.emitChange(state)
})
}
}
Currently supported tile layouts:
For ticker and list types, pass a key/value object, a flat array, or an array of pairs as the value
.
id
An identifier for the tile. If not specified, the file name will be used.
state
The tile state object.
onRequest
Called when tile receives a POST request. Make a request:
POST /tiles/:id
schedule
Define a schedule for the tile.
Accepts: utils
every
Schedule tile updates every so often. Must return a Promise or call next from callback
Accepts: interval, description (optional), callback
Callback proviles err
, next
emitChange
Emit your new tile state
Accepts: object
See NEXT.md for brainstorming on upcoming todos.
Glances was inspired by, and borrows heavily from Dashing by Shopify.