mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-27 21:06:49 +00:00
Updating variant overrides stores dirty values
This commit is contained in:
@@ -30,5 +30,8 @@ angular.module("ofn.admin").controller "AdminOverrideVariantsCtrl", ($scope, Ind
|
||||
$scope.hub = (hub for hub in hubs when hub.id == $scope.hub_id)[0]
|
||||
|
||||
|
||||
$scope.displayDirty = ->
|
||||
|
||||
|
||||
$scope.update = ->
|
||||
StatusMessage.display 'success', 'Changes saved.'
|
||||
@@ -0,0 +1,9 @@
|
||||
angular.module("ofn.admin").directive "ofnTrackVariantOverride", (DirtyVariantOverrides) ->
|
||||
require: "ngModel"
|
||||
link: (scope, element, attrs, ngModel) ->
|
||||
ngModel.$parsers.push (viewValue) ->
|
||||
if ngModel.$dirty
|
||||
variantOverride = scope.variantOverrides[scope.hub.id][scope.variant.id]
|
||||
DirtyVariantOverrides.add variantOverride
|
||||
scope.displayDirty()
|
||||
viewValue
|
||||
@@ -0,0 +1,7 @@
|
||||
angular.module("ofn.admin").factory "DirtyVariantOverrides", ->
|
||||
new class DirtyVariantOverrides
|
||||
dirtyVariantOverrides: {}
|
||||
|
||||
add: (vo) ->
|
||||
@dirtyVariantOverrides[vo.hub_id] ||= {}
|
||||
@dirtyVariantOverrides[vo.hub_id][vo.variant_id] = vo
|
||||
@@ -2,7 +2,7 @@
|
||||
%td
|
||||
%td {{ variant.options_text }}
|
||||
%td
|
||||
%input{name: 'variant-overrides-{{ variant.id }}-price', type: 'text', ng: {model: 'variantOverrides[hub.id][variant.id].price'}, placeholder: '{{ variant.price }}'}
|
||||
%input{name: 'variant-overrides-{{ variant.id }}-price', type: 'text', ng: {model: 'variantOverrides[hub.id][variant.id].price'}, placeholder: '{{ variant.price }}', 'ofn-track-variant-override' => 'price'}
|
||||
|
||||
%td
|
||||
%input{name: 'variant-overrides-{{ variant.id }}-count-on-hand', type: 'text', ng: {model: 'variantOverrides[hub.id][variant.id].count_on_hand'}, placeholder: '{{ variant.on_hand }}'}
|
||||
%input{name: 'variant-overrides-{{ variant.id }}-count-on-hand', type: 'text', ng: {model: 'variantOverrides[hub.id][variant.id].count_on_hand'}, placeholder: '{{ variant.on_hand }}', 'ofn-track-variant-override' => 'price'}
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
describe "maintaining a list of dirty variant overrides", ->
|
||||
DirtyVariantOverrides = null
|
||||
variantOverride =
|
||||
variant_id: 1
|
||||
hub_id: 2
|
||||
price: 3
|
||||
count_on_hand: 4
|
||||
|
||||
beforeEach ->
|
||||
module "ofn.admin"
|
||||
|
||||
beforeEach inject (_DirtyVariantOverrides_) ->
|
||||
DirtyVariantOverrides = _DirtyVariantOverrides_
|
||||
|
||||
it "adds new dirty variant overrides", ->
|
||||
DirtyVariantOverrides.add variantOverride
|
||||
expect(DirtyVariantOverrides.dirtyVariantOverrides).toEqual
|
||||
2:
|
||||
1:
|
||||
variant_id: 1
|
||||
hub_id: 2
|
||||
price: 3
|
||||
count_on_hand: 4
|
||||
|
||||
it "updates existing dirty variant overrides", ->
|
||||
DirtyVariantOverrides.dirtyVariantOverrides =
|
||||
2:
|
||||
1:
|
||||
variant_id: 5
|
||||
hub_id: 6
|
||||
price: 7
|
||||
count_on_hand: 8
|
||||
DirtyVariantOverrides.add variantOverride
|
||||
expect(DirtyVariantOverrides.dirtyVariantOverrides).toEqual
|
||||
2:
|
||||
1:
|
||||
variant_id: 1
|
||||
hub_id: 2
|
||||
price: 3
|
||||
count_on_hand: 4
|
||||
Reference in New Issue
Block a user