Is this what websockets are for?
<md-button ng-click="send({payload: 'Hello World'})">
Click me to send a hello world
</md-button>Will display a button that when clicked will send a message with the payload 'Hello world'.<table>
<tr><th>Title</th><th>Torrent</th><th>Date</th><th>Remove</th></tr>
{{#payload}}
<tr class="">
<td><a href="{{details}}" target="blank">{{title}}</a></td>
<td><a href="{{link}}" target="blank">Torrent</a></td>
<td>{{timestamp}}</td>
<td><md-button ng-click="send({payload: {{id}} })">Remove</md-button></td>
</tr>
{{/payload}}
</table>
<div>{{msg.payload}}</div>
<md-button ng-click="send({payload: 'Hello World'})">
Click me to send a hello world
</md-button>
<md-slider ng-model="msg.payload" ng-change="send(msg)"></md-slider>
<div flex layout="row" layout-align="space-around center">
<md-button ng-repeat="b in buttons" class="md-icon-button" ng-click="click(b)">
<ng-md-icon icon="{{msg.payload[b.payload]?b.icon2:b.icon}}"
ng-style="{color: msg.payload[b.payload]?b.color2:b.color}"></ng-md-icon>
</md-button>
</div>
<script>
scope.buttons = [{
icon: 'pause', color: 'black',
icon2: 'play_arrow', color2: 'red',
payload: 'play',
}, {
icon: 'alarm', color: 'black',
icon2: 'alarm', color2: 'red',
payload: 'alarm',
}];
scope.click = function(b) {
if (!this.msg) this.msg = {};
if (!this.msg.payload) this.msg.payload = {};
this.msg.payload[b.payload] = !this.msg.payload[b.payload];
this.send(this.msg);
}.bind(scope);
</script>Why change button backgrounds? RGB buttons of course.
<md-button ng-click="send({payload: 'Hello World'})">
Click me to send a hello world
<div>Another paragraph of text</div>
<ul>
<li>How</li>
<li>About</li>
<li>A</li>
<li>List</li>
</ul>
</md-button>
.nr-dashboard-theme-light .nr-dashboard-template .md-button {
background: #9EE3F9;
color: #fff;
margin: 0 6px;
padding: 0 12px;
min-height: 26px;
min-width: unset;
line-height: unset;
}.nr-dashboard-template {
padding: 8px 10px;
overflow-y: auto;
}<style>
.filled { height: 100% !important; }
.nr-dashboard-template {
padding: 0px 0px;
}
</style>.nr-dashboard-theme-light .nr-dashboard-template .md-button {
background: #9EE3F9;
color: #fff;
margin: 0 6px;
padding: 0 12px;
min-height: 26px;
min-width: unset;
line-height: unset;
}<style>
.filled {
height: 100% !important;
padding: 0 !important;
margin: 0 !important;
}
.nr-dashboard-template {
padding: 0;
margin: 0;
}
</style>[{"id":"9179e8c.28c1418","type":"ui_template","z":"15e1f6a1.aeab19","group":"c494ec5.4d1e51","name":"Template node","order":0,"width":0,"height":0,"format":"<div>In the UI Template: {{msg.payload}}</div>\n\n\n \n\n \n\n<md-button ng-click=\"send({payload: 'Hello World'})\"> \n\n Click me to send a hello world \n\n</md-button> \n\n \n\n<md-slider ng-model=\"msg.payload\" ng-change=\"send(msg)\"></md-slider> \n\n \n\n<div flex layout=\"row\" layout-align=\"space-around center\"> \n\n <md-button ng-repeat=\"b in buttons\" class=\"md-icon-button\" ng-click=\"click(b)\"> \n\n <ng-md-icon icon=\"{{msg.payload[b.payload]?b.icon2:b.icon}}\" \n\n ng-style=\"{color: msg.payload[b.payload]?b.color2:b.color}\"></ng-md-icon> \n\n </md-button> \n\n</div> \n\n \n\n<script> \n\n scope.buttons = [{ \n\n icon: 'pause', color: 'black', \n\n icon2: 'play_arrow', color2: 'red', \n\n payload: 'play', \n\n }, { \n\n icon: 'alarm', color: 'black', \n\n icon2: 'alarm', color2: 'red', \n\n payload: 'alarm', \n\n }]; \n\n \n\n scope.click = function(b) { \n\n if (!this.msg) this.msg = {}; \n\n if (!this.msg.payload) this.msg.payload = {}; \n\n this.msg.payload[b.payload] = !this.msg.payload[b.payload]; \n\n this.send(this.msg); \n\n }.bind(scope); \n\n</script>","storeOutMessages":true,"fwdInMessages":true,"x":384,"y":349,"wires":[[]]},{"id":"18dd6570.1c216b","type":"ui_template","z":"15e1f6a1.aeab19","group":"c494ec5.4d1e51","name":"From template node","order":0,"width":0,"height":0,"format":"<div>From template node:</div>\n<div ng-bind-html=\"msg.payload\">{{msg.payload}}</div>","storeOutMessages":true,"fwdInMessages":true,"x":521,"y":419,"wires":[[]]},{"id":"8f756d01.07088","type":"template","z":"15e1f6a1.aeab19","name":"","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"<div>{{msg.payload}}</div>\n\n\n \n\n \n\n<md-button ng-click=\"send({payload: 'Hello World'})\"> \n\n Click me to send a hello world \n\n</md-button> \n\n \n\n<md-slider ng-model=\"msg.payload\" ng-change=\"send(msg)\"></md-slider> \n\n \n\n<div flex layout=\"row\" layout-align=\"space-around center\"> \n\n <md-button ng-repeat=\"b in buttons\" class=\"md-icon-button\" ng-click=\"click(b)\"> \n\n <ng-md-icon icon=\"{{msg.payload[b.payload]?b.icon2:b.icon}}\" \n\n ng-style=\"{color: msg.payload[b.payload]?b.color2:b.color}\"></ng-md-icon> \n\n </md-button> \n\n</div> \n\n \n\n<script> \n\n scope.buttons = [{ \n\n icon: 'pause', color: 'black', \n\n icon2: 'play_arrow', color2: 'red', \n\n payload: 'play', \n\n }, { \n\n icon: 'alarm', color: 'black', \n\n icon2: 'alarm', color2: 'red', \n\n payload: 'alarm', \n\n }]; \n\n \n\n scope.click = function(b) { \n\n if (!this.msg) this.msg = {}; \n\n if (!this.msg.payload) this.msg.payload = {}; \n\n this.msg.payload[b.payload] = !this.msg.payload[b.payload]; \n\n this.send(this.msg); \n\n }.bind(scope); \n\n</script>","x":276,"y":429,"wires":[["18dd6570.1c216b"]]},{"id":"864de060.5bf2c","type":"inject","z":"15e1f6a1.aeab19","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"x":128,"y":434,"wires":[["8f756d01.07088"]]},{"id":"c494ec5.4d1e51","type":"ui_group","z":"","name":"Counter","tab":"156af96f.f8fd27","disp":true,"width":"6"},{"id":"156af96f.f8fd27","type":"ui_tab","z":"","name":"Home","icon":"home","order":"1"}]
<!DOCTYPE html>
<html ng-app="ngApp">
<head>
</head>
<body ng-controller="ngCtrl">
<h1>Topic: {[{topic}]}</h1>
<pre>
{[{payload | json }]}
</pre>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.12/angular.min.js"></script>
<script>
var ngApp = angular.module('ngApp', []);
ngApp.config(function($interpolateProvider) {
$interpolateProvider.startSymbol('{[{');
$interpolateProvider.endSymbol('}]}');
});
ngApp.controller('ngCtrl', ['$scope', function($scope) {
// Need to wrap with TRY in case not valid JSON
$scope.payload = JSON.parse(decodeEntities('{{payload}}'));
$scope.topic = '{{topic}}';
}]);
function decodeEntities(encodedString) {
var textArea = document.createElement('textarea');
textArea.innerHTML = encodedString;
return textArea.value;
}
</script>
</body>
</html>