Add save bar to bulk editing product page

This commit is contained in:
Bing Xie
2016-05-25 14:36:37 +10:00
parent 33fd88507d
commit 860a537f30
6 changed files with 15 additions and 11 deletions

View File

@@ -247,6 +247,7 @@ angular.module("ofn.admin").controller "AdminProductEditCtrl", ($scope, $timeout
$scope.displaySuccess = ->
StatusMessage.display 'success',t("products_changes_saved")
$scope.bulk_product_form.$setPristine()
$scope.displayFailure = (failMessage) ->

View File

@@ -1,7 +1,7 @@
-# Not all inputs are ng inputs, they don't make the ng-form dirty on change.
-# ng-change is only valid for inputs, not for a form.
-# So we use onchange and have to get the scope to access the ng controller
= form_for [main_app, :admin, @enterprise], html: { id: "enterprise_form", name: "enterprise_form",
= form_for [main_app, :admin, @enterprise], html: { name: "enterprise_form",
"ng-app" => 'admin.enterprises',
"ng-controller" => 'enterpriseCtrl',
'onchange' => 'angular.element(enterprise_form).scope().setFormDirty()',

View File

@@ -8,4 +8,3 @@
= render 'spree/admin/products/bulk_edit/actions'
= render 'spree/admin/products/bulk_edit/indicators'
= render 'spree/admin/products/bulk_edit/products'
= render 'spree/admin/products/bulk_edit/save_button_row'

View File

@@ -1,6 +1,3 @@
.controls.sixteen.columns.alpha{ 'ng-hide' => 'loading || products.length == 0' }
.four.columns.alpha
%input.four.columns.alpha{ :type => 'button', :value => 'Save Changes', 'ng-click' => 'submitProducts()'}
.nine.columns
= render 'spree/admin/shared/status_message'
.thirteen.columns
%columns-dropdown{ action: "#{controller_name}_#{action_name}" }

View File

@@ -1,9 +1,12 @@
%div.sixteen.columns.alpha{ 'ng-hide' => 'loading || filteredProducts.length == 0' }
%table.index#listing_products.bulk{ "infinite-scroll" => "incrementLimit()", "infinite-scroll-distance" => "1" }
%form{ name: 'bulk_product_form' }
%save-bar{ form: "bulk_product_form", buttons: "[{ text: 'Save Changes', action: submitProducts, class: 'red' }]" }
= render 'spree/admin/products/bulk_edit/products_head'
%table.index#listing_products.bulk{ "infinite-scroll" => "incrementLimit()", "infinite-scroll-distance" => "1" }
%tbody{ 'ng-repeat' => 'product in filteredProducts = ( products | filter:query | producer: producerFilter | category: categoryFilter | limitTo:limit )', 'ng-class-even' => "'even'", 'ng-class-odd' => "'odd'" }
= render 'spree/admin/products/bulk_edit/products_head'
= render 'spree/admin/products/bulk_edit/products_product'
= render 'spree/admin/products/bulk_edit/products_variant'
%tbody{ 'ng-repeat' => 'product in filteredProducts = ( products | filter:query | producer: producerFilter | category: categoryFilter | limitTo:limit )', 'ng-class-even' => "'even'", 'ng-class-odd' => "'odd'" }
= render 'spree/admin/products/bulk_edit/products_product'
= render 'spree/admin/products/bulk_edit/products_variant'

View File

@@ -668,6 +668,9 @@ describe "AdminProductEditCtrl", ->
spyOn $scope, "displaySuccess"
spyOn BulkProducts, "updateVariantLists"
spyOn DirtyProducts, "clear"
$scope.bulk_product_form = jasmine.createSpyObj('bulk_product_form', ['$setPristine'])
$scope.products = [
{
id: 1
@@ -692,6 +695,7 @@ describe "AdminProductEditCtrl", ->
$httpBackend.flush()
$timeout.flush()
expect($scope.displaySuccess).toHaveBeenCalled()
expect($scope.bulk_product_form.$setPristine).toHaveBeenCalled
expect(DirtyProducts.clear).toHaveBeenCalled()
expect(BulkProducts.updateVariantLists).toHaveBeenCalled()