mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-03-01 02:03:22 +00:00
Submit variant overrides to server
This commit is contained in:
@@ -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!'
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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}
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user