var lunchControllers; lunchControllers = angular.module('lunchControllers'); lunchControllers.controller('RunCtrl', [ '$scope', 'socket', '$routeParams', function($scope, socket, $routeParams) { $scope.show = false; $scope.progress = 0; $scope.numOrders = 0; $scope.progressClass = 'progress-bar-danger'; socket.get('/run/' + $routeParams['id'], function(response) { $scope.show = true; $scope.run = response; $scope.numOrders = $scope.run.invitees.length; $scope.setStatusClasses(); $scope.setProgress(); return $scope.$apply(); }); socket.on('message', function(m) { if (m.verb === 'update' && m.id === $routeParams.id) { $scope.run = m.data; $scope.setProgress(); $scope.setStatusClasses(); return $scope.$apply(); } }); $scope.setStatusClasses = function() { var i, _i, _len, _ref, _results; _ref = $scope.run.invitees; _results = []; for (_i = 0, _len = _ref.length; _i < _len; _i++) { i = _ref[_i]; if (i.order) { _results.push(i.statusClass = 'done'); } else { _results.push(i.statusClass = 'incomplete'); } } return _results; }; return $scope.setProgress = function() { var numFilledOrders; numFilledOrders = _.filter($scope.run.invitees, function(i) { return i.order; }).length; $scope.progress = (numFilledOrders / $scope.numOrders) * 100; if ($scope.progress >= 100) { return $scope.progressClass = 'progress-bar-success'; } else { return $scope.progressClass = 'progress-bar-danger'; } }; } ]);