Extract DisplayProperties to a service

Conflicts:

	app/assets/javascripts/admin/bulk_product_update.js.coffee
This commit is contained in:
Rohan Mitchell
2014-09-10 16:42:20 +10:00
parent 356a03ac4e
commit 7e4d337773
5 changed files with 41 additions and 12 deletions

View File

@@ -1,4 +1,4 @@
angular.module("ofn.admin").controller "AdminProductEditCtrl", ($scope, $timeout, $http, BulkProducts, dataFetcher, DirtyProducts, VariantUnitManager, producers, Taxons, SpreeApiKey) ->
angular.module("ofn.admin").controller "AdminProductEditCtrl", ($scope, $timeout, $http, BulkProducts, DisplayProperties, dataFetcher, DirtyProducts, VariantUnitManager, producers, Taxons, SpreeApiKey) ->
$scope.loading = true
$scope.updateStatusMessage =
@@ -42,7 +42,7 @@ angular.module("ofn.admin").controller "AdminProductEditCtrl", ($scope, $timeout
$scope.limit = 15
$scope.productsWithUnsavedVariants = []
$scope.query = ""
$scope.displayProperties = {}
$scope.DisplayProperties = DisplayProperties
$scope.initialise = ->
authorise_api_reponse = ""
@@ -70,9 +70,6 @@ angular.module("ofn.admin").controller "AdminProductEditCtrl", ($scope, $timeout
$scope.resetProducts = ->
DirtyProducts.clear()
$scope.setMessage $scope.updateStatusMessage, "", {}, false
for product in $scope.products
$scope.displayProperties[product.id] ||= showVariants: false
# $scope.matchProducer = (product) ->
# for producer in $scope.producers
@@ -125,7 +122,7 @@ angular.module("ofn.admin").controller "AdminProductEditCtrl", ($scope, $timeout
on_hand: null
price: null
$scope.productsWithUnsavedVariants.push product
$scope.displayProperties[product.id].showVariants = true
DisplayProperties.setShowVariants product.id, true
$scope.nextVariantId = ->

View File

@@ -1,18 +1,19 @@
angular.module("ofn.admin").directive "ofnToggleVariants", ->
angular.module("ofn.admin").directive "ofnToggleVariants", (DisplayProperties) ->
link: (scope, element, attrs) ->
if scope.displayProperties[scope.product.id].showVariants
if DisplayProperties.showVariants scope.product.id
element.removeClass "icon-chevron-right"
element.addClass "icon-chevron-down"
else
element.removeClass "icon-chevron-down"
element.addClass "icon-chevron-right"
element.on "click", ->
scope.$apply ->
if scope.displayProperties[scope.product.id].showVariants
scope.displayProperties[scope.product.id].showVariants = false
if DisplayProperties.showVariants scope.product.id
DisplayProperties.setShowVariants scope.product.id, false
element.removeClass "icon-chevron-down"
element.addClass "icon-chevron-right"
else
scope.displayProperties[scope.product.id].showVariants = true
DisplayProperties.setShowVariants scope.product.id, true
element.removeClass "icon-chevron-right"
element.addClass "icon-chevron-down"

View File

@@ -0,0 +1,14 @@
angular.module("ofn.admin").factory "DisplayProperties", ->
new class DisplayProperties
displayProperties: {}
showVariants: (product_id) ->
@initProduct product_id
@displayProperties[product_id].showVariants
setShowVariants: (product_id, showVariants) ->
@initProduct product_id
@displayProperties[product_id].showVariants = showVariants
initProduct: (product_id) ->
@displayProperties[product_id] ||= {showVariants: false}

View File

@@ -1,4 +1,4 @@
%tr.variant{ :id => "v_{{variant.id}}", 'ng-repeat' => 'variant in product.variants', 'ng-show' => 'displayProperties[product.id].showVariants', 'ng-class-even' => "'even'", 'ng-class-odd' => "'odd'" }
%tr.variant{ :id => "v_{{variant.id}}", 'ng-repeat' => 'variant in product.variants', 'ng-show' => 'DisplayProperties.showVariants(product.id)', 'ng-class-even' => "'even'", 'ng-class-odd' => "'odd'" }
%td.left-actions
%a{ :class => "variant-item icon-caret-right", 'ng-hide' => "$last" }
%a{ :class => "add-variant icon-plus-sign", 'ng-click' => "addVariant(product)", 'ng-show' => "$last" }

View File

@@ -0,0 +1,17 @@
describe "DisplayProperties", ->
DisplayProperties = null
beforeEach ->
module "ofn.admin"
beforeEach inject (_DisplayProperties_) ->
DisplayProperties = _DisplayProperties_
it "defaults showVariants to false", ->
expect(DisplayProperties.showVariants(123)).toEqual false
it "sets the showVariants value", ->
DisplayProperties.setShowVariants(123, true)
expect(DisplayProperties.showVariants(123)).toEqual true
DisplayProperties.setShowVariants(123, false)
expect(DisplayProperties.showVariants(123)).toEqual false