lunchControllers = angular.module 'lunchControllers' lunchControllers.controller 'RunCtrl', ['$scope', 'socket', '$routeParams', ($scope, socket, $routeParams) -> $scope.show = false $scope.progress = 0 $scope.numOrders = 0 $scope.progressClass = 'progress-bar-danger' $scope.showMenuUrl = false socket.get '/run/' + $routeParams['id'], (response) -> if response.status is 404 window.location = '/404' return $scope.show = true $scope.run = response $scope.showMenuUrl = response.menuUrl socket.get '/invitee', run_id: response.id, (inviteeResponse) -> $scope.invitees = inviteeResponse $scope.numOrders = $scope.invitees.length $scope.setStatusClasses() $scope.setProgress() $scope.$apply() socket.on 'message', (m) -> if m.verb is 'update' and m.data.run_id is $routeParams.id invitee = _.findWhere $scope.invitees, run_id: m.data.run_id _.extend invitee, m.data $scope.setProgress() $scope.setStatusClasses() $scope.$apply() $scope.setStatusClasses = () -> for i in $scope.invitees if i.order i.statusClass = 'done' else i.statusClass = 'incomplete' $scope.setProgress = () -> numFilledOrders = _.filter($scope.invitees, (i) -> i.order).length $scope.progress = (numFilledOrders / $scope.numOrders) * 100 if $scope.progress >= 100 $scope.progressClass = 'progress-bar-success' else $scope.progressClass = 'progress-bar-danger' ]