raumstatus/public/js/app.js

87 lines
2.5 KiB
JavaScript

'use strict';
var gpower;
angular.module('roomstateapp.controllers', []).
controller('StatusCtrl', function ($scope, $http, Socket) {
$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");
});
Socket.on('sdata', function(message) {
console.log("received data from server: " + message.data.names);
$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
});
});