From c62ce57e0f23790fc5c600c411edae8b09df9546 Mon Sep 17 00:00:00 2001 From: Rohan Mitchell Date: Wed, 10 Dec 2014 10:37:52 +1100 Subject: [PATCH] Display count of dirty variant overrides --- .../override_variants_controller.js.coffee | 7 ++++++- .../dirty_variant_overrides.js.coffee | 6 ++++++ .../dirty_variant_overrides_spec.js.coffee | 21 +++++++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/admin/controllers/override_variants_controller.js.coffee b/app/assets/javascripts/admin/controllers/override_variants_controller.js.coffee index c84a1e1541..383b42843f 100644 --- a/app/assets/javascripts/admin/controllers/override_variants_controller.js.coffee +++ b/app/assets/javascripts/admin/controllers/override_variants_controller.js.coffee @@ -1,4 +1,4 @@ -angular.module("ofn.admin").controller "AdminOverrideVariantsCtrl", ($scope, Indexer, SpreeApiAuth, PagedFetcher, StatusMessage, hubs, producers, hubPermissions, VariantOverrides) -> +angular.module("ofn.admin").controller "AdminOverrideVariantsCtrl", ($scope, Indexer, SpreeApiAuth, PagedFetcher, StatusMessage, hubs, producers, hubPermissions, VariantOverrides, DirtyVariantOverrides) -> $scope.hubs = hubs $scope.hub = null $scope.products = [] @@ -31,6 +31,11 @@ angular.module("ofn.admin").controller "AdminOverrideVariantsCtrl", ($scope, Ind $scope.displayDirty = -> + if DirtyVariantOverrides.count() > 0 + num = if DirtyVariantOverrides.count() == 1 then "one override" else "#{DirtyVariantOverrides.count()} overrides" + StatusMessage.display 'notice', "Changes to #{num} remain unsaved." + else + StatusMessage.clear() $scope.update = -> diff --git a/app/assets/javascripts/admin/services/dirty_variant_overrides.js.coffee b/app/assets/javascripts/admin/services/dirty_variant_overrides.js.coffee index 68a6a923b7..10964b4199 100644 --- a/app/assets/javascripts/admin/services/dirty_variant_overrides.js.coffee +++ b/app/assets/javascripts/admin/services/dirty_variant_overrides.js.coffee @@ -5,3 +5,9 @@ angular.module("ofn.admin").factory "DirtyVariantOverrides", -> add: (vo) -> @dirtyVariantOverrides[vo.hub_id] ||= {} @dirtyVariantOverrides[vo.hub_id][vo.variant_id] = vo + + count: -> + count = 0 + for hub_id, vos of @dirtyVariantOverrides + count += Object.keys(vos).length + count \ No newline at end of file diff --git a/spec/javascripts/unit/admin/services/dirty_variant_overrides_spec.js.coffee b/spec/javascripts/unit/admin/services/dirty_variant_overrides_spec.js.coffee index bae955fd20..bdd0afd9d6 100644 --- a/spec/javascripts/unit/admin/services/dirty_variant_overrides_spec.js.coffee +++ b/spec/javascripts/unit/admin/services/dirty_variant_overrides_spec.js.coffee @@ -38,3 +38,24 @@ describe "maintaining a list of dirty variant overrides", -> hub_id: 2 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