mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-03-01 02:03:22 +00:00
Extract DisplayProperties to a service
Conflicts: app/assets/javascripts/admin/bulk_product_update.js.coffee
This commit is contained in:
@@ -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 = ->
|
||||
|
||||
@@ -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"
|
||||
@@ -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}
|
||||
@@ -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" }
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user