diff --git a/assets/js/controllers/queue.controller.js b/assets/js/controllers/queue.controller.js index 0a078a7..06fd66e 100644 --- a/assets/js/controllers/queue.controller.js +++ b/assets/js/controllers/queue.controller.js @@ -1,5 +1,11 @@ -mpdClient.controller('queue', function ($rootScope, $scope, $resource) { +mpdClient.controller('queue', function ($rootScope, $scope, $resource, serverEvents) { var Queue = $resource('/api/queue') $rootScope.queueSongs = Queue.query() + + $scope.updateQueue = function(data) { + $rootScope.queueSongs = data + } + + serverEvents.onUpdateQueue($scope.updateQueue) }) diff --git a/assets/js/controllers/transport.controller.js b/assets/js/controllers/transport.controller.js index 9f43882..d3b337f 100644 --- a/assets/js/controllers/transport.controller.js +++ b/assets/js/controllers/transport.controller.js @@ -1,9 +1,7 @@ mpdClient.controller('transport', function ($rootScope, $scope, $http, serverEvents) { var Status = $http({ method: 'GET', url: '/api/status' }) - $rootScope.status = { time: [] } - - serverEvents.onUpdateStatus($scope.updateStatus) + $rootScope.status = {} Status.success(function (data, status, headers, config) { $scope.updateStatus(data) @@ -11,6 +9,12 @@ mpdClient.controller('transport', function ($rootScope, $scope, $http, serverEve $scope.updateStatus = function(data) { $rootScope.status = data + if (data.time) { $scope.updateTime(data.time) } + } + + $scope.updateTime = function(data) { + $rootScope.elapsedTime = data[0] + $rootScope.totalTime = data[1] } $scope.sendCommand = function (command) { @@ -20,4 +24,7 @@ mpdClient.controller('transport', function ($rootScope, $scope, $http, serverEve $scope.playing = function () { return $scope.status.state == 'play' } + + serverEvents.onUpdateStatus($scope.updateStatus) + serverEvents.onUpdateTime($scope.updateTime) }) diff --git a/assets/js/services/server-events.service.js b/assets/js/services/server-events.service.js index c2e76c1..db3e699 100644 --- a/assets/js/services/server-events.service.js +++ b/assets/js/services/server-events.service.js @@ -1,8 +1,15 @@ -mpdClient.factory('serverEvents', function () { +mpdClient.factory('serverEvents', function ($rootScope) { + var events = new EventSource('/api/stream'), serverEvents = { + onUpdateQueue: function (callback) { + this.updateQueueCallback = callback + }, onUpdateStatus: function (callback) { - this.onUpdateStatusCallback = callback + this.updateStatusCallback = callback + }, + onUpdateTime: function (callback) { + this.updateTimeCallback = callback } } @@ -10,13 +17,13 @@ mpdClient.factory('serverEvents', function () { response = JSON.parse(e.data); switch (response.type) { case 'status': - serverEvents.onUpdateStatusCallback(response.data) + $rootScope.$apply(function () { serverEvents.updateStatusCallback(response.data) }) break; case 'queue': - $scope.$emit('update:queue', response.data) + $rootScope.$apply(function () { serverEvents.updateQueueCallback(response.data) }) break; case 'time': - $scope.$emit('update:time', response.data); + $rootScope.$apply(function () { serverEvents.updateTimeCallback(response.data) }) break; } } diff --git a/views/index.erb b/views/index.erb index c3e35f9..044eee0 100644 --- a/views/index.erb +++ b/views/index.erb @@ -25,8 +25,8 @@