mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-03-01 02:03:22 +00:00
Fix frontend sorting in "Bulk Order Management"
This commit is contained in:
committed by
Maikel Linke
parent
822b2c929a
commit
2bba72c5a9
@@ -10,6 +10,9 @@ angular.module("admin.lineItems").controller 'LineItemsCtrl', ($scope, $timeout,
|
||||
$scope.selectedUnitsVariant = {}
|
||||
$scope.sharedResource = false
|
||||
$scope.columns = Columns.columns
|
||||
$scope.sorting =
|
||||
predicate: ""
|
||||
reverse: true
|
||||
|
||||
$scope.confirmRefresh = ->
|
||||
LineItems.allSaved() || confirm(t("unsaved_changes_warning"))
|
||||
|
||||
@@ -118,31 +118,31 @@
|
||||
%th.bulk
|
||||
%input{ :type => "checkbox", :name => 'toggle_bulk', 'ng-click' => 'toggleAllCheckboxes()', 'ng-checked' => "allBoxesChecked()" }
|
||||
%th.order_no{ 'ng-show' => 'columns.order_no.visible' }
|
||||
%a{ :href => '', 'ng-click' => "predicate = 'order.number'; reverse = !reverse" }
|
||||
%a{ :href => '', 'ng-click' => "sorting.predicate = 'order.number'; sorting.reverse = !sorting.reverse" }
|
||||
= t("admin.orders.bulk_management.order_no")
|
||||
%th.full_name{ 'ng-show' => 'columns.full_name.visible' }
|
||||
%a{ :href => '', 'ng-click' => "predicate = 'order.full_name'; reverse = !reverse" }
|
||||
%a{ :href => '', 'ng-click' => "sorting.predicate = 'order.full_name'; sorting.reverse = !sorting.reverse" }
|
||||
= t("admin.name")
|
||||
%th.email{ 'ng-show' => 'columns.email.visible' }
|
||||
%a{ :href => '', 'ng-click' => "predicate = 'order.email'; reverse = !reverse" }
|
||||
%a{ :href => '', 'ng-click' => "sorting.predicate = 'order.email'; sorting.reverse = !sorting.reverse" }
|
||||
= t("admin.email")
|
||||
%th.phone{ 'ng-show' => 'columns.phone.visible' }
|
||||
%a{ :href => '', 'ng-click' => "predicate = 'order.phone'; reverse = !reverse" }
|
||||
%a{ :href => '', 'ng-click' => "sorting.predicate = 'order.phone'; sorting.reverse = !sorting.reverse" }
|
||||
= t("admin.phone")
|
||||
%th.date{ 'ng-show' => 'columns.order_date.visible' }
|
||||
%a{ :href => '', 'ng-click' => "predicate = 'order.completed_at'; reverse = !reverse" }
|
||||
%a{ :href => '', 'ng-click' => "sorting.predicate = 'order.completed_at'; sorting.reverse = !sorting.reverse" }
|
||||
= t("admin.orders.bulk_management.order_date")
|
||||
%th.producer{ 'ng-show' => 'columns.producer.visible' }
|
||||
%a{ :href => '', 'ng-click' => "predicate = 'supplier.name'; reverse = !reverse" }
|
||||
%a{ :href => '', 'ng-click' => "sorting.predicate = 'supplier.name'; sorting.reverse = !sorting.reverse" }
|
||||
= t("admin.producer")
|
||||
%th.order_cycle{ 'ng-show' => 'columns.order_cycle.visible' }
|
||||
%a{ :href => '', 'ng-click' => "predicate = 'order.order_cycle.name'; reverse = !reverse" }
|
||||
%a{ :href => '', 'ng-click' => "sorting.predicate = 'order.order_cycle.name'; sorting.reverse = !sorting.reverse" }
|
||||
= t("admin.order_cycle")
|
||||
%th.hub{ 'ng-show' => 'columns.hub.visible' }
|
||||
%a{ :href => '', 'ng-click' => "predicate = 'order.distributor.name'; reverse = !reverse" }
|
||||
%a{ :href => '', 'ng-click' => "sorting.predicate = 'order.distributor.name'; sorting.reverse = !sorting.reverse" }
|
||||
= t("admin.shop")
|
||||
%th.variant{ 'ng-show' => 'columns.variant.visible' }
|
||||
%a{ :href => '', 'ng-click' => "predicate = 'units_variant.full_name'; reverse = !reverse" }
|
||||
%a{ :href => '', 'ng-click' => "sorting.predicate = 'units_variant.full_name'; sorting.reverse = !sorting.reverse" }
|
||||
= t("admin.orders.bulk_management.product_unit")
|
||||
%th.quantity{ 'ng-show' => 'columns.quantity.visible' }
|
||||
= t("admin.quantity")
|
||||
@@ -157,7 +157,7 @@
|
||||
= t("admin.orders.bulk_management.ask")
|
||||
%input{ :type => 'checkbox', 'ng-model' => "confirmDelete" }
|
||||
|
||||
%tr.line_item{ 'ng-repeat' => "line_item in filteredLineItems = ( lineItems | filter:quickSearch | selectFilter:supplierFilter:distributorFilter:orderCycleFilter | variantFilter:selectedUnitsProduct:selectedUnitsVariant:sharedResource | orderBy:predicate:reverse )", 'ng-class-even' => "'even'", 'ng-class-odd' => "'odd'", :id => "li_{{line_item.id}}" }
|
||||
%tr.line_item{ 'ng-repeat' => "line_item in filteredLineItems = ( lineItems | filter:quickSearch | selectFilter:supplierFilter:distributorFilter:orderCycleFilter | variantFilter:selectedUnitsProduct:selectedUnitsVariant:sharedResource | orderBy:sorting.predicate:sorting.reverse )", 'ng-class-even' => "'even'", 'ng-class-odd' => "'odd'", :id => "li_{{line_item.id}}" }
|
||||
%td.bulk
|
||||
%input{ :type => "checkbox", :name => 'bulk', 'ng-model' => 'line_item.checked', 'ignore-dirty' => true }
|
||||
%td.order_no{ 'ng-show' => 'columns.order_no.visible' } {{ line_item.order.number }}
|
||||
|
||||
@@ -82,6 +82,40 @@ feature %q{
|
||||
expect(page).to have_selector "td.max", text: li2.max_quantity.to_s, :visible => true
|
||||
end
|
||||
end
|
||||
|
||||
describe "sorting of line items" do
|
||||
let!(:o1) { create(:order_with_distributor, state: 'complete', completed_at: Time.zone.now) }
|
||||
let!(:o2) { create(:order_with_distributor, state: 'complete', completed_at: Time.zone.now) }
|
||||
let!(:li1) { create(:line_item, order: o1) }
|
||||
let!(:li2) { create(:line_item, order: o2) }
|
||||
|
||||
before do
|
||||
visit spree.admin_bulk_order_management_path
|
||||
end
|
||||
|
||||
it "sorts by customer name when the customer name header is clicked" do
|
||||
customer_names = [o1.name, o2.name].sort
|
||||
|
||||
within "#listing_orders thead" do
|
||||
click_on "Name"
|
||||
end
|
||||
|
||||
expect(page).to have_selector("#listing_orders .line_item:nth-child(1) .full_name", text: customer_names[0])
|
||||
expect(page).to have_selector("#listing_orders .line_item:nth-child(2) .full_name", text: customer_names[1])
|
||||
end
|
||||
|
||||
it "sorts by customer name in reverse when the customer name header is clicked twice" do
|
||||
customer_names = [o1.name, o2.name].sort.reverse
|
||||
|
||||
within "#listing_orders thead" do
|
||||
click_on "Name"
|
||||
click_on "Name"
|
||||
end
|
||||
|
||||
expect(page).to have_selector("#listing_orders .line_item:nth-child(1) .full_name", text: customer_names[1])
|
||||
expect(page).to have_selector("#listing_orders .line_item:nth-child(2) .full_name", text: customer_names[0])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "altering line item properties" do
|
||||
|
||||
Reference in New Issue
Block a user