From 65a3d36cd2fe97e216a89b06bc9f757a348e6160 Mon Sep 17 00:00:00 2001 From: Ben Ramey Date: Tue, 24 Jun 2014 22:49:02 -0500 Subject: [PATCH] Edit run functionality --- api/models/Invitee.js | 3 ++ assets/linker/js/app.coffee | 3 +- .../controllers/create-run-controller.coffee | 1 + .../js/controllers/edit-run-controller.coffee | 48 ++++++++----------- assets/linker/js/lunchFilters.coffee | 5 ++ assets/linker/templates/run/_form.jade | 2 +- assets/linker/templates/run/edit.jade | 6 +-- views/layout.jade | 1 + 8 files changed, 35 insertions(+), 34 deletions(-) create mode 100644 assets/linker/js/lunchFilters.coffee diff --git a/api/models/Invitee.js b/api/models/Invitee.js index d8b2ace..05d829a 100644 --- a/api/models/Invitee.js +++ b/api/models/Invitee.js @@ -20,6 +20,9 @@ module.exports = { order: { type: 'string' }, + isCreator: { + type: 'boolean' + }, run_id: { type: 'string' } diff --git a/assets/linker/js/app.coffee b/assets/linker/js/app.coffee index c14ba51..79cc2b4 100644 --- a/assets/linker/js/app.coffee +++ b/assets/linker/js/app.coffee @@ -1,7 +1,8 @@ lunchApp = angular.module 'lunchApp', [ 'ngRoute', 'lunchControllers', - 'lunchServices' + 'lunchServices', + 'lunchFilters' ] lunchApp.config ['$routeProvider', diff --git a/assets/linker/js/controllers/create-run-controller.coffee b/assets/linker/js/controllers/create-run-controller.coffee index df1f8bb..f5e3d40 100644 --- a/assets/linker/js/controllers/create-run-controller.coffee +++ b/assets/linker/js/controllers/create-run-controller.coffee @@ -17,6 +17,7 @@ lunchControllers.controller 'CreateRunCtrl', ['$scope', '$http', '$location', 's inviteeData.push name: runData.creatorName email: runData.creatorEmail + isCreator: true socket.post '/run', runData, (runResponse) -> inviteesCreated = 0 diff --git a/assets/linker/js/controllers/edit-run-controller.coffee b/assets/linker/js/controllers/edit-run-controller.coffee index 38c69e7..3d8282f 100644 --- a/assets/linker/js/controllers/edit-run-controller.coffee +++ b/assets/linker/js/controllers/edit-run-controller.coffee @@ -3,10 +3,6 @@ lunchControllers = angular.module 'lunchControllers' lunchControllers.controller 'EditRunCtrl', ['$scope', 'socket', '$routeParams', '$sce', EditRunController = ($scope, socket, $routeParams, $sce) -> $scope.show = false - $scope.progress = 0 - $scope.numOrders = 0 - $scope.progressClass = 'progress-bar-danger' - $scope.showMenuUrl = false socket.get '/run/' + $routeParams['id'], (response) -> @@ -16,36 +12,30 @@ lunchControllers.controller 'EditRunCtrl', ['$scope', 'socket', '$routeParams', $scope.show = true $scope.run = response - $scope.showMenuUrl = response.menuUrl - $scope.menuUrl = $sce.trustAsResourceUrl(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, id: m.data.id - _.extend invitee, m.data - $scope.setProgress() - $scope.setStatusClasses() - $scope.$apply() + $scope.addInvitee = () -> + $scope.invitees.push {} - $scope.setStatusClasses = () -> - for i in $scope.invitees - if i.order - i.statusClass = 'done' - else - i.statusClass = 'incomplete' + $scope.removeInvitee = (index) -> + $scope.invitees.splice index, 1 - $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' + $scope.update = (run,invitees) -> + runData = angular.copy run + inviteeData = angular.copy invitees + creatorInvitee = _.find inviteeData, (i) -> return i.isCreator + creatorInvitee.name = runData.creatorName + creatorInvitee.email = runData.creatorEmail + + socket.put '/run/update/' + runData.id, runData, (runResponse) -> + inviteesCreated = 0 + for i in inviteeData + socket.put '/invitee/update/' + i.id, i, (inviteeResponse) -> + inviteesCreated++ + if inviteesCreated is inviteeData.length + $location.path '/run/' + runResponse.id + $scope.$apply() ] diff --git a/assets/linker/js/lunchFilters.coffee b/assets/linker/js/lunchFilters.coffee new file mode 100644 index 0000000..428f087 --- /dev/null +++ b/assets/linker/js/lunchFilters.coffee @@ -0,0 +1,5 @@ +lunchFilters = angular.module 'lunchFilters', [] + +lunchFilters.filter 'notCreatorInvitees', () -> + return (invitees) -> + return _.filter invitees, (i) -> return not i.isCreator diff --git a/assets/linker/templates/run/_form.jade b/assets/linker/templates/run/_form.jade index 8fd40b1..bb837f8 100644 --- a/assets/linker/templates/run/_form.jade +++ b/assets/linker/templates/run/_form.jade @@ -48,7 +48,7 @@ .col-xs-12.col-lg-2.step-num span.glyphicon.glyphicon-list(title='Lunch Invitees') .col-xs-12.col-lg-10 - .invitee.clearfix(ng-repeat='i in invitees') + .invitee.clearfix(ng-repeat='i in invitees | notCreatorInvitees') ng-form(name='inviteeForm') .row .col-xs-10.name-wrapper diff --git a/assets/linker/templates/run/edit.jade b/assets/linker/templates/run/edit.jade index 0150423..41e64f9 100644 --- a/assets/linker/templates/run/edit.jade +++ b/assets/linker/templates/run/edit.jade @@ -5,9 +5,9 @@ block pagetitle | update your lunch run block interiorcontent - .create-run-form(ng-controller='CreateRunCtrl') - form.row(name='form',novalidate,role='form') + .create-run-form(ng-controller='EditRunCtrl') + form.row(name='form',novalidate,role='form',ng-show="show") include _form section.submit - button.btn.btn-lg.btn-success.btn-block(ng-click="create(run,invitees)",ng-disabled="form.$invalid") + button.btn.btn-lg.btn-success.btn-block(ng-click="update(run,invitees)",ng-disabled="form.$invalid") | Update diff --git a/views/layout.jade b/views/layout.jade index 2ccfa08..20a25de 100644 --- a/views/layout.jade +++ b/views/layout.jade @@ -34,6 +34,7 @@ html(lang="en",ng-app="lunchApp") script(type="text/javascript", src="/linker/js/controllers/home-controller.js") script(type="text/javascript", src="/linker/js/controllers/run-controller.js") script(type="text/javascript", src="/linker/js/controllers/update-order-controller.js") + script(type="text/javascript", src="/linker/js/lunchFilters.js") script(type="text/javascript", src="/linker/js/services/socket.js") script(type="text/javascript", src="/linker/js/uservoice.js") script(type="text/javascript", src="/linker/js/vendor/jquery.backstretch.min.js")