From 680b5c8a42f6ea4b1ca3618a1d883998df13b372 Mon Sep 17 00:00:00 2001 From: Rob H Date: Sat, 18 Jan 2014 11:13:32 +0800 Subject: [PATCH] Add supplier filter to BOM --- .../admin/bulk_order_management.js.coffee | 8 +++++- .../admin/orders/bulk_management.html.haml | 4 ++- .../admin/bulk_order_management_spec.rb | 28 +++++++++++++++++++ 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/admin/bulk_order_management.js.coffee b/app/assets/javascripts/admin/bulk_order_management.js.coffee index f8369a063f..7e61aee56e 100644 --- a/app/assets/javascripts/admin/bulk_order_management.js.coffee +++ b/app/assets/javascripts/admin/bulk_order_management.js.coffee @@ -53,4 +53,10 @@ orderManagementModule.controller "AdminOrderMgmtCtrl", [ if angular.equals(supplier, line_item.supplier) line_item.supplier = supplier break -] \ No newline at end of file +] + +orderManagementModule.filter "selectFilter", -> + return (lineItems,selectedSupplier) -> + filtered = [] + filtered.push line_item for line_item in lineItems when selectedSupplier == undefined || line_item.supplier == selectedSupplier + filtered \ No newline at end of file diff --git a/app/views/spree/admin/orders/bulk_management.html.haml b/app/views/spree/admin/orders/bulk_management.html.haml index 78beffb1b7..678c5c7a2e 100644 --- a/app/views/spree/admin/orders/bulk_management.html.haml +++ b/app/views/spree/admin/orders/bulk_management.html.haml @@ -6,6 +6,8 @@ %div{ 'ng-app' => 'ofn.bulk_order_management', 'ng-controller' => 'AdminOrderMgmtCtrl', 'ng-init' => "initialise('#{@spree_api_key}');" } %div{ 'ng-show' => '!spree_api_key_ok' } {{ api_error_msg }} + %div.selectors{ :class => "four columns alpha" } + %select.select2{ :class => "three columns alpha", :name => 'supplier_filter', 'ng-model' => 'supplierFilter', 'ng-options' => 'supplier.name for supplier in suppliers'} %table.index#listing_orders.bulk %thead @@ -17,7 +19,7 @@ %th.variant Product (Unit): Var %th.quantity Quantity %th.max Max - %tr.line_item{ 'ng-repeat' => 'line_item in lineItems', 'ng-class-even' => "'even'", 'ng-class-odd' => "'odd'" } + %tr.line_item{ 'ng-repeat' => 'line_item in lineItems | selectFilter:supplierFilter', 'ng-class-even' => "'even'", 'ng-class-odd' => "'odd'" } %td.id {{ line_item.id }} %td.email {{ line_item.order.email }} %td.date {{ line_item.order.completed_at }} diff --git a/spec/features/admin/bulk_order_management_spec.rb b/spec/features/admin/bulk_order_management_spec.rb index a180cbc74a..1e9cadf3d9 100644 --- a/spec/features/admin/bulk_order_management_spec.rb +++ b/spec/features/admin/bulk_order_management_spec.rb @@ -81,5 +81,33 @@ feature %q{ page.should have_selector "td.max", text: li2.max_quantity.to_s, :visible => true end end + + context "using page page controls" do + context "using drop down seletors" do + let!(:s1) { FactoryGirl.create(:supplier_enterprise) } + let!(:s2) { FactoryGirl.create(:supplier_enterprise) } + let!(:d1) { FactoryGirl.create(:distributor_enterprise) } + let!(:d2) { FactoryGirl.create(:distributor_enterprise) } + let!(:p1) { FactoryGirl.create(:product, supplier: s1 ) } + let!(:p2) { FactoryGirl.create(:product, supplier: s2 ) } + let!(:o1) { FactoryGirl.create(:order, state: 'complete', completed_at: Time.now ) } + let!(:o2) { FactoryGirl.create(:order, state: 'complete', completed_at: Time.now ) } + let!(:li1) { FactoryGirl.create(:line_item, order: o1, product: p1 ) } + let!(:li2) { FactoryGirl.create(:line_item, order: o2, product: p2 ) } + + before :each do + visit '/admin/orders/bulk_management' + end + + it "displays a select box for producers, which filters line items by the selected supplier" do + page.should have_select "supplier_filter", with_options: [s1.name,s2.name] + page.should have_selector "td.id", text: li1.id.to_s, visible: true + page.should have_selector "td.id", text: li2.id.to_s, visible: true + select s1.name, from: "supplier_filter" + page.should have_selector "td.id", text: li1.id.to_s, visible: true + page.should_not have_selector "td.id", text: li2.id.to_s, visible: true + end + end + end end end \ No newline at end of file