diff --git a/app/assets/javascripts/darkswarm/controllers/products/product_node_controller.js.coffee b/app/assets/javascripts/darkswarm/controllers/products/product_node_controller.js.coffee index 73406e072b..08797080e8 100644 --- a/app/assets/javascripts/darkswarm/controllers/products/product_node_controller.js.coffee +++ b/app/assets/javascripts/darkswarm/controllers/products/product_node_controller.js.coffee @@ -1,11 +1,7 @@ -Darkswarm.controller "ProductNodeCtrl", ($scope) -> - - $scope.price = -> - if $scope.product.variants.length > 0 - prices = (v.price for v in $scope.product.variants) - Math.min.apply(null, prices) - else - $scope.product.price - +Darkswarm.controller "ProductNodeCtrl", ($scope, $modal) -> $scope.enterprise = $scope.product.supplier # For the modal, so it's consistent $scope.hasVariants = $scope.product.variants.length > 0 + + $scope.triggerProductModal = -> + $modal.open(templateUrl: "product_modal.html", scope: $scope) + diff --git a/app/assets/javascripts/darkswarm/directives/product_modal.js.coffee b/app/assets/javascripts/darkswarm/directives/product_modal.js.coffee deleted file mode 100644 index 428fde3633..0000000000 --- a/app/assets/javascripts/darkswarm/directives/product_modal.js.coffee +++ /dev/null @@ -1,9 +0,0 @@ -Darkswarm.directive "productModal", ($modal)-> - restrict: 'E' - replace: true - template: "" - transclude: true - link: (scope, elem, attrs, ctrl)-> - elem.on "click", => - scope.modalInstance = $modal.open(controller: ctrl, templateUrl: 'product_modal.html', scope: scope) - diff --git a/app/assets/javascripts/darkswarm/services/product.js.coffee b/app/assets/javascripts/darkswarm/services/product.js.coffee index e33a037a61..478647d2db 100644 --- a/app/assets/javascripts/darkswarm/services/product.js.coffee +++ b/app/assets/javascripts/darkswarm/services/product.js.coffee @@ -1,5 +1,5 @@ Darkswarm.factory 'Product', ($resource, Enterprises, Dereferencer, Taxons) -> - new class Product + new class Products constructor: -> @update() @@ -10,7 +10,8 @@ Darkswarm.factory 'Product', ($resource, Enterprises, Dereferencer, Taxons) -> update: => @loading = true - @products = $resource("/shop/products").query => + @products = $resource("/shop/products").query (products)=> + @extend() @dereference() @loading = false @ @@ -19,4 +20,9 @@ Darkswarm.factory 'Product', ($resource, Enterprises, Dereferencer, Taxons) -> for product in @products product.supplier = Enterprises.enterprises_by_id[product.supplier.id] Dereferencer.dereference product.taxons, Taxons.taxons_by_id - + + extend: -> + for product in @products + if product.variants.length > 0 + prices = (v.price for v in product.variants) + product.price = Math.min.apply(null, prices) diff --git a/app/views/shop/products/_form.html.haml b/app/views/shop/products/_form.html.haml index 940df58b29..fc43f05e9b 100644 --- a/app/views/shop/products/_form.html.haml +++ b/app/views/shop/products/_form.html.haml @@ -17,7 +17,7 @@ %div.pad-top{bindonce: true} %product.animate-repeat{"ng-controller" => "ProductNodeCtrl", - "ng-repeat" => "product in filteredProducts = (Product.products | products:query | taxons:activeTaxons | orderBy:ordering.order | limitTo:limit) track by product.id "} + "ng-repeat" => "product in filteredProducts = (Product.products | products:query | taxons:activeTaxons | orderBy:ordering.order) track by product.id "} %div = render partial: "shop/products/summary" %div{"bo-if" => "hasVariants"} diff --git a/app/views/shop/products/_summary.html.haml b/app/views/shop/products/_summary.html.haml index b21b535315..b1cd7b0e78 100644 --- a/app/views/shop/products/_summary.html.haml +++ b/app/views/shop/products/_summary.html.haml @@ -1,11 +1,10 @@ .row.summary .small-1.columns - %product-modal - %img{"bo-src" => "product.master.images[0].small_url"} + %img{"bo-src" => "product.master.images[0].small_url", "ng-click" => "triggerProductModal()"} .small-4.columns.summary-header %render-svg{path: "{{product.primary_taxon.icon}}"} - %product-modal {{ product.name }} + %a{"ng-click" => "triggerProductModal()"}{{ product.name }} .small-5.columns %i.ofn-i_036-producers @@ -14,4 +13,4 @@ .small-2.columns.summary-price.text-right.price %span{"ng-if" => "hasVariants"} %em from - {{ price() | currency }} + {{ product.price | currency }} diff --git a/app/views/shop/products/_variants.html.haml b/app/views/shop/products/_variants.html.haml index 5d6a59535e..2d281dafe8 100644 --- a/app/views/shop/products/_variants.html.haml +++ b/app/views/shop/products/_variants.html.haml @@ -1,5 +1,5 @@ .row.variants{bindonce: true, - "ng-repeat" => "variant in product.variants"} + "ng-repeat" => "variant in product.variants track by variant.id"} .small-1.columns %i.ofn-i_056-bulk{"bo-if" => "product.group_buy"}