diff --git a/app/assets/javascripts/admin/order_cycles/controllers/order_cycles_controller.js.coffee b/app/assets/javascripts/admin/order_cycles/controllers/order_cycles_controller.js.coffee index e1c2b994c2..75f379856d 100644 --- a/app/assets/javascripts/admin/order_cycles/controllers/order_cycles_controller.js.coffee +++ b/app/assets/javascripts/admin/order_cycles/controllers/order_cycles_controller.js.coffee @@ -4,6 +4,7 @@ angular.module("admin.orderCycles").controller "OrderCyclesCtrl", ($scope, $q, C $scope.saveAll = -> OrderCycles.saveChanges($scope.order_cycles_form) $scope.ordersCloseAtLimit = -31 # days $scope.involvingFilter = 0 + $scope.scheduleFilter = 0 compileData = -> for schedule in $scope.schedules diff --git a/app/assets/javascripts/admin/order_cycles/filters/schedule.js.coffee b/app/assets/javascripts/admin/order_cycles/filters/schedule.js.coffee new file mode 100644 index 0000000000..b4c9196605 --- /dev/null +++ b/app/assets/javascripts/admin/order_cycles/filters/schedule.js.coffee @@ -0,0 +1,6 @@ +angular.module("admin.orderCycles").filter "schedule", ($filter) -> + return (orderCycles, scheduleID) -> + return orderCycles if scheduleID == 0 + $filter('filter')(orderCycles, (orderCycle) -> + scheduleID in orderCycle.schedules.map (oc) -> oc.id + ) diff --git a/app/views/admin/order_cycles/_filters.html.haml b/app/views/admin/order_cycles/_filters.html.haml index 73d7cea600..b353e60a8c 100644 --- a/app/views/admin/order_cycles/_filters.html.haml +++ b/app/views/admin/order_cycles/_filters.html.haml @@ -7,7 +7,11 @@ %label{ :for => 'involving_filter' }=t('.involving') %br %input.ofn-select2.fullwidth{ :id => 'involving_filter', type: 'number', blank: "{id: 0, name: 'Any Enterprise'}", data: 'enterprises', ng: { model: 'involvingFilter' } } - .six.columns   + .filter_select.four.columns + %label{ :for => 'schedule_filter' }=t('admin.order_cycles.index.schedule') + %br + %input.ofn-select2.fullwidth{ :id => 'schedule_filter', type: 'number', blank: "{id: 0, name: 'Any Schedule'}", data: 'schedules', ng: { model: 'scheduleFilter' } } + .two.columns   .filter_clear.two.columns.omega %label{ :for => 'clear_all_filters' } %br diff --git a/app/views/admin/order_cycles/_row.html.haml b/app/views/admin/order_cycles/_row.html.haml index 81651bd88f..6dda586dda 100644 --- a/app/views/admin/order_cycles/_row.html.haml +++ b/app/views/admin/order_cycles/_row.html.haml @@ -1,4 +1,4 @@ -%tr{ class: "order-cycle-{{orderCycle.id}} {{orderCycle.status}}", ng: { repeat: 'orderCycle in orderCycles | involving:involvingFilter | filter:{name: query} track by orderCycle.id' } } +%tr{ class: "order-cycle-{{orderCycle.id}} {{orderCycle.status}}", ng: { repeat: 'orderCycle in orderCycles | schedule:scheduleFilter | involving:involvingFilter | filter:{name: query} track by orderCycle.id' } } %td.name{ ng: { show: 'columns.name.visible' } } %a{ ng: { href: '{{orderCycle.edit_path}}' } } {{ orderCycle.name }} diff --git a/config/locales/en.yml b/config/locales/en.yml index 9e7c265e71..310c504a12 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -676,6 +676,7 @@ en: debug_info: Debug information index: involving: Involving + schedule: Schedule schedules: Schedules adding_a_new_schedule: Adding A New Schedule updating_a_schedule: Updating A Schedule diff --git a/spec/features/admin/order_cycles_spec.rb b/spec/features/admin/order_cycles_spec.rb index a7def5705b..7893453699 100644 --- a/spec/features/admin/order_cycles_spec.rb +++ b/spec/features/admin/order_cycles_spec.rb @@ -23,6 +23,7 @@ feature %q{ orders_open_at: nil, orders_close_at: nil) oc7 = create(:simple_order_cycle, name: 'oc7', orders_open_at: 2.months.ago, orders_close_at: 5.weeks.ago) + schedule1 = create(:schedule, name: 'Schedule1', order_cycles: [oc1, oc3]) # When I go to the admin order cycles page login_to_admin_section @@ -64,7 +65,7 @@ feature %q{ click_button "Show 30 more days" page.should have_selector "#listing_order_cycles tr.order-cycle-#{oc7.id}" - # I can filter order cycles by name + # I can filter order cycle by involved enterprises page.should have_selector "#listing_order_cycles tr.order-cycle-#{oc0.id}" page.should have_selector "#listing_order_cycles tr.order-cycle-#{oc1.id}" page.should have_selector "#listing_order_cycles tr.order-cycle-#{oc2.id}" @@ -77,7 +78,7 @@ feature %q{ page.should have_selector "#listing_order_cycles tr.order-cycle-#{oc1.id}" page.should have_selector "#listing_order_cycles tr.order-cycle-#{oc2.id}" - # I can filter order cycle by involved enterprises + # I can filter order cycles by name page.should have_selector "#listing_order_cycles tr.order-cycle-#{oc0.id}" page.should have_selector "#listing_order_cycles tr.order-cycle-#{oc1.id}" page.should have_selector "#listing_order_cycles tr.order-cycle-#{oc2.id}" @@ -89,6 +90,22 @@ feature %q{ page.should have_selector "#listing_order_cycles tr.order-cycle-#{oc0.id}" page.should have_selector "#listing_order_cycles tr.order-cycle-#{oc1.id}" page.should have_selector "#listing_order_cycles tr.order-cycle-#{oc2.id}" + + # I can filter order cycle by schedule + page.should have_selector "#listing_order_cycles tr.order-cycle-#{oc0.id}" + page.should have_selector "#listing_order_cycles tr.order-cycle-#{oc1.id}" + page.should have_selector "#listing_order_cycles tr.order-cycle-#{oc2.id}" + page.should have_selector "#listing_order_cycles tr.order-cycle-#{oc3.id}" + select2_select schedule1.name, from: "schedule_filter" + page.should have_no_selector "#listing_order_cycles tr.order-cycle-#{oc0.id}" + page.should have_selector "#listing_order_cycles tr.order-cycle-#{oc1.id}" + page.should have_no_selector "#listing_order_cycles tr.order-cycle-#{oc2.id}" + page.should have_selector "#listing_order_cycles tr.order-cycle-#{oc3.id}" + select2_select 'Any Schedule', from: "schedule_filter" + page.should have_selector "#listing_order_cycles tr.order-cycle-#{oc0.id}" + page.should have_selector "#listing_order_cycles tr.order-cycle-#{oc1.id}" + page.should have_selector "#listing_order_cycles tr.order-cycle-#{oc2.id}" + page.should have_selector "#listing_order_cycles tr.order-cycle-#{oc3.id}" end describe 'listing order cycles with other locales' do