raumstatus/public/js/app.js

89 lines
2.6 KiB
JavaScript
Raw Permalink Normal View History

2013-10-20 22:04:58 +00:00
'use strict';
var gpower;
2013-10-21 11:39:52 +00:00
angular.module('roomstateapp.controllers', []).
controller('StatusCtrl', function ($scope, $http, Socket) {
// on page load request current data via simple API.
2013-10-21 11:39:52 +00:00
$http({
method: 'GET',
url: '/api/simple/v2'
}).
success(function (data, status, headers, config) {
$scope.simple = data;
gpower.refresh(data.power);
2013-10-21 11:39:52 +00:00
}).
error(function (data, status, headers, config) {
//$scope.name = 'Error!'
console.log("error getting data");
});
// while page is loaded, new data will arrive via Websocket.
2013-10-21 11:39:52 +00:00
Socket.on('sdata', function(message) {
console.log("received data from server: " + JSON.stringify(message.data));
$scope.simple = message.data;
gpower.refresh(message.data.power);
2013-10-21 11:39:52 +00:00
});
});
angular.module('roomstateapp.services', []).
2013-10-20 22:04:58 +00:00
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);
}
};
});
2013-10-21 11:39:52 +00:00
angular.module('roomstateapp.statusfilter', []).filter('statustostring', function() {
return function(input) {
return input === true ? 'geöffnet' : input === false ? 'geschlossen' : 'unbekannt';
2013-10-21 11:39:52 +00:00
};
});
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
});
});