Splitting out the accordion stuff for checkout

This commit is contained in:
Will Marshall
2014-05-08 16:07:56 +10:00
parent 6696b8e17b
commit 3b1fcca39b
10 changed files with 107 additions and 84 deletions

View File

@@ -0,0 +1,11 @@
Darkswarm.controller "AccordionCtrl", ($scope, storage) ->
$scope.accordion =
details: true
shipping: false
payment: false
billing: false
storage.bind $scope, "accordion", {storeName: "accordion_#{$scope.order.id}"}
$scope.show = (name)->
$scope.accordion[name] = true

View File

@@ -0,0 +1,16 @@
Darkswarm.controller "CheckoutCtrl", ($scope, storage, CheckoutFormState, Order, CurrentUser) ->
$scope.Order = Order
storage.bind $scope, "Order.order", {storeName: "order_#{Order.order.id}"}
$scope.order = Order.order # Ordering is important
if CurrentUser
$scope.enabled = true
else
$scope.enabled = false
$scope.purchase = (event)->
event.preventDefault()
$scope.Order.submit()
$scope.CheckoutFormState = CheckoutFormState
storage.bind $scope, "CheckoutFormState.ship_address_same_as_billing", { defaultValue: true}

View File

@@ -1,38 +0,0 @@
Darkswarm.controller "CheckoutCtrl", ($scope, Order, storage, CheckoutFormState, User) ->
# We put Order.order into the scope for convenience
# However, storage.bind replaces Order.order
# So we must put Order.order into the scope AFTER it's bound to localStorage
$scope.Order = Order
storage.bind $scope, "Order.order", {storeName: "order_#{Order.order.id}"}
$scope.order = Order.order
if User
$scope.accordion = {details: true}
else
$scope.accordion = {user: true}
$scope.show = (name)->
$scope.accordion[name] = true
storage.bind $scope, "accordion", {storeName: "accordion_#{$scope.order.id}"}
# If we are logged in, but the cached accordion panel is user, move to details
if User and $scope.accordion.user
$scope.accordion.user = false
$scope.accordion.details = true
# TODO MAKE THIS BETTER SOMEHOW
# if User
# show details
# else
# show user
#
# localStorage overrides above
#
# If localStorage set to user, but User exists
# Then default to details
$scope.CheckoutFormState = CheckoutFormState
storage.bind $scope, "CheckoutFormState.ship_address_same_as_billing", { defaultValue: true}
$scope.purchase = (event)->
event.preventDefault()
$scope.Order.submit()

View File

@@ -1,7 +1,6 @@
Darkswarm.factory 'User', (user)->
# This is for the current user
Darkswarm.factory 'CurrentUser', (user)-> # This is for the current user
if user and !$.isEmptyObject(user)
new class User
new class CurrentUser
constructor: ->
@[k] = v for k, v of user
else