From 1f569e4be12ab93408a3a03d1343db5dbe921386 Mon Sep 17 00:00:00 2001 From: Rob H Date: Sat, 22 Feb 2014 14:49:19 +1100 Subject: [PATCH] Add loading splash to BOM --- .../javascripts/admin/bulk_order_management.js.coffee | 2 ++ app/views/spree/admin/orders/bulk_management.html.haml | 10 ++++++---- spec/features/admin/bulk_order_management_spec.rb | 8 ++++++-- .../unit/bulk_order_management_spec.js.coffee | 8 ++++++++ 4 files changed, 22 insertions(+), 6 deletions(-) diff --git a/app/assets/javascripts/admin/bulk_order_management.js.coffee b/app/assets/javascripts/admin/bulk_order_management.js.coffee index 968e78f09a..666f179d32 100644 --- a/app/assets/javascripts/admin/bulk_order_management.js.coffee +++ b/app/assets/javascripts/admin/bulk_order_management.js.coffee @@ -98,8 +98,10 @@ orderManagementModule.controller "AdminOrderMgmtCtrl", [ api_error_msg = "You don't have an API key yet. An attempt was made to generate one, but you are currently not authorised, please contact your site administrator for access." $scope.fetchOrders = -> + $scope.loading = true dataFetcher("/api/orders?template=bulk_index&q[completed_at_not_null]=true&q[completed_at_gt]=#{$scope.startDate}&q[completed_at_lt]=#{$scope.endDate}").then (data) -> $scope.resetOrders data + $scope.loading = false $scope.resetOrders = (data) -> $scope.orders = data diff --git a/app/views/spree/admin/orders/bulk_management.html.haml b/app/views/spree/admin/orders/bulk_management.html.haml index b1ae78b36d..e62e28740b 100644 --- a/app/views/spree/admin/orders/bulk_management.html.haml +++ b/app/views/spree/admin/orders/bulk_management.html.haml @@ -3,7 +3,7 @@ = render :partial => 'spree/admin/shared/order_sub_menu' -%div{ 'ng-app' => 'ofn.bulk_order_management', 'ng-controller' => 'AdminOrderMgmtCtrl', 'ng-init' => "initialise('#{@spree_api_key}');" } +%div{ 'ng-app' => 'ofn.bulk_order_management', 'ng-controller' => 'AdminOrderMgmtCtrl', 'ng-init' => "initialise('#{@spree_api_key}');loading=true;" } %div{ 'ng-show' => '!spree_api_key_ok' } {{ api_error_msg }} .filter_selects{ :class => "four columns alpha" } @@ -29,9 +29,11 @@ .spacer{ :class => "seven columns alpha" }   %hr{ :class => "sixteen columns alpha", :style => "margin-bottom: 15px" } - %div{ :class => "sixteen columns alpha", 'ng-show' => 'lineItems.length == 0'} - %h4{ :style => 'color:red;' } No matching orders found. - %div{ 'ng-hide' => 'lineItems.length == 0' } + %div.loading{ :class => "sixteen columns alpha", 'ng-show' => 'loading' } + %h4 Loading Line Items... + %div{ :class => "sixteen columns alpha", 'ng-show' => '!loading && lineItems.length == 0'} + %h4{ :style => 'color:red;' } No matching line items found. + %div{ 'ng-hide' => 'loading || lineItems.length == 0' } %table.index#listing_orders.bulk %thead %tr diff --git a/spec/features/admin/bulk_order_management_spec.rb b/spec/features/admin/bulk_order_management_spec.rb index 92a8320b98..a6fc66a380 100644 --- a/spec/features/admin/bulk_order_management_spec.rb +++ b/spec/features/admin/bulk_order_management_spec.rb @@ -29,9 +29,9 @@ feature %q{ page.should have_selector "h1.page-title", text: "Bulk Order Management" end - it "displays a message when number of products is zero" do + it "displays a message when number of line items is zero" do visit '/admin/orders/bulk_management' - page.should have_text "No matching orders found." + page.should have_text "No matching line items found." end context "displaying the list of line items " do @@ -46,6 +46,10 @@ feature %q{ visit '/admin/orders/bulk_management' end + it "displays a 'loading' splash for line items" do + page.should have_selector "div.loading", :text => "Loading Line Items..." + end + it "displays a list of line items" do page.should have_selector "th.id", text: "ID", :visible => true page.should have_selector "td.id", text: li1.id.to_s diff --git a/spec/javascripts/unit/bulk_order_management_spec.js.coffee b/spec/javascripts/unit/bulk_order_management_spec.js.coffee index dea143db64..e55441e171 100644 --- a/spec/javascripts/unit/bulk_order_management_spec.js.coffee +++ b/spec/javascripts/unit/bulk_order_management_spec.js.coffee @@ -44,6 +44,14 @@ describe "AdminOrderMgmtCtrl", -> httpBackend.flush() expect(scope.resetOrders).toHaveBeenCalledWith "list of orders" + it "sets the loading property to true before fetching orders and unsets it when loading is complete", -> + spyOn scope, "resetOrders" + scope.fetchOrders() + expect(scope.loading).toEqual true + httpBackend.flush() + expect(scope.loading).toEqual false + + describe "resetting orders", -> beforeEach -> spyOn(scope, "matchDistributor").andReturn "nothing"