Merge pull request #6821 from cillian/admin-product-sorting-bug

Include sort direction parameter during bulk product update to prevent JS error causing 'Saving' text to hang
This commit is contained in:
Andy Brett
2021-02-11 10:54:24 -08:00
committed by GitHub
4 changed files with 26 additions and 6 deletions

View File

@@ -21,6 +21,7 @@ angular.module("ofn.admin").controller "AdminProductEditCtrl", ($scope, $timeout
sorting: ""
}
$scope.sorting = "name asc"
$scope.producers = producers
$scope.taxons = Taxons.all
$scope.tax_categories = tax_categories
@@ -48,7 +49,7 @@ angular.module("ofn.admin").controller "AdminProductEditCtrl", ($scope, $timeout
'q[name_cont]': $scope.q.query,
'q[supplier_id_eq]': $scope.q.producerFilter,
'q[primary_taxon_id_eq]': $scope.q.categoryFilter,
'q[s]': $scope.q.sorting,
'q[s]': $scope.sorting,
import_date: $scope.q.importDateFilter,
page: $scope.page,
per_page: $scope.per_page
@@ -104,7 +105,7 @@ angular.module("ofn.admin").controller "AdminProductEditCtrl", ($scope, $timeout
$scope.$watch 'sortOptions', (sort) ->
return unless sort && sort.predicate != ""
$scope.q.sorting = sort.getSortingExpr()
$scope.sorting = sort.getSortingExpr(defaultDirection: "asc")
$scope.fetchProducts()
, true
@@ -216,6 +217,7 @@ angular.module("ofn.admin").controller "AdminProductEditCtrl", ($scope, $timeout
'q[name_cont]': $scope.q.query
'q[supplier_id_eq]': $scope.q.producerFilter
'q[primary_taxon_id_eq]': $scope.q.categoryFilter
'q[s]': $scope.sorting
import_date: $scope.q.importDateFilter
page: $scope.page
per_page: $scope.per_page

View File

@@ -3,9 +3,11 @@ angular.module("admin.indexUtils").factory 'SortOptions', ->
predicate: ""
reverse: true
getSortingExpr: () ->
sortingExpr = this.predicate + ' desc' if this.reverse
sortingExpr = this.predicate + ' asc' if !this.reverse
getSortingExpr: (options) ->
defaultDirection = if (options && options.defaultDirection) then options.defaultDirection else "desc"
reverseDirection = if defaultDirection == "desc" then "asc" else "desc"
sortingExpr = this.predicate + ' ' + defaultDirection if this.reverse
sortingExpr = this.predicate + ' ' + reverseDirection if !this.reverse
sortingExpr
toggle: (predicate) ->

View File

@@ -368,7 +368,7 @@ describe "AdminProductEditCtrl", ->
$scope.sortOptions.toggle('name')
$scope.$apply()
expect($scope.q.sorting).toEqual 'name asc'
expect($scope.sorting).toEqual 'name desc'
expect($scope.fetchProducts).toHaveBeenCalled()
describe "updating the product on hand count", ->

View File

@@ -42,3 +42,19 @@ describe "SortOptions service", ->
SortOptions.toggle("column.b")
expect(SortOptions.predicate).toEqual "column.b"
expect(SortOptions.reverse).toBe false
describe "getting the sorting expression", ->
describe "when not specifying the default sort direction", ->
it "sets the direction to 'asc' after the first toggle because the default direction is 'desc'", ->
SortOptions.toggle("column.a")
expect(SortOptions.getSortingExpr()).toEqual "column.a asc"
describe "when specifying the default sorting direction as 'desc'", ->
it "sets the direction to 'asc' after the first toggle", ->
SortOptions.toggle("column.a")
expect(SortOptions.getSortingExpr(defaultDirection: "desc")).toEqual "column.a asc"
describe "when specifying the default sorting direction as 'asc'", ->
it "sets the direction to 'desc' after the first toggle", ->
SortOptions.toggle("column.a")
expect(SortOptions.getSortingExpr(defaultDirection: "asc")).toEqual "column.a desc"