From 59c433881ee1fa9bc26220f42ec09e135530c87d Mon Sep 17 00:00:00 2001 From: Will Marshall Date: Tue, 3 Jun 2014 13:06:27 +1000 Subject: [PATCH] Making the auto-closing more granular on checkout --- .../controllers/checkout/accordion_controller.js.coffee | 8 ++++---- .../controllers/checkout/billing_controller.js.coffee | 3 ++- .../controllers/checkout/details_controller.js.coffee | 5 +++-- .../controllers/checkout/payment_controller.js.coffee | 3 ++- .../controllers/checkout/shipping_controller.js.coffee | 3 ++- .../javascripts/darkswarm/mixins/fieldset_mixin.js.coffee | 8 ++++++-- .../checkout/accordion_controller_spec.js.coffee | 8 -------- 7 files changed, 19 insertions(+), 19 deletions(-) diff --git a/app/assets/javascripts/darkswarm/controllers/checkout/accordion_controller.js.coffee b/app/assets/javascripts/darkswarm/controllers/checkout/accordion_controller.js.coffee index 38f41c6f6b..a0ba6f4e29 100644 --- a/app/assets/javascripts/darkswarm/controllers/checkout/accordion_controller.js.coffee +++ b/app/assets/javascripts/darkswarm/controllers/checkout/accordion_controller.js.coffee @@ -9,8 +9,8 @@ Darkswarm.controller "AccordionCtrl", ($scope, storage, $timeout) -> $scope.show = (name)-> $scope.accordion[name] = true - $timeout => - if $scope.checkout.$valid - for k, v of $scope.accordion - $scope.accordion[k] = false + #$timeout => + #if $scope.checkout.$valid + #for k, v of $scope.accordion + #$scope.accordion[k] = false diff --git a/app/assets/javascripts/darkswarm/controllers/checkout/billing_controller.js.coffee b/app/assets/javascripts/darkswarm/controllers/checkout/billing_controller.js.coffee index 4dc4d8f88c..dcc397396c 100644 --- a/app/assets/javascripts/darkswarm/controllers/checkout/billing_controller.js.coffee +++ b/app/assets/javascripts/darkswarm/controllers/checkout/billing_controller.js.coffee @@ -1,4 +1,4 @@ -Darkswarm.controller "BillingCtrl", ($scope) -> +Darkswarm.controller "BillingCtrl", ($scope, $timeout) -> angular.extend(this, new FieldsetMixin($scope)) $scope.name = "billing" $scope.nextPanel = "shipping" @@ -8,3 +8,4 @@ Darkswarm.controller "BillingCtrl", ($scope) -> $scope.order.bill_address.city, $scope.order.bill_address.zipcode] + #$timeout $scope.onTimeout diff --git a/app/assets/javascripts/darkswarm/controllers/checkout/details_controller.js.coffee b/app/assets/javascripts/darkswarm/controllers/checkout/details_controller.js.coffee index 8153c24f92..e0fef8e343 100644 --- a/app/assets/javascripts/darkswarm/controllers/checkout/details_controller.js.coffee +++ b/app/assets/javascripts/darkswarm/controllers/checkout/details_controller.js.coffee @@ -1,6 +1,5 @@ -Darkswarm.controller "DetailsCtrl", ($scope) -> +Darkswarm.controller "DetailsCtrl", ($scope, $timeout) -> angular.extend(this, new FieldsetMixin($scope)) - $scope.name = "details" $scope.nextPanel = "billing" @@ -12,3 +11,5 @@ Darkswarm.controller "DetailsCtrl", ($scope) -> $scope.fullName = -> [$scope.order.bill_address.firstname ? null, $scope.order.bill_address.lastname ? null].join(" ").trim() + + $timeout $scope.onTimeout diff --git a/app/assets/javascripts/darkswarm/controllers/checkout/payment_controller.js.coffee b/app/assets/javascripts/darkswarm/controllers/checkout/payment_controller.js.coffee index adbe9bb8d6..33a06e5d1f 100644 --- a/app/assets/javascripts/darkswarm/controllers/checkout/payment_controller.js.coffee +++ b/app/assets/javascripts/darkswarm/controllers/checkout/payment_controller.js.coffee @@ -1,4 +1,4 @@ -Darkswarm.controller "PaymentCtrl", ($scope) -> +Darkswarm.controller "PaymentCtrl", ($scope, $timeout) -> angular.extend(this, new FieldsetMixin($scope)) $scope.name = "payment" @@ -6,3 +6,4 @@ Darkswarm.controller "PaymentCtrl", ($scope) -> $scope.years = [moment().year()..(moment().year()+15)] $scope.secrets.card_month = "1" $scope.secrets.card_year = moment().year() + $timeout $scope.onTimeout diff --git a/app/assets/javascripts/darkswarm/controllers/checkout/shipping_controller.js.coffee b/app/assets/javascripts/darkswarm/controllers/checkout/shipping_controller.js.coffee index a6a38329b4..1d0280842d 100644 --- a/app/assets/javascripts/darkswarm/controllers/checkout/shipping_controller.js.coffee +++ b/app/assets/javascripts/darkswarm/controllers/checkout/shipping_controller.js.coffee @@ -1,5 +1,6 @@ -Darkswarm.controller "ShippingCtrl", ($scope) -> +Darkswarm.controller "ShippingCtrl", ($scope, $timeout) -> angular.extend(this, new FieldsetMixin($scope)) $scope.name = "shipping" $scope.nextPanel = "payment" + $timeout $scope.onTimeout diff --git a/app/assets/javascripts/darkswarm/mixins/fieldset_mixin.js.coffee b/app/assets/javascripts/darkswarm/mixins/fieldset_mixin.js.coffee index ff01db5483..26b7ac3518 100644 --- a/app/assets/javascripts/darkswarm/mixins/fieldset_mixin.js.coffee +++ b/app/assets/javascripts/darkswarm/mixins/fieldset_mixin.js.coffee @@ -1,8 +1,12 @@ window.FieldsetMixin = ($scope)-> - $scope.next = (event)-> - event.preventDefault() + $scope.next = (event = false)-> + event.preventDefault() if event $scope.show $scope.nextPanel + $scope.onTimeout = -> + if $scope[$scope.name].$valid + $scope.next() + $scope.valid = -> $scope.form().$valid diff --git a/spec/javascripts/unit/darkswarm/controllers/checkout/accordion_controller_spec.js.coffee b/spec/javascripts/unit/darkswarm/controllers/checkout/accordion_controller_spec.js.coffee index d35fb93e86..8e59248806 100644 --- a/spec/javascripts/unit/darkswarm/controllers/checkout/accordion_controller_spec.js.coffee +++ b/spec/javascripts/unit/darkswarm/controllers/checkout/accordion_controller_spec.js.coffee @@ -30,11 +30,3 @@ describe "AccordionCtrl", -> scope.order = id: 129 ctrl = $controller 'AccordionCtrl', {$scope: scope} - - it "automatically closes all sections if the entire form is valid", -> - waitsFor -> - (scope.accordion.details and - scope.accordion.shipping and - scope.accordion.payment and - scope.accordion.billing) == false - , "the accordion to close", 100