diff --git a/assets/js/controllers/transport.controller.js b/assets/js/controllers/transport.controller.js index c04b800..9f43882 100644 --- a/assets/js/controllers/transport.controller.js +++ b/assets/js/controllers/transport.controller.js @@ -1,12 +1,18 @@ -mpdClient.controller('transport', function ($rootScope, $scope, $http) { +mpdClient.controller('transport', function ($rootScope, $scope, $http, serverEvents) { var Status = $http({ method: 'GET', url: '/api/status' }) $rootScope.status = { time: [] } + serverEvents.onUpdateStatus($scope.updateStatus) + Status.success(function (data, status, headers, config) { - $rootScope.status = data + $scope.updateStatus(data) }) + $scope.updateStatus = function(data) { + $rootScope.status = data + } + $scope.sendCommand = function (command) { $http({ method: 'PUT', url: '/api/control/' + command }) } diff --git a/assets/js/mpd-client.js b/assets/js/mpd-client.js index d039901..35028f1 100644 --- a/assets/js/mpd-client.js +++ b/assets/js/mpd-client.js @@ -3,5 +3,6 @@ //= require ./libs/angular-resource //= require ./mpd-client.app +//= require_tree ./services/ //= require_tree ./filters/ //= require_tree ./controllers/ diff --git a/assets/js/services/eventsource.service.js b/assets/js/services/eventsource.service.js deleted file mode 100644 index 33714ba..0000000 --- a/assets/js/services/eventsource.service.js +++ /dev/null @@ -1,20 +0,0 @@ -angular.module('mpdClient.services') - - .factory('eventSource', function ($scope) { - $scope.events = new EventSource('/api/stream') - - $scope.events.onmessage = function(e) { - response = JSON.parse(e.data); - switch (response.type) { - case 'status': - $scope.$emit('update:status', response.data) - break; - case 'queue': - $scope.$emit('update:queue', response.data) - break; - case 'time': - $scope.$emit('update:time', response.data); - break; - } - } - }) diff --git a/assets/js/services/server-events.service.js b/assets/js/services/server-events.service.js new file mode 100644 index 0000000..c2e76c1 --- /dev/null +++ b/assets/js/services/server-events.service.js @@ -0,0 +1,25 @@ +mpdClient.factory('serverEvents', function () { + var events = new EventSource('/api/stream'), + serverEvents = { + onUpdateStatus: function (callback) { + this.onUpdateStatusCallback = callback + } + } + + events.onmessage = function(e) { + response = JSON.parse(e.data); + switch (response.type) { + case 'status': + serverEvents.onUpdateStatusCallback(response.data) + break; + case 'queue': + $scope.$emit('update:queue', response.data) + break; + case 'time': + $scope.$emit('update:time', response.data); + break; + } + } + + return serverEvents +})