'use strict'; var gpower; angular.module('roomstateapp.controllers', []). controller('StatusCtrl', function ($scope, $http, Socket) { // on page load request current data via simple API. $http({ method: 'GET', url: '/api/simple/v2' }). success(function (data, status, headers, config) { $scope.simple = data; gpower.refresh(data.power); }). error(function (data, status, headers, config) { //$scope.name = 'Error!' console.log("error getting data"); }); // while page is loaded, new data will arrive via Websocket. Socket.on('sdata', function(message) { console.log("received data from server: " + JSON.stringify(message.data)); $scope.simple = message.data; gpower.refresh(message.data.power); }); }); angular.module('roomstateapp.services', []). factory('Socket', function ($rootScope) { var socket = io.connect(); return { on: function(eventName, callback) { socket.on(eventName, function() { var args = arguments; $rootScope.$apply(function() { callback.apply(socket, args); }); }); }, emit: function(eventName, data, callback) { if(typeof data == 'function') { callback = data; data = {}; } socket.emit(eventName, data, function() { var args = arguments; $rootScope.$apply(function() { if(callback) { callback.apply(socket, args); } }); }); }, emitAndListen: function(eventName, data, callback) { this.emit(eventName, data, callback); this.on(eventName, callback); } }; }); angular.module('roomstateapp.statusfilter', []).filter('statustostring', function() { return function(input) { return input === true ? 'geƶffnet' : input === false ? 'geschlossen' : 'unbekannt'; }; }); angular.module('roomstateapp', ['roomstateapp.controllers', 'roomstateapp.services', 'roomstateapp.statusfilter']); $( document ).ready(function() { console.log( "ready!" ); gpower = new JustGage({ id: "gauge", value: 0, min: 0, max: 30000, title: " ", label: "Watt", showMinMax: false }); });