Submit variant overrides to server

This commit is contained in:
Rohan Mitchell
2014-12-10 11:14:21 +11:00
parent d67e614947
commit 47592cdbd8
3 changed files with 67 additions and 23 deletions

View File

@@ -1,4 +1,4 @@
angular.module("ofn.admin").controller "AdminOverrideVariantsCtrl", ($scope, Indexer, SpreeApiAuth, PagedFetcher, StatusMessage, hubs, producers, hubPermissions, VariantOverrides, DirtyVariantOverrides) ->
angular.module("ofn.admin").controller "AdminOverrideVariantsCtrl", ($scope, $timeout, Indexer, SpreeApiAuth, PagedFetcher, StatusMessage, hubs, producers, hubPermissions, VariantOverrides, DirtyVariantOverrides) ->
$scope.hubs = hubs
$scope.hub = null
$scope.products = []
@@ -39,4 +39,14 @@ angular.module("ofn.admin").controller "AdminOverrideVariantsCtrl", ($scope, Ind
$scope.update = ->
StatusMessage.display 'success', 'Changes saved.'
if DirtyVariantOverrides.count() == 0
StatusMessage.display 'alert', 'No changes to save.'
else
StatusMessage.display 'progress', 'Saving...'
DirtyVariantOverrides.save
success: (data) ->
DirtyVariantOverrides.clear()
#VariantOverrides.update data.variant_overrides
$timeout -> StatusMessage.display 'success', 'Changes saved.'
error: (data, status) ->
$timeout -> StatusMessage.display 'failure', 'Oh no!'

View File

@@ -1,4 +1,4 @@
angular.module("ofn.admin").factory "DirtyVariantOverrides", ->
angular.module("ofn.admin").factory "DirtyVariantOverrides", ($http) ->
new class DirtyVariantOverrides
dirtyVariantOverrides: {}
@@ -11,3 +11,23 @@ angular.module("ofn.admin").factory "DirtyVariantOverrides", ->
for hub_id, vos of @dirtyVariantOverrides
count += Object.keys(vos).length
count
clear: ->
@dirtyVariantOverrides = {}
all: ->
all_vos = []
for hub_id, vos of @dirtyVariantOverrides
all_vos.push vo for variant_id, vo of vos
all_vos
save: (callbacks={}) ->
$http
method: "POST"
url: "/admin/products/override_variants"
data:
variant_overrides: @all()
.success (data) ->
(callbacks.success || Angular.noop) data
.error (data, status) ->
(callbacks.error || Angular.noop) data, status

View File

@@ -39,23 +39,37 @@ describe "maintaining a list of dirty variant overrides", ->
price: 3
count_on_hand: 4
it "counts dirty variant overrides", ->
DirtyVariantOverrides.dirtyVariantOverrides =
2:
1:
variant_id: 5
hub_id: 6
price: 7
count_on_hand: 8
3:
variant_id: 9
hub_id: 10
price: 11
count_on_hand: 12
4:
5:
variant_id: 13
hub_id: 14
price: 15
count_on_hand: 16
expect(DirtyVariantOverrides.count()).toEqual 3
describe "with a number of variant overrides", ->
beforeEach ->
DirtyVariantOverrides.dirtyVariantOverrides =
2:
1:
variant_id: 5
hub_id: 6
price: 7
count_on_hand: 8
3:
variant_id: 9
hub_id: 10
price: 11
count_on_hand: 12
4:
5:
variant_id: 13
hub_id: 14
price: 15
count_on_hand: 16
it "counts dirty variant overrides", ->
expect(DirtyVariantOverrides.count()).toEqual 3
it "clears dirty variant overrides", ->
DirtyVariantOverrides.clear()
expect(DirtyVariantOverrides.dirtyVariantOverrides).toEqual {}
it "returns a flattened list of overrides", ->
expect(DirtyVariantOverrides.all()).toEqual [
{variant_id: 5, hub_id: 6, price: 7, count_on_hand: 8}
{variant_id: 9, hub_id: 10, price: 11, count_on_hand: 12}
{variant_id: 13, hub_id: 14, price: 15, count_on_hand: 16}
]