Updating variant overrides stores dirty values

This commit is contained in:
Rohan Mitchell
2014-12-10 10:21:58 +11:00
parent 7255520471
commit a1fc4dec43
5 changed files with 61 additions and 2 deletions

View File

@@ -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.'

View File

@@ -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

View File

@@ -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

View File

@@ -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'}

View File

@@ -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