From 5f1360e2260ec216ad09d8fd7cbce3bda66fdb1e Mon Sep 17 00:00:00 2001 From: luisramos0 Date: Tue, 29 Oct 2019 15:47:09 +0000 Subject: [PATCH 01/19] Move incoming and outgoing parts of the (not simple) OC new and edit pages to separate routes and views to make this page a multi step page --- .../admin/order_cycles_controller.rb | 5 +++ app/views/admin/order_cycles/_form.html.haml | 45 ------------------- .../admin/order_cycles/incoming.html.haml | 33 ++++++++++++++ .../admin/order_cycles/outgoing.html.haml | 35 +++++++++++++++ config/routes/admin.rb | 2 + 5 files changed, 75 insertions(+), 45 deletions(-) create mode 100644 app/views/admin/order_cycles/incoming.html.haml create mode 100644 app/views/admin/order_cycles/outgoing.html.haml diff --git a/app/controllers/admin/order_cycles_controller.rb b/app/controllers/admin/order_cycles_controller.rb index b4ee2c3d63..23740b16ff 100644 --- a/app/controllers/admin/order_cycles_controller.rb +++ b/app/controllers/admin/order_cycles_controller.rb @@ -2,6 +2,7 @@ module Admin class OrderCyclesController < ResourceController include OrderCyclesHelper + prepend_before_filter :set_order_cycle_id, only: [:incoming, :outgoing] before_filter :load_data_for_index, only: :index before_filter :require_coordinator, only: :new before_filter :remove_protected_attrs, only: [:update] @@ -48,6 +49,10 @@ module Admin end end + def set_order_cycle_id + params[:id] = params[:order_cycle_id] + end + def update @order_cycle_form = OrderCycleForm.new(@order_cycle, params, spree_current_user) diff --git a/app/views/admin/order_cycles/_form.html.haml b/app/views/admin/order_cycles/_form.html.haml index 76d9c4c52f..4d4de2edb7 100644 --- a/app/views/admin/order_cycles/_form.html.haml +++ b/app/views/admin/order_cycles/_form.html.haml @@ -2,48 +2,3 @@ -if Enterprise.managed_by(spree_current_user).include? @order_cycle.coordinator = render 'coordinator_fees', f: f - -%h2= t('.incoming') -%table.exchanges - %thead - %tr - %th= t('.supplier') - %th - =t('.products') - = surround '(', ')' do - %a{href: '#', 'ng-click' => "OrderCycle.toggleAllProducts('incoming')"} - %span{'ng-show' => "OrderCycle.showProducts['incoming']"}= t(:collapse_all) - %span{'ng-hide' => "OrderCycle.showProducts['incoming']"}= t(:expand_all) - %th= t('.receival_details') - %th= t('.fees') - %th.actions - %tbody.panel-ctrl{ object: 'exchange', 'ng-repeat' => 'exchange in order_cycle.incoming_exchanges'} - = render 'exchange_form', f: f, type: 'supplier' - -- if Enterprise.managed_by(spree_current_user).include? @order_cycle.coordinator - = render 'add_exchange_form', f: f, type: 'supplier' - -%h2= t('.outgoing') -%table.exchanges - %thead - %tr - %th= t('.distributor') - %th - = t('.products') - = surround '(', ')' do - %a{href: '#', 'ng-click' => "OrderCycle.toggleAllProducts('outgoing')"} - %span{'ng-show' => "OrderCycle.showProducts['outgoing']"}= t(:collapse_all) - %span{'ng-hide' => "OrderCycle.showProducts['outgoing']"}= t(:expand_all) - %th{ ng: { if: 'enterprises[exchange.enterprise_id].managed || order_cycle.viewing_as_coordinator' } } - = t('.tags') - %th= t('.delivery_details') - %th= t('.fees') - %th.actions - %tbody.panel-ctrl{ object: 'exchange', 'ng-repeat' => 'exchange in order_cycle.outgoing_exchanges'} - = render 'exchange_form', f: f, type: 'distributor' - -- if Enterprise.managed_by(spree_current_user).include? @order_cycle.coordinator - = render 'add_exchange_form', f: f, type: 'distributor' - -.actions - %span{'ng-hide' => 'loaded()'}= t(:loading) diff --git a/app/views/admin/order_cycles/incoming.html.haml b/app/views/admin/order_cycles/incoming.html.haml new file mode 100644 index 0000000000..157f9c4449 --- /dev/null +++ b/app/views/admin/order_cycles/incoming.html.haml @@ -0,0 +1,33 @@ +%h1 + = t :edit_order_cycle + += admin_inject_order_cycle_instance += form_for [main_app, :admin, @order_cycle], :url => '', :html => {:class => 'ng order_cycle', 'ng-app' => 'admin.orderCycles', 'ng-controller' => 'AdminEditOrderCycleCtrl', name: 'order_cycle_form'} do |f| + + %save-bar{ dirty: "order_cycle_form.$dirty", persist: "true" } + %input.red{ type: "button", value: t(:update), ng: { click: "submit($event, null)", disabled: "!order_cycle_form.$dirty || order_cycle_form.$invalid" } } + %input.red{ type: "button", value: t('.update_and_close'), ng: { click: "submit($event, '#{main_app.admin_order_cycles_path}')", disabled: "!order_cycle_form.$dirty || order_cycle_form.$invalid" } } + %input{ type: "button", ng: { value: "order_cycle_form.$dirty ? '#{t(:cancel)}' : '#{t(:close)}'", click: "cancel('#{main_app.admin_order_cycles_path}')" } } + + %h2= t('.incoming') + %table.exchanges + %thead + %tr + %th= t('.supplier') + %th + = t('.products') + = surround '(', ')' do + %a{href: '#', 'ng-click' => "OrderCycle.toggleAllProducts('incoming')"} + %span{'ng-show' => "OrderCycle.showProducts['incoming']"}= t(:collapse_all) + %span{'ng-hide' => "OrderCycle.showProducts['incoming']"}= t(:expand_all) + %th= t('.receival_details') + %th= t('.fees') + %th.actions + %tbody.panel-ctrl{ object: 'exchange', 'ng-repeat' => 'exchange in order_cycle.incoming_exchanges'} + = render 'exchange_form', f: f, type: 'supplier' + + - if Enterprise.managed_by(spree_current_user).include? @order_cycle.coordinator + = render 'add_exchange_form', f: f, type: 'supplier' + + .actions + %span{'ng-hide' => 'loaded()'}= t(:loading) diff --git a/app/views/admin/order_cycles/outgoing.html.haml b/app/views/admin/order_cycles/outgoing.html.haml new file mode 100644 index 0000000000..29499e76b5 --- /dev/null +++ b/app/views/admin/order_cycles/outgoing.html.haml @@ -0,0 +1,35 @@ +%h1 + = t :edit_order_cycle + += admin_inject_order_cycle_instance += form_for [main_app, :admin, @order_cycle], :url => '', :html => {:class => 'ng order_cycle', 'ng-app' => 'admin.orderCycles', 'ng-controller' => 'AdminEditOrderCycleCtrl', name: 'order_cycle_form'} do |f| + + %save-bar{ dirty: "order_cycle_form.$dirty", persist: "true" } + %input.red{ type: "button", value: t(:update), ng: { click: "submit($event, null)", disabled: "!order_cycle_form.$dirty || order_cycle_form.$invalid" } } + %input.red{ type: "button", value: t('.update_and_close'), ng: { click: "submit($event, '#{main_app.admin_order_cycles_path}')", disabled: "!order_cycle_form.$dirty || order_cycle_form.$invalid" } } + %input{ type: "button", ng: { value: "order_cycle_form.$dirty ? '#{t(:cancel)}' : '#{t(:close)}'", click: "cancel('#{main_app.admin_order_cycles_path}')" } } + + %h2= t('.outgoing') + %table.exchanges + %thead + %tr + %th= t('.distributor') + %th + = t('.products') + = surround '(', ')' do + %a{href: '#', 'ng-click' => "OrderCycle.toggleAllProducts('outgoing')"} + %span{'ng-show' => "OrderCycle.showProducts['outgoing']"}= t(:collapse_all) + %span{'ng-hide' => "OrderCycle.showProducts['outgoing']"}= t(:expand_all) + %th{ ng: { if: 'enterprises[exchange.enterprise_id].managed || order_cycle.viewing_as_coordinator' } } + = t('.tags') + %th= t('.delivery_details') + %th= t('.fees') + %th.actions + %tbody.panel-ctrl{ object: 'exchange', 'ng-repeat' => 'exchange in order_cycle.outgoing_exchanges'} + = render 'exchange_form', f: f, type: 'distributor' + + - if Enterprise.managed_by(spree_current_user).include? @order_cycle.coordinator + = render 'add_exchange_form', f: f, type: 'distributor' + + .actions + %span{'ng-hide' => 'loaded()'}= t(:loading) diff --git a/config/routes/admin.rb b/config/routes/admin.rb index 5b21d0baa2..3456248e25 100644 --- a/config/routes/admin.rb +++ b/config/routes/admin.rb @@ -9,6 +9,8 @@ Openfoodnetwork::Application.routes.draw do resources :order_cycles do post :bulk_update, on: :collection, as: :bulk_update + get :incoming + get :outgoing member do get :clone From 683232dd101f0a9506394800f16c044b702b1e12 Mon Sep 17 00:00:00 2001 From: luisramos0 Date: Wed, 30 Oct 2019 12:31:53 +0000 Subject: [PATCH 02/19] Improve page titles and fix broken translation --- .../admin/order_cycles/_name_and_timing_form.html.haml | 3 +++ app/views/admin/order_cycles/edit.html.haml | 2 +- app/views/admin/order_cycles/incoming.html.haml | 6 ++++-- app/views/admin/order_cycles/outgoing.html.haml | 6 ++++-- config/locales/en.yml | 10 +++++++--- 5 files changed, 19 insertions(+), 8 deletions(-) diff --git a/app/views/admin/order_cycles/_name_and_timing_form.html.haml b/app/views/admin/order_cycles/_name_and_timing_form.html.haml index 0419dc619f..41796ab12b 100644 --- a/app/views/admin/order_cycles/_name_and_timing_form.html.haml +++ b/app/views/admin/order_cycles/_name_and_timing_form.html.haml @@ -1,3 +1,6 @@ +%fieldset.no-border-bottom + %legend{ align: 'center'}= t('spree.general_settings') + .row .alpha.two.columns = f.label :name, t('.name') diff --git a/app/views/admin/order_cycles/edit.html.haml b/app/views/admin/order_cycles/edit.html.haml index 9ae3f14792..c578936375 100644 --- a/app/views/admin/order_cycles/edit.html.haml +++ b/app/views/admin/order_cycles/edit.html.haml @@ -21,7 +21,7 @@ #advanced_settings{ hidden: true } = render partial: "/admin/order_cycles/advanced_settings" -%h1 +- content_for :page_title do = t :edit_order_cycle - ng_controller = order_cycles_simple_form ? 'AdminSimpleEditOrderCycleCtrl' : 'AdminEditOrderCycleCtrl' diff --git a/app/views/admin/order_cycles/incoming.html.haml b/app/views/admin/order_cycles/incoming.html.haml index 157f9c4449..fbbc5301a7 100644 --- a/app/views/admin/order_cycles/incoming.html.haml +++ b/app/views/admin/order_cycles/incoming.html.haml @@ -1,4 +1,4 @@ -%h1 +- content_for :page_title do = t :edit_order_cycle = admin_inject_order_cycle_instance @@ -9,7 +9,9 @@ %input.red{ type: "button", value: t('.update_and_close'), ng: { click: "submit($event, '#{main_app.admin_order_cycles_path}')", disabled: "!order_cycle_form.$dirty || order_cycle_form.$invalid" } } %input{ type: "button", ng: { value: "order_cycle_form.$dirty ? '#{t(:cancel)}' : '#{t(:close)}'", click: "cancel('#{main_app.admin_order_cycles_path}')" } } - %h2= t('.incoming') + %fieldset.no-border-bottom + %legend{ align: 'center'}= t('.incoming') + %table.exchanges %thead %tr diff --git a/app/views/admin/order_cycles/outgoing.html.haml b/app/views/admin/order_cycles/outgoing.html.haml index 29499e76b5..4d17dd53b7 100644 --- a/app/views/admin/order_cycles/outgoing.html.haml +++ b/app/views/admin/order_cycles/outgoing.html.haml @@ -1,4 +1,4 @@ -%h1 +- content_for :page_title do = t :edit_order_cycle = admin_inject_order_cycle_instance @@ -9,7 +9,9 @@ %input.red{ type: "button", value: t('.update_and_close'), ng: { click: "submit($event, '#{main_app.admin_order_cycles_path}')", disabled: "!order_cycle_form.$dirty || order_cycle_form.$invalid" } } %input{ type: "button", ng: { value: "order_cycle_form.$dirty ? '#{t(:cancel)}' : '#{t(:close)}'", click: "cancel('#{main_app.admin_order_cycles_path}')" } } - %h2= t('.outgoing') + %fieldset.no-border-bottom + %legend{ align: 'center'}= t('.outgoing') + %table.exchanges %thead %tr diff --git a/config/locales/en.yml b/config/locales/en.yml index d8ea785148..e4da7fc402 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -889,9 +889,13 @@ en: loading_order_cycles: LOADING ORDER CYCLES loading: LOADING... edit: - advanced_settings: Advanced Settings - update_and_close: Update and Close - choose_products_from: 'Choose Products From:' + advanced_settings: "Advanced Settings" + update_and_close: "Update and Close" + choose_products_from: "Choose Products From:" + incoming: + update_and_close: "Update and Close" + outgoing: + update_and_close: "Update and Close" exchange_form: pickup_time_tip: When orders from this OC will be ready for the customer pickup_instructions_placeholder: "Pick-up instructions" From 5ef751d409a5f3694b865bad29d4258c917156c9 Mon Sep 17 00:00:00 2001 From: luisramos0 Date: Thu, 31 Oct 2019 09:14:14 +0000 Subject: [PATCH 03/19] Add wizard to OC new and edit pages --- .../admin/order_cycles/controllers/edit.js.coffee | 2 ++ .../order_cycles/controllers/incoming_controller.js.coffee | 2 ++ .../order_cycles/controllers/outgoing_controller.js.coffee | 2 ++ app/views/admin/order_cycles/_form.html.haml | 5 +++++ app/views/admin/order_cycles/_name_and_timing_form.html.haml | 3 --- app/views/admin/order_cycles/_wizard_progress.html.haml | 3 +++ app/views/admin/order_cycles/incoming.html.haml | 3 +++ app/views/admin/order_cycles/outgoing.html.haml | 3 +++ config/locales/en.yml | 4 ++++ 9 files changed, 24 insertions(+), 3 deletions(-) create mode 100644 app/assets/javascripts/admin/order_cycles/controllers/incoming_controller.js.coffee create mode 100644 app/assets/javascripts/admin/order_cycles/controllers/outgoing_controller.js.coffee create mode 100644 app/views/admin/order_cycles/_wizard_progress.html.haml diff --git a/app/assets/javascripts/admin/order_cycles/controllers/edit.js.coffee b/app/assets/javascripts/admin/order_cycles/controllers/edit.js.coffee index 833614665d..0231045f2c 100644 --- a/app/assets/javascripts/admin/order_cycles/controllers/edit.js.coffee +++ b/app/assets/javascripts/admin/order_cycles/controllers/edit.js.coffee @@ -13,6 +13,8 @@ angular.module('admin.orderCycles') $scope.StatusMessage = StatusMessage + $scope.view = 'general_settings' + $scope.$watch 'order_cycle_form.$dirty', (newValue) -> StatusMessage.display 'notice', t("admin.unsaved_changes") if newValue diff --git a/app/assets/javascripts/admin/order_cycles/controllers/incoming_controller.js.coffee b/app/assets/javascripts/admin/order_cycles/controllers/incoming_controller.js.coffee new file mode 100644 index 0000000000..887bece5b0 --- /dev/null +++ b/app/assets/javascripts/admin/order_cycles/controllers/incoming_controller.js.coffee @@ -0,0 +1,2 @@ +angular.module('admin.orderCycles').controller 'AdminOrderCycleIncomingCtrl', ($scope) -> + $scope.view = 'incoming' diff --git a/app/assets/javascripts/admin/order_cycles/controllers/outgoing_controller.js.coffee b/app/assets/javascripts/admin/order_cycles/controllers/outgoing_controller.js.coffee new file mode 100644 index 0000000000..b1dea40164 --- /dev/null +++ b/app/assets/javascripts/admin/order_cycles/controllers/outgoing_controller.js.coffee @@ -0,0 +1,2 @@ +angular.module('admin.orderCycles').controller 'AdminOrderCycleOutgoingCtrl', ($scope) -> + $scope.view = 'outgoing' diff --git a/app/views/admin/order_cycles/_form.html.haml b/app/views/admin/order_cycles/_form.html.haml index 4d4de2edb7..fc31b00499 100644 --- a/app/views/admin/order_cycles/_form.html.haml +++ b/app/views/admin/order_cycles/_form.html.haml @@ -1,3 +1,8 @@ += render 'wizard_progress' + +%fieldset.no-border-bottom + %legend{ align: 'center'}= t('spree.general_settings') + = render 'name_and_timing_form', f: f -if Enterprise.managed_by(spree_current_user).include? @order_cycle.coordinator diff --git a/app/views/admin/order_cycles/_name_and_timing_form.html.haml b/app/views/admin/order_cycles/_name_and_timing_form.html.haml index 41796ab12b..0419dc619f 100644 --- a/app/views/admin/order_cycles/_name_and_timing_form.html.haml +++ b/app/views/admin/order_cycles/_name_and_timing_form.html.haml @@ -1,6 +1,3 @@ -%fieldset.no-border-bottom - %legend{ align: 'center'}= t('spree.general_settings') - .row .alpha.two.columns = f.label :name, t('.name') diff --git a/app/views/admin/order_cycles/_wizard_progress.html.haml b/app/views/admin/order_cycles/_wizard_progress.html.haml new file mode 100644 index 0000000000..2b13a0cebc --- /dev/null +++ b/app/views/admin/order_cycles/_wizard_progress.html.haml @@ -0,0 +1,3 @@ +%ul.wizard-progress + %li{ ng: { repeat: "step in ['general_settings','incoming','outgoing']", class: '{current: view==step}' } } + {{ "admin.order_cycles.wizard_progress."+ step | t }} diff --git a/app/views/admin/order_cycles/incoming.html.haml b/app/views/admin/order_cycles/incoming.html.haml index fbbc5301a7..2c82c32d3f 100644 --- a/app/views/admin/order_cycles/incoming.html.haml +++ b/app/views/admin/order_cycles/incoming.html.haml @@ -4,6 +4,9 @@ = admin_inject_order_cycle_instance = form_for [main_app, :admin, @order_cycle], :url => '', :html => {:class => 'ng order_cycle', 'ng-app' => 'admin.orderCycles', 'ng-controller' => 'AdminEditOrderCycleCtrl', name: 'order_cycle_form'} do |f| + %div{ 'ng-controller' => 'AdminOrderCycleIncomingCtrl' } + = render 'wizard_progress' + %save-bar{ dirty: "order_cycle_form.$dirty", persist: "true" } %input.red{ type: "button", value: t(:update), ng: { click: "submit($event, null)", disabled: "!order_cycle_form.$dirty || order_cycle_form.$invalid" } } %input.red{ type: "button", value: t('.update_and_close'), ng: { click: "submit($event, '#{main_app.admin_order_cycles_path}')", disabled: "!order_cycle_form.$dirty || order_cycle_form.$invalid" } } diff --git a/app/views/admin/order_cycles/outgoing.html.haml b/app/views/admin/order_cycles/outgoing.html.haml index 4d17dd53b7..0d6785830a 100644 --- a/app/views/admin/order_cycles/outgoing.html.haml +++ b/app/views/admin/order_cycles/outgoing.html.haml @@ -4,6 +4,9 @@ = admin_inject_order_cycle_instance = form_for [main_app, :admin, @order_cycle], :url => '', :html => {:class => 'ng order_cycle', 'ng-app' => 'admin.orderCycles', 'ng-controller' => 'AdminEditOrderCycleCtrl', name: 'order_cycle_form'} do |f| + %div{ 'ng-controller' => 'AdminOrderCycleOutgoingCtrl' } + = render 'wizard_progress' + %save-bar{ dirty: "order_cycle_form.$dirty", persist: "true" } %input.red{ type: "button", value: t(:update), ng: { click: "submit($event, null)", disabled: "!order_cycle_form.$dirty || order_cycle_form.$invalid" } } %input.red{ type: "button", value: t('.update_and_close'), ng: { click: "submit($event, '#{main_app.admin_order_cycles_path}')", disabled: "!order_cycle_form.$dirty || order_cycle_form.$invalid" } } diff --git a/config/locales/en.yml b/config/locales/en.yml index e4da7fc402..d9e3bbdbf8 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -896,6 +896,10 @@ en: update_and_close: "Update and Close" outgoing: update_and_close: "Update and Close" + wizard_progress: + general_settings: "1. General Settings" + incoming: "2. Incoming Products" + outgoing: "3. Outgoing Products" exchange_form: pickup_time_tip: When orders from this OC will be ready for the customer pickup_instructions_placeholder: "Pick-up instructions" From 305d7b1125ed3e309f22f3f6d19f429778c9943f Mon Sep 17 00:00:00 2001 From: luisramos0 Date: Fri, 1 Nov 2019 20:07:23 +0000 Subject: [PATCH 04/19] Adapted navigation between OC edit pages by adding new previous and next buttons --- app/views/admin/order_cycles/edit.html.haml | 7 ++++--- .../admin/order_cycles/incoming.html.haml | 8 +++++--- .../admin/order_cycles/outgoing.html.haml | 7 ++++--- config/locales/en.yml | 19 ++++++++++++++++--- 4 files changed, 29 insertions(+), 12 deletions(-) diff --git a/app/views/admin/order_cycles/edit.html.haml b/app/views/admin/order_cycles/edit.html.haml index c578936375..b0bd9164da 100644 --- a/app/views/admin/order_cycles/edit.html.haml +++ b/app/views/admin/order_cycles/edit.html.haml @@ -29,9 +29,10 @@ = form_for [main_app, :admin, @order_cycle], :url => '', :html => {:class => 'ng order_cycle', 'ng-app' => 'admin.orderCycles', 'ng-controller' => ng_controller, name: 'order_cycle_form'} do |f| %save-bar{ dirty: "order_cycle_form.$dirty", persist: "true" } - %input.red{ type: "button", value: t(:update), ng: { click: "submit($event, null)", disabled: "!order_cycle_form.$dirty || order_cycle_form.$invalid" } } - %input.red{ type: "button", value: t('.update_and_close'), ng: { click: "submit($event, '#{main_app.admin_order_cycles_path}')", disabled: "!order_cycle_form.$dirty || order_cycle_form.$invalid" } } - %input{ type: "button", ng: { value: "order_cycle_form.$dirty ? '#{t(:cancel)}' : '#{t(:close)}'", click: "cancel('#{main_app.admin_order_cycles_path}')" } } + %input.red{ type: "button", value: t('.save'), ng: { click: "submit($event, null)", disabled: "!order_cycle_form.$dirty || order_cycle_form.$invalid" } } + %input.red{ type: "button", value: t('.save_and_next'), ng: { click: "submit($event, '#{main_app.admin_order_cycle_incoming_path(@order_cycle)}')", disabled: "!order_cycle_form.$dirty || order_cycle_form.$invalid" } } + %input{ type: "button", value: t('.next'), ng: { click: "cancel('#{main_app.admin_order_cycle_incoming_path(@order_cycle)}')", disabled: "order_cycle_form.$dirty" } } + %input{ type: "button", ng: { value: "order_cycle_form.$dirty ? '#{t('.cancel')}' : '#{t('.back_to_list')}'", click: "cancel('#{main_app.admin_order_cycles_path}')" } } - if order_cycles_simple_form = render 'simple_form', f: f diff --git a/app/views/admin/order_cycles/incoming.html.haml b/app/views/admin/order_cycles/incoming.html.haml index 2c82c32d3f..9511b5c943 100644 --- a/app/views/admin/order_cycles/incoming.html.haml +++ b/app/views/admin/order_cycles/incoming.html.haml @@ -8,9 +8,11 @@ = render 'wizard_progress' %save-bar{ dirty: "order_cycle_form.$dirty", persist: "true" } - %input.red{ type: "button", value: t(:update), ng: { click: "submit($event, null)", disabled: "!order_cycle_form.$dirty || order_cycle_form.$invalid" } } - %input.red{ type: "button", value: t('.update_and_close'), ng: { click: "submit($event, '#{main_app.admin_order_cycles_path}')", disabled: "!order_cycle_form.$dirty || order_cycle_form.$invalid" } } - %input{ type: "button", ng: { value: "order_cycle_form.$dirty ? '#{t(:cancel)}' : '#{t(:close)}'", click: "cancel('#{main_app.admin_order_cycles_path}')" } } + %input{ type: "button", value: t('.previous'), ng: { click: "cancel('#{main_app.edit_admin_order_cycle_path(@order_cycle)}')", disabled: "order_cycle_form.$dirty" } } + %input.red{ type: "button", value: t('.save'), ng: { click: "submit($event, null)", disabled: "!order_cycle_form.$dirty || order_cycle_form.$invalid" } } + %input.red{ type: "button", value: t('.save_and_next'), ng: { click: "submit($event, '#{main_app.admin_order_cycle_outgoing_path(@order_cycle)}')", disabled: "!order_cycle_form.$dirty || order_cycle_form.$invalid" } } + %input{ type: "button", value: t('.next'), ng: { click: "cancel('#{main_app.admin_order_cycle_outgoing_path(@order_cycle)}')", disabled: "order_cycle_form.$dirty" } } + %input{ type: "button", ng: { value: "order_cycle_form.$dirty ? '#{t('.cancel')}' : '#{t('.back_to_list')}'", click: "cancel('#{main_app.admin_order_cycles_path}')" } } %fieldset.no-border-bottom %legend{ align: 'center'}= t('.incoming') diff --git a/app/views/admin/order_cycles/outgoing.html.haml b/app/views/admin/order_cycles/outgoing.html.haml index 0d6785830a..c34cb7e784 100644 --- a/app/views/admin/order_cycles/outgoing.html.haml +++ b/app/views/admin/order_cycles/outgoing.html.haml @@ -8,9 +8,10 @@ = render 'wizard_progress' %save-bar{ dirty: "order_cycle_form.$dirty", persist: "true" } - %input.red{ type: "button", value: t(:update), ng: { click: "submit($event, null)", disabled: "!order_cycle_form.$dirty || order_cycle_form.$invalid" } } - %input.red{ type: "button", value: t('.update_and_close'), ng: { click: "submit($event, '#{main_app.admin_order_cycles_path}')", disabled: "!order_cycle_form.$dirty || order_cycle_form.$invalid" } } - %input{ type: "button", ng: { value: "order_cycle_form.$dirty ? '#{t(:cancel)}' : '#{t(:close)}'", click: "cancel('#{main_app.admin_order_cycles_path}')" } } + %input{ type: "button", value: t('.previous'), ng: { click: "cancel('#{main_app.admin_order_cycle_incoming_path(@order_cycle)}')", disabled: "order_cycle_form.$dirty" } } + %input.red{ type: "button", value: t('.save'), ng: { click: "submit($event, null)", disabled: "!order_cycle_form.$dirty || order_cycle_form.$invalid" } } + %input.red{ type: "button", value: t('.save_and_back_to_list'), ng: { click: "submit($event, '#{main_app.admin_order_cycles_path}')", disabled: "!order_cycle_form.$dirty || order_cycle_form.$invalid" } } + %input{ type: "button", ng: { value: "order_cycle_form.$dirty ? '#{t('.cancel')}' : '#{t('.back_to_list')}'", click: "cancel('#{main_app.admin_order_cycles_path}')" } } %fieldset.no-border-bottom %legend{ align: 'center'}= t('.outgoing') diff --git a/config/locales/en.yml b/config/locales/en.yml index d9e3bbdbf8..3942af7515 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -890,12 +890,25 @@ en: loading: LOADING... edit: advanced_settings: "Advanced Settings" - update_and_close: "Update and Close" + save: "Save" + save_and_next: "Save and Next" + next: "Next" + cancel: "Cancel" + back_to_list: "Back To List" choose_products_from: "Choose Products From:" incoming: - update_and_close: "Update and Close" + previous: "Previous" + save: "Save" + save_and_next: "Save and Next" + next: "Next" + cancel: "Cancel" + back_to_list: "Back To List" outgoing: - update_and_close: "Update and Close" + previous: "Previous" + save: "Save" + save_and_back_to_list: "Save and Back to List" + cancel: "Cancel" + back_to_list: "Back To List" wizard_progress: general_settings: "1. General Settings" incoming: "2. Incoming Products" From e03e3ae50aa22bc6d46dd5ae225ee6f1186d7622 Mon Sep 17 00:00:00 2001 From: luisramos0 Date: Fri, 1 Nov 2019 20:24:49 +0000 Subject: [PATCH 05/19] Fix the simple edit OC and the new OC page flows --- .../admin/order_cycles/controllers/create.js.coffee | 2 ++ app/views/admin/order_cycles/edit.html.haml | 7 +++++-- app/views/admin/order_cycles/new.html.haml | 4 ++-- config/locales/en.yml | 5 +++++ 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/admin/order_cycles/controllers/create.js.coffee b/app/assets/javascripts/admin/order_cycles/controllers/create.js.coffee index bf7bad2774..78c4174e20 100644 --- a/app/assets/javascripts/admin/order_cycles/controllers/create.js.coffee +++ b/app/assets/javascripts/admin/order_cycles/controllers/create.js.coffee @@ -12,6 +12,8 @@ angular.module('admin.orderCycles') $scope.StatusMessage = StatusMessage + $scope.view = 'general_settings' + $scope.$watch 'order_cycle_form.$dirty', (newValue) -> StatusMessage.display 'notice', t("admin.unsaved_changes") if newValue diff --git a/app/views/admin/order_cycles/edit.html.haml b/app/views/admin/order_cycles/edit.html.haml index b0bd9164da..2a781974ca 100644 --- a/app/views/admin/order_cycles/edit.html.haml +++ b/app/views/admin/order_cycles/edit.html.haml @@ -30,8 +30,11 @@ %save-bar{ dirty: "order_cycle_form.$dirty", persist: "true" } %input.red{ type: "button", value: t('.save'), ng: { click: "submit($event, null)", disabled: "!order_cycle_form.$dirty || order_cycle_form.$invalid" } } - %input.red{ type: "button", value: t('.save_and_next'), ng: { click: "submit($event, '#{main_app.admin_order_cycle_incoming_path(@order_cycle)}')", disabled: "!order_cycle_form.$dirty || order_cycle_form.$invalid" } } - %input{ type: "button", value: t('.next'), ng: { click: "cancel('#{main_app.admin_order_cycle_incoming_path(@order_cycle)}')", disabled: "order_cycle_form.$dirty" } } + - if order_cycles_simple_form + %input.red{ type: "button", value: t('.save_and_back_to_list'), ng: { click: "submit($event, '#{main_app.admin_order_cycles_path}')", disabled: "!order_cycle_form.$dirty || order_cycle_form.$invalid" } } + - else + %input.red{ type: "button", value: t('.save_and_next'), ng: { click: "submit($event, '#{main_app.admin_order_cycle_incoming_path(@order_cycle)}')", disabled: "!order_cycle_form.$dirty || order_cycle_form.$invalid" } } + %input{ type: "button", value: t('.next'), ng: { click: "cancel('#{main_app.admin_order_cycle_incoming_path(@order_cycle)}')", disabled: "order_cycle_form.$dirty" } } %input{ type: "button", ng: { value: "order_cycle_form.$dirty ? '#{t('.cancel')}' : '#{t('.back_to_list')}'", click: "cancel('#{main_app.admin_order_cycles_path}')" } } - if order_cycles_simple_form diff --git a/app/views/admin/order_cycles/new.html.haml b/app/views/admin/order_cycles/new.html.haml index a127ab5088..6a67f4fc14 100644 --- a/app/views/admin/order_cycles/new.html.haml +++ b/app/views/admin/order_cycles/new.html.haml @@ -7,8 +7,8 @@ = form_for [main_app, :admin, @order_cycle], :url => '', :html => {:class => 'ng order_cycle', 'ng-app' => 'admin.orderCycles', 'ng-controller' => ng_controller, name: 'order_cycle_form'} do |f| %save-bar{ dirty: "order_cycle_form.$dirty", persist: "true" } - %input.red{ type: "button", value: t(:create), ng: { click: "submit($event, '#{main_app.admin_order_cycles_path}')", disabled: "!order_cycle_form.$dirty || order_cycle_form.$invalid" } } - %input{ type: "button", ng: { value: "order_cycle_form.$dirty ? 'Cancel' : 'Close'", click: "cancel('#{main_app.admin_order_cycles_path}')" } } + %input.red{ type: "button", value: t('.create'), ng: { click: "submit($event, '#{main_app.admin_order_cycles_path}')", disabled: "!order_cycle_form.$dirty || order_cycle_form.$invalid" } } + %input{ type: "button", ng: { value: "order_cycle_form.$dirty ? '#{t('.cancel')}' : '#{t('.back_to_list')}'", click: "cancel('#{main_app.admin_order_cycles_path}')" } } - if order_cycles_simple_form = render 'simple_form', f: f diff --git a/config/locales/en.yml b/config/locales/en.yml index 3942af7515..faf4b82039 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -888,6 +888,10 @@ en: loading_flash: loading_order_cycles: LOADING ORDER CYCLES loading: LOADING... + new: + create: "Create" + cancel: "Cancel" + back_to_list: "Back To List" edit: advanced_settings: "Advanced Settings" save: "Save" @@ -895,6 +899,7 @@ en: next: "Next" cancel: "Cancel" back_to_list: "Back To List" + save_and_back_to_list: "Save and Back to List" choose_products_from: "Choose Products From:" incoming: previous: "Previous" From 7845b6c6fb21d8469952afbb5e10f2e6bce5cbf7 Mon Sep 17 00:00:00 2001 From: luisramos0 Date: Sat, 2 Nov 2019 16:07:29 +0000 Subject: [PATCH 06/19] Use only AdminOrderCycleIncomingCtrl in incoming view and make AdminOrderCycleIncomingCtrl extend AdminEditOrderCycleCtrl Same for AdminOrderCycleOutgoingCtrl --- .../order_cycles/controllers/incoming_controller.js.coffee | 3 ++- .../order_cycles/controllers/outgoing_controller.js.coffee | 3 ++- app/views/admin/order_cycles/incoming.html.haml | 5 ++--- app/views/admin/order_cycles/outgoing.html.haml | 5 ++--- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/assets/javascripts/admin/order_cycles/controllers/incoming_controller.js.coffee b/app/assets/javascripts/admin/order_cycles/controllers/incoming_controller.js.coffee index 887bece5b0..ef3cee9f68 100644 --- a/app/assets/javascripts/admin/order_cycles/controllers/incoming_controller.js.coffee +++ b/app/assets/javascripts/admin/order_cycles/controllers/incoming_controller.js.coffee @@ -1,2 +1,3 @@ -angular.module('admin.orderCycles').controller 'AdminOrderCycleIncomingCtrl', ($scope) -> +angular.module('admin.orderCycles').controller 'AdminOrderCycleIncomingCtrl', ($scope, $controller) -> + $controller('AdminEditOrderCycleCtrl', {$scope: $scope}) $scope.view = 'incoming' diff --git a/app/assets/javascripts/admin/order_cycles/controllers/outgoing_controller.js.coffee b/app/assets/javascripts/admin/order_cycles/controllers/outgoing_controller.js.coffee index b1dea40164..cd614534af 100644 --- a/app/assets/javascripts/admin/order_cycles/controllers/outgoing_controller.js.coffee +++ b/app/assets/javascripts/admin/order_cycles/controllers/outgoing_controller.js.coffee @@ -1,2 +1,3 @@ -angular.module('admin.orderCycles').controller 'AdminOrderCycleOutgoingCtrl', ($scope) -> +angular.module('admin.orderCycles').controller 'AdminOrderCycleOutgoingCtrl', ($scope, $controller) -> + $controller('AdminEditOrderCycleCtrl', {$scope: $scope}) $scope.view = 'outgoing' diff --git a/app/views/admin/order_cycles/incoming.html.haml b/app/views/admin/order_cycles/incoming.html.haml index 9511b5c943..fdfa7c33f1 100644 --- a/app/views/admin/order_cycles/incoming.html.haml +++ b/app/views/admin/order_cycles/incoming.html.haml @@ -2,10 +2,9 @@ = t :edit_order_cycle = admin_inject_order_cycle_instance -= form_for [main_app, :admin, @order_cycle], :url => '', :html => {:class => 'ng order_cycle', 'ng-app' => 'admin.orderCycles', 'ng-controller' => 'AdminEditOrderCycleCtrl', name: 'order_cycle_form'} do |f| += form_for [main_app, :admin, @order_cycle], :url => '', :html => {:class => 'ng order_cycle', 'ng-app' => 'admin.orderCycles', 'ng-controller' => 'AdminOrderCycleIncomingCtrl', name: 'order_cycle_form'} do |f| - %div{ 'ng-controller' => 'AdminOrderCycleIncomingCtrl' } - = render 'wizard_progress' + = render 'wizard_progress' %save-bar{ dirty: "order_cycle_form.$dirty", persist: "true" } %input{ type: "button", value: t('.previous'), ng: { click: "cancel('#{main_app.edit_admin_order_cycle_path(@order_cycle)}')", disabled: "order_cycle_form.$dirty" } } diff --git a/app/views/admin/order_cycles/outgoing.html.haml b/app/views/admin/order_cycles/outgoing.html.haml index c34cb7e784..e56587ffa1 100644 --- a/app/views/admin/order_cycles/outgoing.html.haml +++ b/app/views/admin/order_cycles/outgoing.html.haml @@ -2,10 +2,9 @@ = t :edit_order_cycle = admin_inject_order_cycle_instance -= form_for [main_app, :admin, @order_cycle], :url => '', :html => {:class => 'ng order_cycle', 'ng-app' => 'admin.orderCycles', 'ng-controller' => 'AdminEditOrderCycleCtrl', name: 'order_cycle_form'} do |f| += form_for [main_app, :admin, @order_cycle], :url => '', :html => {:class => 'ng order_cycle', 'ng-app' => 'admin.orderCycles', 'ng-controller' => 'AdminOrderCycleOutgoingCtrl', name: 'order_cycle_form'} do |f| - %div{ 'ng-controller' => 'AdminOrderCycleOutgoingCtrl' } - = render 'wizard_progress' + = render 'wizard_progress' %save-bar{ dirty: "order_cycle_form.$dirty", persist: "true" } %input{ type: "button", value: t('.previous'), ng: { click: "cancel('#{main_app.admin_order_cycle_incoming_path(@order_cycle)}')", disabled: "order_cycle_form.$dirty" } } From 6e0019227bdf0d729f4af9a6b143da2e9bc34e00 Mon Sep 17 00:00:00 2001 From: luisramos0 Date: Sat, 2 Nov 2019 16:49:18 +0000 Subject: [PATCH 07/19] Remove some serious copy/paste party of the past... by extending from new AdminOrderCycleBasicCtrl where we put all the basic methods for the OC create/edit/simple_create/simple_edit controllers --- .../order_cycles/controllers/create.js.coffee | 33 ++----------------- .../order_cycles/controllers/edit.js.coffee | 29 ++-------------- .../order_cycle_basic_controller.js.coffee | 30 +++++++++++++++++ .../controllers/simple_create.js.coffee | 33 ++----------------- .../controllers/simple_edit.js.coffee | 33 ++----------------- 5 files changed, 42 insertions(+), 116 deletions(-) create mode 100644 app/assets/javascripts/admin/order_cycles/controllers/order_cycle_basic_controller.js.coffee diff --git a/app/assets/javascripts/admin/order_cycles/controllers/create.js.coffee b/app/assets/javascripts/admin/order_cycles/controllers/create.js.coffee index 78c4174e20..b10d74eed7 100644 --- a/app/assets/javascripts/admin/order_cycles/controllers/create.js.coffee +++ b/app/assets/javascripts/admin/order_cycles/controllers/create.js.coffee @@ -1,5 +1,7 @@ angular.module('admin.orderCycles') - .controller 'AdminCreateOrderCycleCtrl', ($scope, $filter, $window, OrderCycle, Enterprise, EnterpriseFee, Schedules, RequestMonitor, ocInstance, StatusMessage) -> + .controller 'AdminCreateOrderCycleCtrl', ($scope, $controller, $filter, $window, OrderCycle, Enterprise, EnterpriseFee, Schedules, RequestMonitor, ocInstance, StatusMessage) -> + $controller('AdminOrderCycleBasicCtrl', {$scope: $scope}) + $scope.enterprises = Enterprise.index(coordinator_id: ocInstance.coordinator_id) $scope.supplier_enterprises = Enterprise.producer_enterprises $scope.distributor_enterprises = Enterprise.hub_enterprises @@ -14,24 +16,9 @@ angular.module('admin.orderCycles') $scope.view = 'general_settings' - $scope.$watch 'order_cycle_form.$dirty', (newValue) -> - StatusMessage.display 'notice', t("admin.unsaved_changes") if newValue - - $scope.$watch 'order_cycle_form.$valid', (isValid) -> - StatusMessage.setValidation(isValid) - - $scope.loaded = -> - Enterprise.loaded && EnterpriseFee.loaded && OrderCycle.loaded && !RequestMonitor.loading - - $scope.suppliedVariants = (enterprise_id) -> - Enterprise.suppliedVariants(enterprise_id) - $scope.exchangeSelectedVariants = (exchange) -> OrderCycle.exchangeSelectedVariants(exchange) - $scope.setExchangeVariants = (exchange, variants, selected) -> - OrderCycle.setExchangeVariants(exchange, variants, selected) - $scope.enterpriseTotalVariants = (enterprise) -> Enterprise.totalVariants(enterprise) @@ -50,9 +37,6 @@ angular.module('admin.orderCycles') $scope.enterprisesWithFees = -> $scope.enterprises[id] for id in OrderCycle.participatingEnterpriseIds() when $scope.enterpriseFeesForEnterprise(id).length > 0 - $scope.enterpriseFeesForEnterprise = (enterprise_id) -> - EnterpriseFee.forEnterprise(parseInt(enterprise_id)) - $scope.addSupplier = ($event) -> $event.preventDefault() OrderCycle.addSupplier($scope.new_supplier_id) @@ -66,14 +50,6 @@ angular.module('admin.orderCycles') OrderCycle.removeExchange(exchange) $scope.order_cycle_form.$dirty = true - $scope.addCoordinatorFee = ($event) -> - $event.preventDefault() - OrderCycle.addCoordinatorFee() - - $scope.removeCoordinatorFee = ($event, index) -> - $event.preventDefault() - OrderCycle.removeCoordinatorFee(index) - $scope.addExchangeFee = ($event, exchange) -> $event.preventDefault() OrderCycle.addExchangeFee(exchange) @@ -89,6 +65,3 @@ angular.module('admin.orderCycles') $event.preventDefault() StatusMessage.display 'progress', t('js.saving') OrderCycle.create(destination) - - $scope.cancel = (destination) -> - $window.location = destination diff --git a/app/assets/javascripts/admin/order_cycles/controllers/edit.js.coffee b/app/assets/javascripts/admin/order_cycles/controllers/edit.js.coffee index 0231045f2c..9f5f91b1cf 100644 --- a/app/assets/javascripts/admin/order_cycles/controllers/edit.js.coffee +++ b/app/assets/javascripts/admin/order_cycles/controllers/edit.js.coffee @@ -1,5 +1,7 @@ angular.module('admin.orderCycles') - .controller 'AdminEditOrderCycleCtrl', ($scope, $filter, $location, $window, OrderCycle, Enterprise, EnterpriseFee, StatusMessage, Schedules, RequestMonitor, ocInstance) -> + .controller 'AdminEditOrderCycleCtrl', ($scope, $controller, $filter, $location, $window, OrderCycle, Enterprise, EnterpriseFee, StatusMessage, Schedules, RequestMonitor, ocInstance) -> + $controller('AdminOrderCycleBasicCtrl', {$scope: $scope}) + order_cycle_id = $location.absUrl().match(/\/admin\/order_cycles\/(\d+)/)[1] $scope.enterprises = Enterprise.index(order_cycle_id: order_cycle_id) $scope.supplier_enterprises = Enterprise.producer_enterprises @@ -15,24 +17,9 @@ angular.module('admin.orderCycles') $scope.view = 'general_settings' - $scope.$watch 'order_cycle_form.$dirty', (newValue) -> - StatusMessage.display 'notice', t("admin.unsaved_changes") if newValue - - $scope.$watch 'order_cycle_form.$valid', (isValid) -> - StatusMessage.setValidation(isValid) - - $scope.loaded = -> - Enterprise.loaded && EnterpriseFee.loaded && OrderCycle.loaded && !RequestMonitor.loading - - $scope.suppliedVariants = (enterprise_id) -> - Enterprise.suppliedVariants(enterprise_id) - $scope.exchangeSelectedVariants = (exchange) -> OrderCycle.exchangeSelectedVariants(exchange) - $scope.setExchangeVariants = (exchange, variants, selected) -> - OrderCycle.setExchangeVariants(exchange, variants, selected) - $scope.enterpriseTotalVariants = (enterprise) -> Enterprise.totalVariants(enterprise) @@ -51,9 +38,6 @@ angular.module('admin.orderCycles') $scope.enterprisesWithFees = -> $scope.enterprises[id] for id in OrderCycle.participatingEnterpriseIds() when $scope.enterpriseFeesForEnterprise(id).length > 0 - $scope.enterpriseFeesForEnterprise = (enterprise_id) -> - EnterpriseFee.forEnterprise(parseInt(enterprise_id)) - $scope.addSupplier = ($event) -> $event.preventDefault() OrderCycle.addSupplier($scope.new_supplier_id) @@ -67,10 +51,6 @@ angular.module('admin.orderCycles') OrderCycle.removeExchange(exchange) $scope.order_cycle_form.$dirty = true - $scope.addCoordinatorFee = ($event) -> - $event.preventDefault() - OrderCycle.addCoordinatorFee() - $scope.removeCoordinatorFee = ($event, index) -> $event.preventDefault() OrderCycle.removeCoordinatorFee(index) @@ -96,6 +76,3 @@ angular.module('admin.orderCycles') $event.preventDefault() StatusMessage.display 'progress', t('js.saving') OrderCycle.update(destination, $scope.order_cycle_form) - - $scope.cancel = (destination) -> - $window.location = destination diff --git a/app/assets/javascripts/admin/order_cycles/controllers/order_cycle_basic_controller.js.coffee b/app/assets/javascripts/admin/order_cycles/controllers/order_cycle_basic_controller.js.coffee new file mode 100644 index 0000000000..48906182b3 --- /dev/null +++ b/app/assets/javascripts/admin/order_cycles/controllers/order_cycle_basic_controller.js.coffee @@ -0,0 +1,30 @@ +angular.module('admin.orderCycles') + .controller 'AdminOrderCycleBasicCtrl', ($scope, $filter, $window, OrderCycle, Enterprise, EnterpriseFee, Schedules, RequestMonitor, ocInstance, StatusMessage) -> + $scope.$watch 'order_cycle_form.$dirty', (newValue) -> + StatusMessage.display 'notice', t("admin.unsaved_changes") if newValue + + $scope.$watch 'order_cycle_form.$valid', (isValid) -> + StatusMessage.setValidation(isValid) + + $scope.loaded = -> + Enterprise.loaded && EnterpriseFee.loaded && OrderCycle.loaded && !RequestMonitor.loading + + $scope.suppliedVariants = (enterprise_id) -> + Enterprise.suppliedVariants(enterprise_id) + + $scope.setExchangeVariants = (exchange, variants, selected) -> + OrderCycle.setExchangeVariants(exchange, variants, selected) + + $scope.enterpriseFeesForEnterprise = (enterprise_id) -> + EnterpriseFee.forEnterprise(parseInt(enterprise_id)) + + $scope.addCoordinatorFee = ($event) -> + $event.preventDefault() + OrderCycle.addCoordinatorFee() + + $scope.removeCoordinatorFee = ($event, index) -> + $event.preventDefault() + OrderCycle.removeCoordinatorFee(index) + + $scope.cancel = (destination) -> + $window.location = destination diff --git a/app/assets/javascripts/admin/order_cycles/controllers/simple_create.js.coffee b/app/assets/javascripts/admin/order_cycles/controllers/simple_create.js.coffee index c0865990e5..2238b8e161 100644 --- a/app/assets/javascripts/admin/order_cycles/controllers/simple_create.js.coffee +++ b/app/assets/javascripts/admin/order_cycles/controllers/simple_create.js.coffee @@ -1,4 +1,6 @@ -angular.module('admin.orderCycles').controller "AdminSimpleCreateOrderCycleCtrl", ($scope, $window, OrderCycle, Enterprise, EnterpriseFee, StatusMessage, Schedules, RequestMonitor, ocInstance) -> +angular.module('admin.orderCycles').controller "AdminSimpleCreateOrderCycleCtrl", ($scope, $controller, $window, OrderCycle, Enterprise, EnterpriseFee, StatusMessage, Schedules, RequestMonitor, ocInstance) -> + $controller('AdminOrderCycleBasicCtrl', {$scope: $scope}) + $scope.StatusMessage = StatusMessage $scope.OrderCycle = OrderCycle $scope.schedules = Schedules.index({enterprise_id: ocInstance.coordinator_id}) @@ -8,12 +10,6 @@ angular.module('admin.orderCycles').controller "AdminSimpleCreateOrderCycleCtrl" $scope.init(enterprises) $scope.enterprise_fees = EnterpriseFee.index(coordinator_id: ocInstance.coordinator_id) - $scope.$watch 'order_cycle_form.$dirty', (newValue) -> - StatusMessage.display 'notice', t("admin.unsaved_changes") if newValue - - $scope.$watch 'order_cycle_form.$valid', (isValid) -> - StatusMessage.setValidation(isValid) - $scope.init = (enterprises) -> enterprise = enterprises[Object.keys(enterprises)[0]] OrderCycle.addSupplier enterprise.id @@ -26,33 +22,10 @@ angular.module('admin.orderCycles').controller "AdminSimpleCreateOrderCycleCtrl" OrderCycle.order_cycle.coordinator_id = enterprise.id - $scope.loaded = -> - Enterprise.loaded && EnterpriseFee.loaded && OrderCycle.loaded && !RequestMonitor.loading - $scope.removeDistributionOfVariant = angular.noop - $scope.setExchangeVariants = (exchange, variants, selected) -> - OrderCycle.setExchangeVariants(exchange, variants, selected) - - $scope.suppliedVariants = (enterprise_id) -> - Enterprise.suppliedVariants(enterprise_id) - - $scope.addCoordinatorFee = ($event) -> - $event.preventDefault() - OrderCycle.addCoordinatorFee() - - $scope.removeCoordinatorFee = ($event, index) -> - $event.preventDefault() - OrderCycle.removeCoordinatorFee(index) - - $scope.enterpriseFeesForEnterprise = (enterprise_id) -> - EnterpriseFee.forEnterprise(parseInt(enterprise_id)) - $scope.submit = ($event, destination) -> $event.preventDefault() StatusMessage.display 'progress', t('js.saving') OrderCycle.mirrorIncomingToOutgoingProducts() OrderCycle.create(destination) - - $scope.cancel = (destination) -> - $window.location = destination diff --git a/app/assets/javascripts/admin/order_cycles/controllers/simple_edit.js.coffee b/app/assets/javascripts/admin/order_cycles/controllers/simple_edit.js.coffee index 6c6233e0fd..a650e9d067 100644 --- a/app/assets/javascripts/admin/order_cycles/controllers/simple_edit.js.coffee +++ b/app/assets/javascripts/admin/order_cycles/controllers/simple_edit.js.coffee @@ -1,4 +1,6 @@ -angular.module('admin.orderCycles').controller "AdminSimpleEditOrderCycleCtrl", ($scope, $location, $window, OrderCycle, Enterprise, EnterpriseFee, Schedules, RequestMonitor, StatusMessage, ocInstance) -> +angular.module('admin.orderCycles').controller "AdminSimpleEditOrderCycleCtrl", ($scope, $controller, $location, $window, OrderCycle, Enterprise, EnterpriseFee, Schedules, RequestMonitor, StatusMessage, ocInstance) -> + $controller('AdminOrderCycleBasicCtrl', {$scope: $scope}) + $scope.orderCycleId = -> $location.absUrl().match(/\/admin\/order_cycles\/(\d+)/)[1] @@ -10,42 +12,13 @@ angular.module('admin.orderCycles').controller "AdminSimpleEditOrderCycleCtrl", $scope.order_cycle = OrderCycle.load $scope.orderCycleId(), (order_cycle) => $scope.init() - $scope.$watch 'order_cycle_form.$dirty', (newValue) -> - StatusMessage.display 'notice', t("admin.unsaved_changes") if newValue - - $scope.$watch 'order_cycle_form.$valid', (isValid) -> - StatusMessage.setValidation(isValid) - - $scope.loaded = -> - Enterprise.loaded && EnterpriseFee.loaded && OrderCycle.loaded && !RequestMonitor.loading - $scope.init = -> $scope.outgoing_exchange = OrderCycle.order_cycle.outgoing_exchanges[0] - $scope.enterpriseFeesForEnterprise = (enterprise_id) -> - EnterpriseFee.forEnterprise(parseInt(enterprise_id)) - $scope.removeDistributionOfVariant = angular.noop - $scope.setExchangeVariants = (exchange, variants, selected) -> - OrderCycle.setExchangeVariants(exchange, variants, selected) - - $scope.suppliedVariants = (enterprise_id) -> - Enterprise.suppliedVariants(enterprise_id) - - $scope.addCoordinatorFee = ($event) -> - $event.preventDefault() - OrderCycle.addCoordinatorFee() - - $scope.removeCoordinatorFee = ($event, index) -> - $event.preventDefault() - OrderCycle.removeCoordinatorFee(index) - $scope.submit = ($event, destination) -> $event.preventDefault() StatusMessage.display 'progress', t('js.saving') OrderCycle.mirrorIncomingToOutgoingProducts() OrderCycle.update(destination, $scope.order_cycle_form) - - $scope.cancel = (destination) -> - $window.location = destination From a290e83501eb73e58a931bca255fe6fbe9479cb0 Mon Sep 17 00:00:00 2001 From: luisramos0 Date: Sat, 2 Nov 2019 16:58:17 +0000 Subject: [PATCH 08/19] Move more copy pasted code to basic OC controller --- .../admin/order_cycles/controllers/create.js.coffee | 4 ---- .../javascripts/admin/order_cycles/controllers/edit.js.coffee | 4 ---- .../controllers/order_cycle_basic_controller.js.coffee | 4 ++++ .../admin/order_cycles/controllers/simple_create.js.coffee | 3 --- .../admin/order_cycles/controllers/simple_edit.js.coffee | 3 --- 5 files changed, 4 insertions(+), 14 deletions(-) diff --git a/app/assets/javascripts/admin/order_cycles/controllers/create.js.coffee b/app/assets/javascripts/admin/order_cycles/controllers/create.js.coffee index b10d74eed7..d022b3e5ec 100644 --- a/app/assets/javascripts/admin/order_cycles/controllers/create.js.coffee +++ b/app/assets/javascripts/admin/order_cycles/controllers/create.js.coffee @@ -7,13 +7,9 @@ angular.module('admin.orderCycles') $scope.distributor_enterprises = Enterprise.hub_enterprises $scope.supplied_products = Enterprise.supplied_products $scope.enterprise_fees = EnterpriseFee.index(coordinator_id: ocInstance.coordinator_id) - $scope.schedules = Schedules.index({enterprise_id: ocInstance.coordinator_id}) - $scope.OrderCycle = OrderCycle $scope.order_cycle = OrderCycle.new({ coordinator_id: ocInstance.coordinator_id}) - $scope.StatusMessage = StatusMessage - $scope.view = 'general_settings' $scope.exchangeSelectedVariants = (exchange) -> diff --git a/app/assets/javascripts/admin/order_cycles/controllers/edit.js.coffee b/app/assets/javascripts/admin/order_cycles/controllers/edit.js.coffee index 9f5f91b1cf..7d35d3c91e 100644 --- a/app/assets/javascripts/admin/order_cycles/controllers/edit.js.coffee +++ b/app/assets/javascripts/admin/order_cycles/controllers/edit.js.coffee @@ -8,13 +8,9 @@ angular.module('admin.orderCycles') $scope.distributor_enterprises = Enterprise.hub_enterprises $scope.supplied_products = Enterprise.supplied_products $scope.enterprise_fees = EnterpriseFee.index(order_cycle_id: order_cycle_id) - $scope.schedules = Schedules.index({enterprise_id: ocInstance.coordinator_id}) - $scope.OrderCycle = OrderCycle $scope.order_cycle = OrderCycle.load(order_cycle_id) - $scope.StatusMessage = StatusMessage - $scope.view = 'general_settings' $scope.exchangeSelectedVariants = (exchange) -> diff --git a/app/assets/javascripts/admin/order_cycles/controllers/order_cycle_basic_controller.js.coffee b/app/assets/javascripts/admin/order_cycles/controllers/order_cycle_basic_controller.js.coffee index 48906182b3..70745cdfda 100644 --- a/app/assets/javascripts/admin/order_cycles/controllers/order_cycle_basic_controller.js.coffee +++ b/app/assets/javascripts/admin/order_cycles/controllers/order_cycle_basic_controller.js.coffee @@ -1,5 +1,9 @@ angular.module('admin.orderCycles') .controller 'AdminOrderCycleBasicCtrl', ($scope, $filter, $window, OrderCycle, Enterprise, EnterpriseFee, Schedules, RequestMonitor, ocInstance, StatusMessage) -> + $scope.StatusMessage = StatusMessage + $scope.OrderCycle = OrderCycle + $scope.schedules = Schedules.index({enterprise_id: ocInstance.coordinator_id}) + $scope.$watch 'order_cycle_form.$dirty', (newValue) -> StatusMessage.display 'notice', t("admin.unsaved_changes") if newValue diff --git a/app/assets/javascripts/admin/order_cycles/controllers/simple_create.js.coffee b/app/assets/javascripts/admin/order_cycles/controllers/simple_create.js.coffee index 2238b8e161..abcd88efa6 100644 --- a/app/assets/javascripts/admin/order_cycles/controllers/simple_create.js.coffee +++ b/app/assets/javascripts/admin/order_cycles/controllers/simple_create.js.coffee @@ -1,9 +1,6 @@ angular.module('admin.orderCycles').controller "AdminSimpleCreateOrderCycleCtrl", ($scope, $controller, $window, OrderCycle, Enterprise, EnterpriseFee, StatusMessage, Schedules, RequestMonitor, ocInstance) -> $controller('AdminOrderCycleBasicCtrl', {$scope: $scope}) - $scope.StatusMessage = StatusMessage - $scope.OrderCycle = OrderCycle - $scope.schedules = Schedules.index({enterprise_id: ocInstance.coordinator_id}) $scope.order_cycle = OrderCycle.new {coordinator_id: ocInstance.coordinator_id}, => # TODO: make this a get method, which only fetches one enterprise $scope.enterprises = Enterprise.index {coordinator_id: ocInstance.coordinator_id}, (enterprises) => diff --git a/app/assets/javascripts/admin/order_cycles/controllers/simple_edit.js.coffee b/app/assets/javascripts/admin/order_cycles/controllers/simple_edit.js.coffee index a650e9d067..6e300d3e34 100644 --- a/app/assets/javascripts/admin/order_cycles/controllers/simple_edit.js.coffee +++ b/app/assets/javascripts/admin/order_cycles/controllers/simple_edit.js.coffee @@ -4,11 +4,8 @@ angular.module('admin.orderCycles').controller "AdminSimpleEditOrderCycleCtrl", $scope.orderCycleId = -> $location.absUrl().match(/\/admin\/order_cycles\/(\d+)/)[1] - $scope.StatusMessage = StatusMessage $scope.enterprises = Enterprise.index(order_cycle_id: $scope.orderCycleId()) $scope.enterprise_fees = EnterpriseFee.index(order_cycle_id: $scope.orderCycleId()) - $scope.schedules = Schedules.index({enterprise_id: ocInstance.coordinator_id}) - $scope.OrderCycle = OrderCycle $scope.order_cycle = OrderCycle.load $scope.orderCycleId(), (order_cycle) => $scope.init() From 3b4241c70d85e6fc511b2ae9ce45b23cc0bb51ba Mon Sep 17 00:00:00 2001 From: luisramos0 Date: Sat, 2 Nov 2019 17:05:57 +0000 Subject: [PATCH 09/19] Remove more copy pasted code by adding new AdminOrderCycleCtrl with common code from create and edit OC controllers --- .../order_cycles/controllers/create.js.coffee | 57 +------------------ .../order_cycles/controllers/edit.js.coffee | 52 +---------------- .../order_cycle_controller.js.coffee | 54 ++++++++++++++++++ 3 files changed, 60 insertions(+), 103 deletions(-) create mode 100644 app/assets/javascripts/admin/order_cycles/controllers/order_cycle_controller.js.coffee diff --git a/app/assets/javascripts/admin/order_cycles/controllers/create.js.coffee b/app/assets/javascripts/admin/order_cycles/controllers/create.js.coffee index d022b3e5ec..addd1c8c9e 100644 --- a/app/assets/javascripts/admin/order_cycles/controllers/create.js.coffee +++ b/app/assets/javascripts/admin/order_cycles/controllers/create.js.coffee @@ -1,61 +1,10 @@ angular.module('admin.orderCycles') .controller 'AdminCreateOrderCycleCtrl', ($scope, $controller, $filter, $window, OrderCycle, Enterprise, EnterpriseFee, Schedules, RequestMonitor, ocInstance, StatusMessage) -> - $controller('AdminOrderCycleBasicCtrl', {$scope: $scope}) - - $scope.enterprises = Enterprise.index(coordinator_id: ocInstance.coordinator_id) - $scope.supplier_enterprises = Enterprise.producer_enterprises - $scope.distributor_enterprises = Enterprise.hub_enterprises - $scope.supplied_products = Enterprise.supplied_products - $scope.enterprise_fees = EnterpriseFee.index(coordinator_id: ocInstance.coordinator_id) + $controller('AdminOrderCycleCtrl', {$scope: $scope}) $scope.order_cycle = OrderCycle.new({ coordinator_id: ocInstance.coordinator_id}) - - $scope.view = 'general_settings' - - $scope.exchangeSelectedVariants = (exchange) -> - OrderCycle.exchangeSelectedVariants(exchange) - - $scope.enterpriseTotalVariants = (enterprise) -> - Enterprise.totalVariants(enterprise) - - $scope.productSuppliedToOrderCycle = (product) -> - OrderCycle.productSuppliedToOrderCycle(product) - - $scope.variantSuppliedToOrderCycle = (variant) -> - OrderCycle.variantSuppliedToOrderCycle(variant) - - $scope.incomingExchangeVariantsFor = (enterprise_id) -> - $filter('filterExchangeVariants')(OrderCycle.incomingExchangesVariants(), $scope.order_cycle.visible_variants_for_outgoing_exchanges[enterprise_id]) - - $scope.exchangeDirection = (exchange) -> - OrderCycle.exchangeDirection(exchange) - - $scope.enterprisesWithFees = -> - $scope.enterprises[id] for id in OrderCycle.participatingEnterpriseIds() when $scope.enterpriseFeesForEnterprise(id).length > 0 - - $scope.addSupplier = ($event) -> - $event.preventDefault() - OrderCycle.addSupplier($scope.new_supplier_id) - - $scope.addDistributor = ($event) -> - $event.preventDefault() - OrderCycle.addDistributor($scope.new_distributor_id) - - $scope.removeExchange = ($event, exchange) -> - $event.preventDefault() - OrderCycle.removeExchange(exchange) - $scope.order_cycle_form.$dirty = true - - $scope.addExchangeFee = ($event, exchange) -> - $event.preventDefault() - OrderCycle.addExchangeFee(exchange) - - $scope.removeExchangeFee = ($event, exchange, index) -> - $event.preventDefault() - OrderCycle.removeExchangeFee(exchange, index) - - $scope.removeDistributionOfVariant = (variant_id) -> - OrderCycle.removeDistributionOfVariant(variant_id) + $scope.enterprises = Enterprise.index(coordinator_id: ocInstance.coordinator_id) + $scope.enterprise_fees = EnterpriseFee.index(coordinator_id: ocInstance.coordinator_id) $scope.submit = ($event, destination) -> $event.preventDefault() diff --git a/app/assets/javascripts/admin/order_cycles/controllers/edit.js.coffee b/app/assets/javascripts/admin/order_cycles/controllers/edit.js.coffee index 7d35d3c91e..40a3a4c212 100644 --- a/app/assets/javascripts/admin/order_cycles/controllers/edit.js.coffee +++ b/app/assets/javascripts/admin/order_cycles/controllers/edit.js.coffee @@ -1,69 +1,23 @@ angular.module('admin.orderCycles') .controller 'AdminEditOrderCycleCtrl', ($scope, $controller, $filter, $location, $window, OrderCycle, Enterprise, EnterpriseFee, StatusMessage, Schedules, RequestMonitor, ocInstance) -> - $controller('AdminOrderCycleBasicCtrl', {$scope: $scope}) + $controller('AdminOrderCycleCtrl', {$scope: $scope}) order_cycle_id = $location.absUrl().match(/\/admin\/order_cycles\/(\d+)/)[1] - $scope.enterprises = Enterprise.index(order_cycle_id: order_cycle_id) - $scope.supplier_enterprises = Enterprise.producer_enterprises - $scope.distributor_enterprises = Enterprise.hub_enterprises - $scope.supplied_products = Enterprise.supplied_products - $scope.enterprise_fees = EnterpriseFee.index(order_cycle_id: order_cycle_id) - $scope.order_cycle = OrderCycle.load(order_cycle_id) - $scope.view = 'general_settings' - - $scope.exchangeSelectedVariants = (exchange) -> - OrderCycle.exchangeSelectedVariants(exchange) - - $scope.enterpriseTotalVariants = (enterprise) -> - Enterprise.totalVariants(enterprise) - - $scope.productSuppliedToOrderCycle = (product) -> - OrderCycle.productSuppliedToOrderCycle(product) - - $scope.variantSuppliedToOrderCycle = (variant) -> - OrderCycle.variantSuppliedToOrderCycle(variant) - - $scope.incomingExchangeVariantsFor = (enterprise_id) -> - $filter('filterExchangeVariants')(OrderCycle.incomingExchangesVariants(), $scope.order_cycle.visible_variants_for_outgoing_exchanges[enterprise_id]) - - $scope.exchangeDirection = (exchange) -> - OrderCycle.exchangeDirection(exchange) - - $scope.enterprisesWithFees = -> - $scope.enterprises[id] for id in OrderCycle.participatingEnterpriseIds() when $scope.enterpriseFeesForEnterprise(id).length > 0 - - $scope.addSupplier = ($event) -> - $event.preventDefault() - OrderCycle.addSupplier($scope.new_supplier_id) - - $scope.addDistributor = ($event) -> - $event.preventDefault() - OrderCycle.addDistributor($scope.new_distributor_id) - - $scope.removeExchange = ($event, exchange) -> - $event.preventDefault() - OrderCycle.removeExchange(exchange) - $scope.order_cycle_form.$dirty = true + $scope.enterprises = Enterprise.index(order_cycle_id: order_cycle_id) + $scope.enterprise_fees = EnterpriseFee.index(order_cycle_id: order_cycle_id) $scope.removeCoordinatorFee = ($event, index) -> $event.preventDefault() OrderCycle.removeCoordinatorFee(index) $scope.order_cycle_form.$dirty = true - $scope.addExchangeFee = ($event, exchange) -> - $event.preventDefault() - OrderCycle.addExchangeFee(exchange) - $scope.removeExchangeFee = ($event, exchange, index) -> $event.preventDefault() OrderCycle.removeExchangeFee(exchange, index) $scope.order_cycle_form.$dirty = true - $scope.removeDistributionOfVariant = (variant_id) -> - OrderCycle.removeDistributionOfVariant(variant_id) - $scope.submit = (destination) -> $event.preventDefault() StatusMessage.display 'progress', t('js.saving') diff --git a/app/assets/javascripts/admin/order_cycles/controllers/order_cycle_controller.js.coffee b/app/assets/javascripts/admin/order_cycles/controllers/order_cycle_controller.js.coffee new file mode 100644 index 0000000000..ba91407b8e --- /dev/null +++ b/app/assets/javascripts/admin/order_cycles/controllers/order_cycle_controller.js.coffee @@ -0,0 +1,54 @@ +angular.module('admin.orderCycles') + .controller 'AdminOrderCycleCtrl', ($scope, $controller, $filter, $window, OrderCycle, Enterprise, EnterpriseFee, Schedules, RequestMonitor, ocInstance, StatusMessage) -> + $controller('AdminOrderCycleBasicCtrl', {$scope: $scope}) + + $scope.supplier_enterprises = Enterprise.producer_enterprises + $scope.distributor_enterprises = Enterprise.hub_enterprises + $scope.supplied_products = Enterprise.supplied_products + + $scope.view = 'general_settings' + + $scope.exchangeSelectedVariants = (exchange) -> + OrderCycle.exchangeSelectedVariants(exchange) + + $scope.enterpriseTotalVariants = (enterprise) -> + Enterprise.totalVariants(enterprise) + + $scope.productSuppliedToOrderCycle = (product) -> + OrderCycle.productSuppliedToOrderCycle(product) + + $scope.variantSuppliedToOrderCycle = (variant) -> + OrderCycle.variantSuppliedToOrderCycle(variant) + + $scope.incomingExchangeVariantsFor = (enterprise_id) -> + $filter('filterExchangeVariants')(OrderCycle.incomingExchangesVariants(), $scope.order_cycle.visible_variants_for_outgoing_exchanges[enterprise_id]) + + $scope.exchangeDirection = (exchange) -> + OrderCycle.exchangeDirection(exchange) + + $scope.enterprisesWithFees = -> + $scope.enterprises[id] for id in OrderCycle.participatingEnterpriseIds() when $scope.enterpriseFeesForEnterprise(id).length > 0 + + $scope.addSupplier = ($event) -> + $event.preventDefault() + OrderCycle.addSupplier($scope.new_supplier_id) + + $scope.addDistributor = ($event) -> + $event.preventDefault() + OrderCycle.addDistributor($scope.new_distributor_id) + + $scope.removeExchange = ($event, exchange) -> + $event.preventDefault() + OrderCycle.removeExchange(exchange) + $scope.order_cycle_form.$dirty = true + + $scope.addExchangeFee = ($event, exchange) -> + $event.preventDefault() + OrderCycle.addExchangeFee(exchange) + + $scope.removeExchangeFee = ($event, exchange, index) -> + $event.preventDefault() + OrderCycle.removeExchangeFee(exchange, index) + + $scope.removeDistributionOfVariant = (variant_id) -> + OrderCycle.removeDistributionOfVariant(variant_id) From 7c54781d902732d25aadb7d192b423f36319ae93 Mon Sep 17 00:00:00 2001 From: luisramos0 Date: Sat, 2 Nov 2019 20:46:03 +0000 Subject: [PATCH 10/19] Restructure OC page controllers so that methods related to exchanges are only loaded on the incoming and outgoing settings pages --- .../order_cycles/controllers/create.js.coffee | 4 ++- .../order_cycles/controllers/edit.js.coffee | 9 ++--- .../controllers/incoming_controller.js.coffee | 8 +++-- .../order_cycle_basic_controller.js.coffee | 18 ++++++---- ...rder_cycle_exchanges_controller.js.coffee} | 35 ++++++------------- .../controllers/outgoing_controller.js.coffee | 14 ++++++-- 6 files changed, 47 insertions(+), 41 deletions(-) rename app/assets/javascripts/admin/order_cycles/controllers/{order_cycle_controller.js.coffee => order_cycle_exchanges_controller.js.coffee} (63%) diff --git a/app/assets/javascripts/admin/order_cycles/controllers/create.js.coffee b/app/assets/javascripts/admin/order_cycles/controllers/create.js.coffee index addd1c8c9e..655b0e39da 100644 --- a/app/assets/javascripts/admin/order_cycles/controllers/create.js.coffee +++ b/app/assets/javascripts/admin/order_cycles/controllers/create.js.coffee @@ -1,6 +1,8 @@ angular.module('admin.orderCycles') .controller 'AdminCreateOrderCycleCtrl', ($scope, $controller, $filter, $window, OrderCycle, Enterprise, EnterpriseFee, Schedules, RequestMonitor, ocInstance, StatusMessage) -> - $controller('AdminOrderCycleCtrl', {$scope: $scope}) + $controller('AdminOrderCycleBasicCtrl', {$scope: $scope}) + + $scope.view = 'general_settings' $scope.order_cycle = OrderCycle.new({ coordinator_id: ocInstance.coordinator_id}) $scope.enterprises = Enterprise.index(coordinator_id: ocInstance.coordinator_id) diff --git a/app/assets/javascripts/admin/order_cycles/controllers/edit.js.coffee b/app/assets/javascripts/admin/order_cycles/controllers/edit.js.coffee index 40a3a4c212..b6d6443b33 100644 --- a/app/assets/javascripts/admin/order_cycles/controllers/edit.js.coffee +++ b/app/assets/javascripts/admin/order_cycles/controllers/edit.js.coffee @@ -1,6 +1,8 @@ angular.module('admin.orderCycles') .controller 'AdminEditOrderCycleCtrl', ($scope, $controller, $filter, $location, $window, OrderCycle, Enterprise, EnterpriseFee, StatusMessage, Schedules, RequestMonitor, ocInstance) -> - $controller('AdminOrderCycleCtrl', {$scope: $scope}) + $controller('AdminOrderCycleBasicCtrl', {$scope: $scope}) + + $scope.view = 'general_settings' order_cycle_id = $location.absUrl().match(/\/admin\/order_cycles\/(\d+)/)[1] $scope.order_cycle = OrderCycle.load(order_cycle_id) @@ -13,11 +15,6 @@ angular.module('admin.orderCycles') OrderCycle.removeCoordinatorFee(index) $scope.order_cycle_form.$dirty = true - $scope.removeExchangeFee = ($event, exchange, index) -> - $event.preventDefault() - OrderCycle.removeExchangeFee(exchange, index) - $scope.order_cycle_form.$dirty = true - $scope.submit = (destination) -> $event.preventDefault() StatusMessage.display 'progress', t('js.saving') diff --git a/app/assets/javascripts/admin/order_cycles/controllers/incoming_controller.js.coffee b/app/assets/javascripts/admin/order_cycles/controllers/incoming_controller.js.coffee index ef3cee9f68..f714bef93b 100644 --- a/app/assets/javascripts/admin/order_cycles/controllers/incoming_controller.js.coffee +++ b/app/assets/javascripts/admin/order_cycles/controllers/incoming_controller.js.coffee @@ -1,3 +1,7 @@ -angular.module('admin.orderCycles').controller 'AdminOrderCycleIncomingCtrl', ($scope, $controller) -> - $controller('AdminEditOrderCycleCtrl', {$scope: $scope}) +angular.module('admin.orderCycles').controller 'AdminOrderCycleIncomingCtrl', ($scope, $controller, Enterprise) -> + $controller('AdminOrderCycleExchangesCtrl', {$scope: $scope}) + $scope.view = 'incoming' + + $scope.enterpriseTotalVariants = (enterprise) -> + Enterprise.totalVariants(enterprise) diff --git a/app/assets/javascripts/admin/order_cycles/controllers/order_cycle_basic_controller.js.coffee b/app/assets/javascripts/admin/order_cycles/controllers/order_cycle_basic_controller.js.coffee index 70745cdfda..7a01e1c5e2 100644 --- a/app/assets/javascripts/admin/order_cycles/controllers/order_cycle_basic_controller.js.coffee +++ b/app/assets/javascripts/admin/order_cycles/controllers/order_cycle_basic_controller.js.coffee @@ -2,7 +2,6 @@ angular.module('admin.orderCycles') .controller 'AdminOrderCycleBasicCtrl', ($scope, $filter, $window, OrderCycle, Enterprise, EnterpriseFee, Schedules, RequestMonitor, ocInstance, StatusMessage) -> $scope.StatusMessage = StatusMessage $scope.OrderCycle = OrderCycle - $scope.schedules = Schedules.index({enterprise_id: ocInstance.coordinator_id}) $scope.$watch 'order_cycle_form.$dirty', (newValue) -> StatusMessage.display 'notice', t("admin.unsaved_changes") if newValue @@ -13,14 +12,24 @@ angular.module('admin.orderCycles') $scope.loaded = -> Enterprise.loaded && EnterpriseFee.loaded && OrderCycle.loaded && !RequestMonitor.loading + $scope.enterpriseFeesForEnterprise = (enterprise_id) -> + EnterpriseFee.forEnterprise(parseInt(enterprise_id)) + + $scope.cancel = (destination) -> + $window.location = destination + + # Used in panels/exchange_supplied_products.html $scope.suppliedVariants = (enterprise_id) -> Enterprise.suppliedVariants(enterprise_id) + # Used in panels/exchange_supplied_products.html and panels/exchange_distributed_products.html $scope.setExchangeVariants = (exchange, variants, selected) -> OrderCycle.setExchangeVariants(exchange, variants, selected) - $scope.enterpriseFeesForEnterprise = (enterprise_id) -> - EnterpriseFee.forEnterprise(parseInt(enterprise_id)) + # The following methods are specific to the general settings pages: + # - simple create, simple edit and general settings pages + + $scope.schedules = Schedules.index({enterprise_id: ocInstance.coordinator_id}) $scope.addCoordinatorFee = ($event) -> $event.preventDefault() @@ -29,6 +38,3 @@ angular.module('admin.orderCycles') $scope.removeCoordinatorFee = ($event, index) -> $event.preventDefault() OrderCycle.removeCoordinatorFee(index) - - $scope.cancel = (destination) -> - $window.location = destination diff --git a/app/assets/javascripts/admin/order_cycles/controllers/order_cycle_controller.js.coffee b/app/assets/javascripts/admin/order_cycles/controllers/order_cycle_exchanges_controller.js.coffee similarity index 63% rename from app/assets/javascripts/admin/order_cycles/controllers/order_cycle_controller.js.coffee rename to app/assets/javascripts/admin/order_cycles/controllers/order_cycle_exchanges_controller.js.coffee index ba91407b8e..acd6d50f08 100644 --- a/app/assets/javascripts/admin/order_cycles/controllers/order_cycle_controller.js.coffee +++ b/app/assets/javascripts/admin/order_cycles/controllers/order_cycle_exchanges_controller.js.coffee @@ -1,42 +1,20 @@ angular.module('admin.orderCycles') - .controller 'AdminOrderCycleCtrl', ($scope, $controller, $filter, $window, OrderCycle, Enterprise, EnterpriseFee, Schedules, RequestMonitor, ocInstance, StatusMessage) -> - $controller('AdminOrderCycleBasicCtrl', {$scope: $scope}) + .controller 'AdminOrderCycleExchangesCtrl', ($scope, $controller, $filter, $window, OrderCycle, Enterprise, EnterpriseFee, Schedules, RequestMonitor, ocInstance, StatusMessage) -> + $controller('AdminEditOrderCycleCtrl', {$scope: $scope}) $scope.supplier_enterprises = Enterprise.producer_enterprises $scope.distributor_enterprises = Enterprise.hub_enterprises $scope.supplied_products = Enterprise.supplied_products - $scope.view = 'general_settings' - $scope.exchangeSelectedVariants = (exchange) -> OrderCycle.exchangeSelectedVariants(exchange) - $scope.enterpriseTotalVariants = (enterprise) -> - Enterprise.totalVariants(enterprise) - - $scope.productSuppliedToOrderCycle = (product) -> - OrderCycle.productSuppliedToOrderCycle(product) - - $scope.variantSuppliedToOrderCycle = (variant) -> - OrderCycle.variantSuppliedToOrderCycle(variant) - - $scope.incomingExchangeVariantsFor = (enterprise_id) -> - $filter('filterExchangeVariants')(OrderCycle.incomingExchangesVariants(), $scope.order_cycle.visible_variants_for_outgoing_exchanges[enterprise_id]) - $scope.exchangeDirection = (exchange) -> OrderCycle.exchangeDirection(exchange) $scope.enterprisesWithFees = -> $scope.enterprises[id] for id in OrderCycle.participatingEnterpriseIds() when $scope.enterpriseFeesForEnterprise(id).length > 0 - $scope.addSupplier = ($event) -> - $event.preventDefault() - OrderCycle.addSupplier($scope.new_supplier_id) - - $scope.addDistributor = ($event) -> - $event.preventDefault() - OrderCycle.addDistributor($scope.new_distributor_id) - $scope.removeExchange = ($event, exchange) -> $event.preventDefault() OrderCycle.removeExchange(exchange) @@ -49,6 +27,15 @@ angular.module('admin.orderCycles') $scope.removeExchangeFee = ($event, exchange, index) -> $event.preventDefault() OrderCycle.removeExchangeFee(exchange, index) + $scope.order_cycle_form.$dirty = true + + $scope.addSupplier = ($event) -> + $event.preventDefault() + OrderCycle.addSupplier($scope.new_supplier_id) + + $scope.addDistributor = ($event) -> + $event.preventDefault() + OrderCycle.addDistributor($scope.new_distributor_id) $scope.removeDistributionOfVariant = (variant_id) -> OrderCycle.removeDistributionOfVariant(variant_id) diff --git a/app/assets/javascripts/admin/order_cycles/controllers/outgoing_controller.js.coffee b/app/assets/javascripts/admin/order_cycles/controllers/outgoing_controller.js.coffee index cd614534af..6d78b81e0c 100644 --- a/app/assets/javascripts/admin/order_cycles/controllers/outgoing_controller.js.coffee +++ b/app/assets/javascripts/admin/order_cycles/controllers/outgoing_controller.js.coffee @@ -1,3 +1,13 @@ -angular.module('admin.orderCycles').controller 'AdminOrderCycleOutgoingCtrl', ($scope, $controller) -> - $controller('AdminEditOrderCycleCtrl', {$scope: $scope}) +angular.module('admin.orderCycles').controller 'AdminOrderCycleOutgoingCtrl', ($scope, $controller, $filter, OrderCycle) -> + $controller('AdminOrderCycleExchangesCtrl', {$scope: $scope}) + $scope.view = 'outgoing' + + $scope.productSuppliedToOrderCycle = (product) -> + OrderCycle.productSuppliedToOrderCycle(product) + + $scope.variantSuppliedToOrderCycle = (variant) -> + OrderCycle.variantSuppliedToOrderCycle(variant) + + $scope.incomingExchangeVariantsFor = (enterprise_id) -> + $filter('filterExchangeVariants')(OrderCycle.incomingExchangesVariants(), $scope.order_cycle.visible_variants_for_outgoing_exchanges[enterprise_id]) From 537dbd3dc0f9365ec85ce90bc891a22b1e6a7178 Mon Sep 17 00:00:00 2001 From: luisramos0 Date: Sun, 3 Nov 2019 11:40:27 +0000 Subject: [PATCH 11/19] Fix angular specs by moving specs to the same place as the code was moved previously Quite a few copy pasted specs were also removed --- .../order_cycles/controllers/create.js.coffee | 2 +- .../order_cycles/controllers/edit.js.coffee | 3 +- .../controllers/incoming_controller.js.coffee | 4 +- ...order_cycle_exchanges_controller.js.coffee | 4 +- .../controllers/outgoing_controller.js.coffee | 4 +- .../controllers/simple_create.js.coffee | 2 +- .../controllers/simple_edit.js.coffee | 2 +- .../controllers/create_spec.js.coffee | 123 +----------------- .../controllers/edit_spec.js.coffee | 113 ---------------- .../incoming_controller_spec.js.coffee | 26 ++++ ...rder_cycle_basic_controller_spec.js.coffee | 63 +++++++++ ..._cycle_exchanges_controller_spec.js.coffee | 95 ++++++++++++++ .../outgoing_controller_spec.js.coffee | 31 +++++ 13 files changed, 226 insertions(+), 246 deletions(-) create mode 100644 spec/javascripts/unit/admin/order_cycles/controllers/incoming_controller_spec.js.coffee create mode 100644 spec/javascripts/unit/admin/order_cycles/controllers/order_cycle_basic_controller_spec.js.coffee create mode 100644 spec/javascripts/unit/admin/order_cycles/controllers/order_cycle_exchanges_controller_spec.js.coffee create mode 100644 spec/javascripts/unit/admin/order_cycles/controllers/outgoing_controller_spec.js.coffee diff --git a/app/assets/javascripts/admin/order_cycles/controllers/create.js.coffee b/app/assets/javascripts/admin/order_cycles/controllers/create.js.coffee index 655b0e39da..6b9c7b2462 100644 --- a/app/assets/javascripts/admin/order_cycles/controllers/create.js.coffee +++ b/app/assets/javascripts/admin/order_cycles/controllers/create.js.coffee @@ -1,6 +1,6 @@ angular.module('admin.orderCycles') .controller 'AdminCreateOrderCycleCtrl', ($scope, $controller, $filter, $window, OrderCycle, Enterprise, EnterpriseFee, Schedules, RequestMonitor, ocInstance, StatusMessage) -> - $controller('AdminOrderCycleBasicCtrl', {$scope: $scope}) + $controller('AdminOrderCycleBasicCtrl', {$scope: $scope, ocInstance: ocInstance}) $scope.view = 'general_settings' diff --git a/app/assets/javascripts/admin/order_cycles/controllers/edit.js.coffee b/app/assets/javascripts/admin/order_cycles/controllers/edit.js.coffee index b6d6443b33..b5a80bcf69 100644 --- a/app/assets/javascripts/admin/order_cycles/controllers/edit.js.coffee +++ b/app/assets/javascripts/admin/order_cycles/controllers/edit.js.coffee @@ -1,12 +1,11 @@ angular.module('admin.orderCycles') .controller 'AdminEditOrderCycleCtrl', ($scope, $controller, $filter, $location, $window, OrderCycle, Enterprise, EnterpriseFee, StatusMessage, Schedules, RequestMonitor, ocInstance) -> - $controller('AdminOrderCycleBasicCtrl', {$scope: $scope}) + $controller('AdminOrderCycleBasicCtrl', {$scope: $scope, ocInstance: ocInstance}) $scope.view = 'general_settings' order_cycle_id = $location.absUrl().match(/\/admin\/order_cycles\/(\d+)/)[1] $scope.order_cycle = OrderCycle.load(order_cycle_id) - $scope.enterprises = Enterprise.index(order_cycle_id: order_cycle_id) $scope.enterprise_fees = EnterpriseFee.index(order_cycle_id: order_cycle_id) diff --git a/app/assets/javascripts/admin/order_cycles/controllers/incoming_controller.js.coffee b/app/assets/javascripts/admin/order_cycles/controllers/incoming_controller.js.coffee index f714bef93b..98c490b235 100644 --- a/app/assets/javascripts/admin/order_cycles/controllers/incoming_controller.js.coffee +++ b/app/assets/javascripts/admin/order_cycles/controllers/incoming_controller.js.coffee @@ -1,5 +1,5 @@ -angular.module('admin.orderCycles').controller 'AdminOrderCycleIncomingCtrl', ($scope, $controller, Enterprise) -> - $controller('AdminOrderCycleExchangesCtrl', {$scope: $scope}) +angular.module('admin.orderCycles').controller 'AdminOrderCycleIncomingCtrl', ($scope, $controller, $location, Enterprise, ocInstance) -> + $controller('AdminOrderCycleExchangesCtrl', {$scope: $scope, ocInstance: ocInstance, $location: $location}) $scope.view = 'incoming' diff --git a/app/assets/javascripts/admin/order_cycles/controllers/order_cycle_exchanges_controller.js.coffee b/app/assets/javascripts/admin/order_cycles/controllers/order_cycle_exchanges_controller.js.coffee index acd6d50f08..470beb5c19 100644 --- a/app/assets/javascripts/admin/order_cycles/controllers/order_cycle_exchanges_controller.js.coffee +++ b/app/assets/javascripts/admin/order_cycles/controllers/order_cycle_exchanges_controller.js.coffee @@ -1,6 +1,6 @@ angular.module('admin.orderCycles') - .controller 'AdminOrderCycleExchangesCtrl', ($scope, $controller, $filter, $window, OrderCycle, Enterprise, EnterpriseFee, Schedules, RequestMonitor, ocInstance, StatusMessage) -> - $controller('AdminEditOrderCycleCtrl', {$scope: $scope}) + .controller 'AdminOrderCycleExchangesCtrl', ($scope, $controller, $filter, $window, $location, OrderCycle, Enterprise, EnterpriseFee, Schedules, RequestMonitor, ocInstance, StatusMessage) -> + $controller('AdminEditOrderCycleCtrl', {$scope: $scope, ocInstance: ocInstance, $location: $location}) $scope.supplier_enterprises = Enterprise.producer_enterprises $scope.distributor_enterprises = Enterprise.hub_enterprises diff --git a/app/assets/javascripts/admin/order_cycles/controllers/outgoing_controller.js.coffee b/app/assets/javascripts/admin/order_cycles/controllers/outgoing_controller.js.coffee index 6d78b81e0c..db902aa29a 100644 --- a/app/assets/javascripts/admin/order_cycles/controllers/outgoing_controller.js.coffee +++ b/app/assets/javascripts/admin/order_cycles/controllers/outgoing_controller.js.coffee @@ -1,5 +1,5 @@ -angular.module('admin.orderCycles').controller 'AdminOrderCycleOutgoingCtrl', ($scope, $controller, $filter, OrderCycle) -> - $controller('AdminOrderCycleExchangesCtrl', {$scope: $scope}) +angular.module('admin.orderCycles').controller 'AdminOrderCycleOutgoingCtrl', ($scope, $controller, $filter, $location, OrderCycle, ocInstance) -> + $controller('AdminOrderCycleExchangesCtrl', {$scope: $scope, ocInstance: ocInstance, $location: $location}) $scope.view = 'outgoing' diff --git a/app/assets/javascripts/admin/order_cycles/controllers/simple_create.js.coffee b/app/assets/javascripts/admin/order_cycles/controllers/simple_create.js.coffee index abcd88efa6..9b87c050e9 100644 --- a/app/assets/javascripts/admin/order_cycles/controllers/simple_create.js.coffee +++ b/app/assets/javascripts/admin/order_cycles/controllers/simple_create.js.coffee @@ -1,5 +1,5 @@ angular.module('admin.orderCycles').controller "AdminSimpleCreateOrderCycleCtrl", ($scope, $controller, $window, OrderCycle, Enterprise, EnterpriseFee, StatusMessage, Schedules, RequestMonitor, ocInstance) -> - $controller('AdminOrderCycleBasicCtrl', {$scope: $scope}) + $controller('AdminOrderCycleBasicCtrl', {$scope: $scope, ocInstance: ocInstance}) $scope.order_cycle = OrderCycle.new {coordinator_id: ocInstance.coordinator_id}, => # TODO: make this a get method, which only fetches one enterprise diff --git a/app/assets/javascripts/admin/order_cycles/controllers/simple_edit.js.coffee b/app/assets/javascripts/admin/order_cycles/controllers/simple_edit.js.coffee index 6e300d3e34..645d45a4a1 100644 --- a/app/assets/javascripts/admin/order_cycles/controllers/simple_edit.js.coffee +++ b/app/assets/javascripts/admin/order_cycles/controllers/simple_edit.js.coffee @@ -1,5 +1,5 @@ angular.module('admin.orderCycles').controller "AdminSimpleEditOrderCycleCtrl", ($scope, $controller, $location, $window, OrderCycle, Enterprise, EnterpriseFee, Schedules, RequestMonitor, StatusMessage, ocInstance) -> - $controller('AdminOrderCycleBasicCtrl', {$scope: $scope}) + $controller('AdminOrderCycleBasicCtrl', {$scope: $scope, ocInstance: ocInstance}) $scope.orderCycleId = -> $location.absUrl().match(/\/admin\/order_cycles\/(\d+)/)[1] diff --git a/spec/javascripts/unit/admin/order_cycles/controllers/create_spec.js.coffee b/spec/javascripts/unit/admin/order_cycles/controllers/create_spec.js.coffee index d07c80f542..7b13e645fc 100644 --- a/spec/javascripts/unit/admin/order_cycles/controllers/create_spec.js.coffee +++ b/spec/javascripts/unit/admin/order_cycles/controllers/create_spec.js.coffee @@ -8,46 +8,23 @@ describe 'AdminCreateOrderCycleCtrl', -> beforeEach -> scope = - order_cycle_form: jasmine.createSpyObj('order_cycle_form', ['$dirty']) $watch: jasmine.createSpy('$watch') - event = - preventDefault: jasmine.createSpy('preventDefault') OrderCycle = - exchangeSelectedVariants: jasmine.createSpy('exchangeSelectedVariants').and.returnValue('variants selected') - productSuppliedToOrderCycle: jasmine.createSpy('productSuppliedToOrderCycle').and.returnValue('product supplied') - variantSuppliedToOrderCycle: jasmine.createSpy('variantSuppliedToOrderCycle').and.returnValue('variant supplied') - exchangeDirection: jasmine.createSpy('exchangeDirection').and.returnValue('exchange direction') - toggleProducts: jasmine.createSpy('toggleProducts') - setExchangeVariants: jasmine.createSpy('setExchangeVariants') - addSupplier: jasmine.createSpy('addSupplier') - addDistributor: jasmine.createSpy('addDistributor') - removeExchange: jasmine.createSpy('removeExchange') - addCoordinatorFee: jasmine.createSpy('addCoordinatorFee') - removeCoordinatorFee: jasmine.createSpy('removeCoordinatorFee') - addExchangeFee: jasmine.createSpy('addExchangeFee') - removeExchangeFee: jasmine.createSpy('removeExchangeFee') - removeDistributionOfVariant: jasmine.createSpy('removeDistributionOfVariant') create: jasmine.createSpy('create') new: jasmine.createSpy('new').and.returnValue "my order cycle" Enterprise = index: jasmine.createSpy('index').and.returnValue('enterprises list') - supplied_products: 'supplied products' - suppliedVariants: jasmine.createSpy('suppliedVariants').and.returnValue('supplied variants') - totalVariants: jasmine.createSpy('totalVariants').and.returnValue('variants total') EnterpriseFee = index: jasmine.createSpy('index').and.returnValue('enterprise fees list') - forEnterprise: jasmine.createSpy('forEnterprise').and.returnValue('enterprise fees for enterprise') ocInstance = {} module('admin.orderCycles') inject ($controller) -> ctrl = $controller 'AdminCreateOrderCycleCtrl', {$scope: scope, OrderCycle: OrderCycle, Enterprise: Enterprise, EnterpriseFee: EnterpriseFee, ocInstance: ocInstance} - - it 'Loads enterprises and supplied products', -> + it 'Loads enterprises', -> expect(Enterprise.index).toHaveBeenCalled() expect(scope.enterprises).toEqual('enterprises list') - expect(scope.supplied_products).toEqual('supplied products') it 'Loads enterprise fees', -> expect(EnterpriseFee.index).toHaveBeenCalled() @@ -56,104 +33,6 @@ describe 'AdminCreateOrderCycleCtrl', -> it 'Loads order cycles', -> expect(scope.order_cycle).toEqual('my order cycle') - describe 'Reporting when all resources are loaded', -> - beforeEach inject (RequestMonitor) -> - RequestMonitor.loading = false - Enterprise.loaded = true - EnterpriseFee.loaded = true - OrderCycle.loaded = true - - it 'returns true when all resources are loaded', -> - expect(scope.loaded()).toBe(true) - - it 'returns false otherwise', -> - EnterpriseFee.loaded = false - expect(scope.loaded()).toBe(false) - - it "delegates suppliedVariants to Enterprise", -> - expect(scope.suppliedVariants('enterprise_id')).toEqual('supplied variants') - expect(Enterprise.suppliedVariants).toHaveBeenCalledWith('enterprise_id') - - it 'Delegates exchangeSelectedVariants to OrderCycle', -> - expect(scope.exchangeSelectedVariants('exchange')).toEqual('variants selected') - expect(OrderCycle.exchangeSelectedVariants).toHaveBeenCalledWith('exchange') - - it "delegates setExchangeVariants to OrderCycle", -> - scope.setExchangeVariants('exchange', 'variants', 'selected') - expect(OrderCycle.setExchangeVariants).toHaveBeenCalledWith('exchange', 'variants', 'selected') - - it 'Delegates enterpriseTotalVariants to Enterprise', -> - expect(scope.enterpriseTotalVariants('enterprise')).toEqual('variants total') - expect(Enterprise.totalVariants).toHaveBeenCalledWith('enterprise') - - it 'Delegates productSuppliedToOrderCycle to OrderCycle', -> - expect(scope.productSuppliedToOrderCycle('product')).toEqual('product supplied') - expect(OrderCycle.productSuppliedToOrderCycle).toHaveBeenCalledWith('product') - - it 'Delegates variantSuppliedToOrderCycle to OrderCycle', -> - expect(scope.variantSuppliedToOrderCycle('variant')).toEqual('variant supplied') - expect(OrderCycle.variantSuppliedToOrderCycle).toHaveBeenCalledWith('variant') - - it 'Delegates exchangeDirection to OrderCycle', -> - expect(scope.exchangeDirection('exchange')).toEqual('exchange direction') - expect(OrderCycle.exchangeDirection).toHaveBeenCalledWith('exchange') - - it 'Finds enterprises participating in the order cycle that have fees', -> - scope.enterprises = - 1: {id: 1, name: 'Eaterprises'} - 2: {id: 2, name: 'Pepper Tree Place'} - 3: {id: 3, name: 'South East'} - OrderCycle.participatingEnterpriseIds = jasmine.createSpy('participatingEnterpriseIds').and.returnValue([2]) - EnterpriseFee.enterprise_fees = [ {enterprise_id: 2} ] # Pepper Tree Place has a fee - expect(scope.enterprisesWithFees()).toEqual([ - {id: 2, name: 'Pepper Tree Place'} - ]) - - it 'Delegates enterpriseFeesForEnterprise to EnterpriseFee', -> - scope.enterpriseFeesForEnterprise('123') - expect(EnterpriseFee.forEnterprise).toHaveBeenCalledWith(123) - - it 'Adds order cycle suppliers', -> - scope.new_supplier_id = 'new supplier id' - scope.addSupplier(event) - expect(event.preventDefault).toHaveBeenCalled() - expect(OrderCycle.addSupplier).toHaveBeenCalledWith('new supplier id') - - it 'Adds order cycle distributors', -> - scope.new_distributor_id = 'new distributor id' - scope.addDistributor(event) - expect(event.preventDefault).toHaveBeenCalled() - expect(OrderCycle.addDistributor).toHaveBeenCalledWith('new distributor id') - - it 'Removes order cycle exchanges', -> - scope.removeExchange(event, 'exchange') - expect(event.preventDefault).toHaveBeenCalled() - expect(OrderCycle.removeExchange).toHaveBeenCalledWith('exchange') - - it 'Adds coordinator fees', -> - scope.addCoordinatorFee(event) - expect(event.preventDefault).toHaveBeenCalled() - expect(OrderCycle.addCoordinatorFee).toHaveBeenCalled() - - it 'Removes coordinator fees', -> - scope.removeCoordinatorFee(event, 0) - expect(event.preventDefault).toHaveBeenCalled() - expect(OrderCycle.removeCoordinatorFee).toHaveBeenCalledWith(0) - - it 'Adds exchange fees', -> - scope.addExchangeFee(event) - expect(event.preventDefault).toHaveBeenCalled() - expect(OrderCycle.addExchangeFee).toHaveBeenCalled() - - it 'Removes exchange fees', -> - scope.removeExchangeFee(event, 'exchange', 0) - expect(event.preventDefault).toHaveBeenCalled() - expect(OrderCycle.removeExchangeFee).toHaveBeenCalledWith('exchange', 0) - - it 'Removes distribution of a variant', -> - scope.removeDistributionOfVariant('variant') - expect(OrderCycle.removeDistributionOfVariant).toHaveBeenCalledWith('variant') - it 'Submits the order cycle via OrderCycle create', -> eventMock = {preventDefault: jasmine.createSpy()} scope.submit(eventMock,'/admin/order_cycles') diff --git a/spec/javascripts/unit/admin/order_cycles/controllers/edit_spec.js.coffee b/spec/javascripts/unit/admin/order_cycles/controllers/edit_spec.js.coffee index 45024ef175..2e762a17c9 100644 --- a/spec/javascripts/unit/admin/order_cycles/controllers/edit_spec.js.coffee +++ b/spec/javascripts/unit/admin/order_cycles/controllers/edit_spec.js.coffee @@ -18,29 +18,12 @@ describe 'AdminEditOrderCycleCtrl', -> 'example.com/admin/order_cycles/27/edit' OrderCycle = load: jasmine.createSpy('load') - exchangeSelectedVariants: jasmine.createSpy('exchangeSelectedVariants').and.returnValue('variants selected') - productSuppliedToOrderCycle: jasmine.createSpy('productSuppliedToOrderCycle').and.returnValue('product supplied') - variantSuppliedToOrderCycle: jasmine.createSpy('variantSuppliedToOrderCycle').and.returnValue('variant supplied') - exchangeDirection: jasmine.createSpy('exchangeDirection').and.returnValue('exchange direction') - toggleProducts: jasmine.createSpy('toggleProducts') - setExchangeVariants: jasmine.createSpy('setExchangeVariants') - addSupplier: jasmine.createSpy('addSupplier') - addDistributor: jasmine.createSpy('addDistributor') - removeExchange: jasmine.createSpy('removeExchange') - addCoordinatorFee: jasmine.createSpy('addCoordinatorFee') removeCoordinatorFee: jasmine.createSpy('removeCoordinatorFee') - addExchangeFee: jasmine.createSpy('addExchangeFee') - removeExchangeFee: jasmine.createSpy('removeExchangeFee') - removeDistributionOfVariant: jasmine.createSpy('removeDistributionOfVariant') update: jasmine.createSpy('update') Enterprise = index: jasmine.createSpy('index').and.returnValue('enterprises list') - supplied_products: 'supplied products' - suppliedVariants: jasmine.createSpy('suppliedVariants').and.returnValue('supplied variants') - totalVariants: jasmine.createSpy('totalVariants').and.returnValue('variants total') EnterpriseFee = index: jasmine.createSpy('index').and.returnValue('enterprise fees list') - forEnterprise: jasmine.createSpy('forEnterprise').and.returnValue('enterprise fees for enterprise') ocInstance = {} module('admin.orderCycles') @@ -50,7 +33,6 @@ describe 'AdminEditOrderCycleCtrl', -> it 'Loads enterprises and supplied products', -> expect(Enterprise.index).toHaveBeenCalled() expect(scope.enterprises).toEqual('enterprises list') - expect(scope.supplied_products).toEqual('supplied products') it 'Loads enterprise fees', -> expect(EnterpriseFee.index).toHaveBeenCalled() @@ -59,107 +41,12 @@ describe 'AdminEditOrderCycleCtrl', -> it 'Loads order cycles', -> expect(OrderCycle.load).toHaveBeenCalledWith('27') - describe 'Reporting when all resources are loaded', -> - beforeEach inject (RequestMonitor) -> - RequestMonitor.loading = false - Enterprise.loaded = true - EnterpriseFee.loaded = true - OrderCycle.loaded = true - - it 'returns true when all resources are loaded', -> - expect(scope.loaded()).toBe(true) - - it 'returns false otherwise', -> - EnterpriseFee.loaded = false - expect(scope.loaded()).toBe(false) - - it "delegates suppliedVariants to Enterprise", -> - expect(scope.suppliedVariants('enterprise_id')).toEqual('supplied variants') - expect(Enterprise.suppliedVariants).toHaveBeenCalledWith('enterprise_id') - - it 'Delegates exchangeSelectedVariants to OrderCycle', -> - expect(scope.exchangeSelectedVariants('exchange')).toEqual('variants selected') - expect(OrderCycle.exchangeSelectedVariants).toHaveBeenCalledWith('exchange') - - it "delegates setExchangeVariants to OrderCycle", -> - scope.setExchangeVariants('exchange', 'variants', 'selected') - expect(OrderCycle.setExchangeVariants).toHaveBeenCalledWith('exchange', 'variants', 'selected') - - it 'Delegates totalVariants to Enterprise', -> - expect(scope.enterpriseTotalVariants('enterprise')).toEqual('variants total') - expect(Enterprise.totalVariants).toHaveBeenCalledWith('enterprise') - - it 'Delegates productSuppliedToOrderCycle to OrderCycle', -> - expect(scope.productSuppliedToOrderCycle('product')).toEqual('product supplied') - expect(OrderCycle.productSuppliedToOrderCycle).toHaveBeenCalledWith('product') - - it 'Delegates variantSuppliedToOrderCycle to OrderCycle', -> - expect(scope.variantSuppliedToOrderCycle('variant')).toEqual('variant supplied') - expect(OrderCycle.variantSuppliedToOrderCycle).toHaveBeenCalledWith('variant') - - it 'Delegates exchangeDirection to OrderCycle', -> - expect(scope.exchangeDirection('exchange')).toEqual('exchange direction') - expect(OrderCycle.exchangeDirection).toHaveBeenCalledWith('exchange') - - it 'Finds enterprises participating in the order cycle that have fees', -> - scope.enterprises = - 1: {id: 1, name: 'Eaterprises'} - 2: {id: 2, name: 'Pepper Tree Place'} - 3: {id: 3, name: 'South East'} - OrderCycle.participatingEnterpriseIds = jasmine.createSpy('participatingEnterpriseIds').and.returnValue([2]) - EnterpriseFee.enterprise_fees = [ {enterprise_id: 2} ] # Pepper Tree Place has a fee - expect(scope.enterprisesWithFees()).toEqual([ - {id: 2, name: 'Pepper Tree Place'} - ]) - - it 'Delegates enterpriseFeesForEnterprise to EnterpriseFee', -> - scope.enterpriseFeesForEnterprise('123') - expect(EnterpriseFee.forEnterprise).toHaveBeenCalledWith(123) - - it 'Adds order cycle suppliers', -> - scope.new_supplier_id = 'new supplier id' - scope.addSupplier(event) - expect(event.preventDefault).toHaveBeenCalled() - expect(OrderCycle.addSupplier).toHaveBeenCalledWith('new supplier id') - - it 'Adds order cycle distributors', -> - scope.new_distributor_id = 'new distributor id' - scope.addDistributor(event) - expect(event.preventDefault).toHaveBeenCalled() - expect(OrderCycle.addDistributor).toHaveBeenCalledWith('new distributor id') - - it 'Removes order cycle exchanges', -> - scope.removeExchange(event, 'exchange') - expect(event.preventDefault).toHaveBeenCalled() - expect(OrderCycle.removeExchange).toHaveBeenCalledWith('exchange') - expect(scope.order_cycle_form.$dirty).toEqual true - - it 'Adds coordinator fees', -> - scope.addCoordinatorFee(event) - expect(event.preventDefault).toHaveBeenCalled() - expect(OrderCycle.addCoordinatorFee).toHaveBeenCalled() - it 'Removes coordinator fees', -> scope.removeCoordinatorFee(event, 0) expect(event.preventDefault).toHaveBeenCalled() expect(OrderCycle.removeCoordinatorFee).toHaveBeenCalledWith(0) expect(scope.order_cycle_form.$dirty).toEqual true - it 'Adds exchange fees', -> - scope.addExchangeFee(event) - expect(event.preventDefault).toHaveBeenCalled() - expect(OrderCycle.addExchangeFee).toHaveBeenCalled() - - it 'Removes exchange fees', -> - scope.removeExchangeFee(event, 'exchange', 0) - expect(event.preventDefault).toHaveBeenCalled() - expect(OrderCycle.removeExchangeFee).toHaveBeenCalledWith('exchange', 0) - expect(scope.order_cycle_form.$dirty).toEqual true - - it 'Removes distribution of a variant', -> - scope.removeDistributionOfVariant('variant') - expect(OrderCycle.removeDistributionOfVariant).toHaveBeenCalledWith('variant') - it 'Submits the order cycle via OrderCycle update', -> eventMock = {preventDefault: jasmine.createSpy()} scope.submit(eventMock,'/admin/order_cycles') diff --git a/spec/javascripts/unit/admin/order_cycles/controllers/incoming_controller_spec.js.coffee b/spec/javascripts/unit/admin/order_cycles/controllers/incoming_controller_spec.js.coffee new file mode 100644 index 0000000000..77f17eb419 --- /dev/null +++ b/spec/javascripts/unit/admin/order_cycles/controllers/incoming_controller_spec.js.coffee @@ -0,0 +1,26 @@ +describe 'AdminOrderCycleIncomingCtrl', -> + ctrl = null + scope = null + event = null + location = null + OrderCycle = null + Enterprise = null + EnterpriseFee = null + + beforeEach -> + scope = + $watch: jasmine.createSpy('$watch') + location = + absUrl: -> + 'example.com/admin/order_cycles/27/edit' + Enterprise = + totalVariants: jasmine.createSpy('totalVariants').and.returnValue('variants total') + ocInstance = {} + + module('admin.orderCycles') + inject ($controller) -> + ctrl = $controller 'AdminOrderCycleIncomingCtrl', {$scope: scope, $location: location, OrderCycle: OrderCycle, Enterprise: Enterprise, EnterpriseFee: EnterpriseFee, ocInstance: ocInstance} + + it 'Delegates totalVariants to Enterprise', -> + expect(scope.enterpriseTotalVariants('enterprise')).toEqual('variants total') + expect(Enterprise.totalVariants).toHaveBeenCalledWith('enterprise') diff --git a/spec/javascripts/unit/admin/order_cycles/controllers/order_cycle_basic_controller_spec.js.coffee b/spec/javascripts/unit/admin/order_cycles/controllers/order_cycle_basic_controller_spec.js.coffee new file mode 100644 index 0000000000..cc00e16074 --- /dev/null +++ b/spec/javascripts/unit/admin/order_cycles/controllers/order_cycle_basic_controller_spec.js.coffee @@ -0,0 +1,63 @@ +describe 'AdminOrderCycleBasicCtrl', -> + ctrl = null + scope = null + event = null + location = null + OrderCycle = null + Enterprise = null + EnterpriseFee = null + + beforeEach -> + scope = + $watch: jasmine.createSpy('$watch') + event = + preventDefault: jasmine.createSpy('preventDefault') + OrderCycle = + setExchangeVariants: jasmine.createSpy('setExchangeVariants') + addCoordinatorFee: jasmine.createSpy('addCoordinatorFee') + removeCoordinatorFee: jasmine.createSpy('removeCoordinatorFee') + Enterprise = + suppliedVariants: jasmine.createSpy('suppliedVariants').and.returnValue('supplied variants') + EnterpriseFee = + forEnterprise: jasmine.createSpy('forEnterprise').and.returnValue('enterprise fees for enterprise') + ocInstance = {} + + module('admin.orderCycles') + inject ($controller) -> + ctrl = $controller 'AdminOrderCycleBasicCtrl', {$scope: scope, $location: location, OrderCycle: OrderCycle, Enterprise: Enterprise, EnterpriseFee: EnterpriseFee, ocInstance: ocInstance} + + describe 'Reporting when all resources are loaded', -> + beforeEach inject (RequestMonitor) -> + RequestMonitor.loading = false + Enterprise.loaded = true + EnterpriseFee.loaded = true + OrderCycle.loaded = true + + it 'returns true when all resources are loaded', -> + expect(scope.loaded()).toBe(true) + + it 'returns false otherwise', -> + EnterpriseFee.loaded = false + expect(scope.loaded()).toBe(false) + + it "delegates suppliedVariants to Enterprise", -> + expect(scope.suppliedVariants('enterprise_id')).toEqual('supplied variants') + expect(Enterprise.suppliedVariants).toHaveBeenCalledWith('enterprise_id') + + it "delegates setExchangeVariants to OrderCycle", -> + scope.setExchangeVariants('exchange', 'variants', 'selected') + expect(OrderCycle.setExchangeVariants).toHaveBeenCalledWith('exchange', 'variants', 'selected') + + it 'Delegates enterpriseFeesForEnterprise to EnterpriseFee', -> + scope.enterpriseFeesForEnterprise('123') + expect(EnterpriseFee.forEnterprise).toHaveBeenCalledWith(123) + + it 'Adds coordinator fees', -> + scope.addCoordinatorFee(event) + expect(event.preventDefault).toHaveBeenCalled() + expect(OrderCycle.addCoordinatorFee).toHaveBeenCalled() + + it 'Removes coordinator fees', -> + scope.removeCoordinatorFee(event, 0) + expect(event.preventDefault).toHaveBeenCalled() + expect(OrderCycle.removeCoordinatorFee).toHaveBeenCalledWith(0) diff --git a/spec/javascripts/unit/admin/order_cycles/controllers/order_cycle_exchanges_controller_spec.js.coffee b/spec/javascripts/unit/admin/order_cycles/controllers/order_cycle_exchanges_controller_spec.js.coffee new file mode 100644 index 0000000000..adfa3b207c --- /dev/null +++ b/spec/javascripts/unit/admin/order_cycles/controllers/order_cycle_exchanges_controller_spec.js.coffee @@ -0,0 +1,95 @@ +describe 'AdminOrderCycleExchangesCtrl', -> + ctrl = null + scope = null + event = null + location = null + OrderCycle = null + Enterprise = null + EnterpriseFee = null + + beforeEach -> + scope = + order_cycle_form: jasmine.createSpyObj('order_cycle_form', ['$dirty', '$setPristine']) + $watch: jasmine.createSpy('$watch') + event = + preventDefault: jasmine.createSpy('preventDefault') + location = + absUrl: -> + 'example.com/admin/order_cycles/27/edit' + OrderCycle = + exchangeSelectedVariants: jasmine.createSpy('exchangeSelectedVariants').and.returnValue('variants selected') + exchangeDirection: jasmine.createSpy('exchangeDirection').and.returnValue('exchange direction') + addSupplier: jasmine.createSpy('addSupplier') + addDistributor: jasmine.createSpy('addDistributor') + removeExchange: jasmine.createSpy('removeExchange') + addExchangeFee: jasmine.createSpy('addExchangeFee') + removeExchangeFee: jasmine.createSpy('removeExchangeFee') + removeDistributionOfVariant: jasmine.createSpy('removeDistributionOfVariant') + Enterprise = + supplied_products: 'supplied products' + EnterpriseFee = + forEnterprise: jasmine.createSpy('forEnterprise').and.returnValue('enterprise fees for enterprise') + ocInstance = {} + + module('admin.orderCycles') + inject ($controller) -> + ctrl = $controller 'AdminOrderCycleExchangesCtrl', {$scope: scope, $location: location, OrderCycle: OrderCycle, Enterprise: Enterprise, EnterpriseFee: EnterpriseFee, ocInstance: ocInstance} + + it 'Loads supplied products', -> + expect(scope.supplied_products).toEqual('supplied products') + + it 'Delegates exchangeSelectedVariants to OrderCycle', -> + expect(scope.exchangeSelectedVariants('exchange')).toEqual('variants selected') + expect(OrderCycle.exchangeSelectedVariants).toHaveBeenCalledWith('exchange') + + it 'Delegates exchangeDirection to OrderCycle', -> + expect(scope.exchangeDirection('exchange')).toEqual('exchange direction') + expect(OrderCycle.exchangeDirection).toHaveBeenCalledWith('exchange') + + it 'Finds enterprises participating in the order cycle that have fees', -> + # this is inhetited from order_cycle_basic_controller + scope.enterpriseFeesForEnterprise = (enterprise_id) -> + EnterpriseFee.forEnterprise(parseInt(enterprise_id)) + scope.enterprises = + 1: {id: 1, name: 'Eaterprises'} + 2: {id: 2, name: 'Pepper Tree Place'} + 3: {id: 3, name: 'South East'} + OrderCycle.participatingEnterpriseIds = jasmine.createSpy('participatingEnterpriseIds').and.returnValue([2]) + EnterpriseFee.enterprise_fees = [ {enterprise_id: 2} ] # Pepper Tree Place has a fee + expect(scope.enterprisesWithFees()).toEqual([ + {id: 2, name: 'Pepper Tree Place'} + ]) + + it 'Removes order cycle exchanges', -> + scope.removeExchange(event, 'exchange') + expect(event.preventDefault).toHaveBeenCalled() + expect(OrderCycle.removeExchange).toHaveBeenCalledWith('exchange') + expect(scope.order_cycle_form.$dirty).toEqual true + + it 'Adds exchange fees', -> + scope.addExchangeFee(event) + expect(event.preventDefault).toHaveBeenCalled() + expect(OrderCycle.addExchangeFee).toHaveBeenCalled() + + it 'Removes exchange fees', -> + scope.removeExchangeFee(event, 'exchange', 0) + expect(event.preventDefault).toHaveBeenCalled() + expect(OrderCycle.removeExchangeFee).toHaveBeenCalledWith('exchange', 0) + expect(scope.order_cycle_form.$dirty).toEqual true + + it 'Adds order cycle suppliers', -> + scope.new_supplier_id = 'new supplier id' + scope.addSupplier(event) + expect(event.preventDefault).toHaveBeenCalled() + expect(OrderCycle.addSupplier).toHaveBeenCalledWith('new supplier id') + + it 'Adds order cycle distributors', -> + scope.new_distributor_id = 'new distributor id' + scope.addDistributor(event) + expect(event.preventDefault).toHaveBeenCalled() + expect(OrderCycle.addDistributor).toHaveBeenCalledWith('new distributor id') + + it 'Removes distribution of a variant', -> + scope.removeDistributionOfVariant('variant') + expect(OrderCycle.removeDistributionOfVariant).toHaveBeenCalledWith('variant') + diff --git a/spec/javascripts/unit/admin/order_cycles/controllers/outgoing_controller_spec.js.coffee b/spec/javascripts/unit/admin/order_cycles/controllers/outgoing_controller_spec.js.coffee new file mode 100644 index 0000000000..1b206bb683 --- /dev/null +++ b/spec/javascripts/unit/admin/order_cycles/controllers/outgoing_controller_spec.js.coffee @@ -0,0 +1,31 @@ +describe 'AdminOrderCycleOutgoingCtrl', -> + ctrl = null + scope = null + event = null + location = null + OrderCycle = null + Enterprise = null + EnterpriseFee = null + + beforeEach -> + scope = + $watch: jasmine.createSpy('$watch') + location = + absUrl: -> + 'example.com/admin/order_cycles/27/edit' + OrderCycle = + productSuppliedToOrderCycle: jasmine.createSpy('productSuppliedToOrderCycle').and.returnValue('product supplied') + variantSuppliedToOrderCycle: jasmine.createSpy('variantSuppliedToOrderCycle').and.returnValue('variant supplied') + ocInstance = {} + + module('admin.orderCycles') + inject ($controller) -> + ctrl = $controller 'AdminOrderCycleOutgoingCtrl', {$scope: scope, $location: location, OrderCycle: OrderCycle, Enterprise: Enterprise, EnterpriseFee: EnterpriseFee, ocInstance: ocInstance} + + it 'Delegates productSuppliedToOrderCycle to OrderCycle', -> + expect(scope.productSuppliedToOrderCycle('product')).toEqual('product supplied') + expect(OrderCycle.productSuppliedToOrderCycle).toHaveBeenCalledWith('product') + + it 'Delegates variantSuppliedToOrderCycle to OrderCycle', -> + expect(scope.variantSuppliedToOrderCycle('variant')).toEqual('variant supplied') + expect(OrderCycle.variantSuppliedToOrderCycle).toHaveBeenCalledWith('variant') From 43cf249184ba38f1a1cb7af36b224f9d72ee22c9 Mon Sep 17 00:00:00 2001 From: luisramos0 Date: Sun, 3 Nov 2019 14:49:08 +0000 Subject: [PATCH 12/19] Make NoDistributors warning only appear on simple_create and simple_edit and outgoing settings --- .../order_cycles/controllers/outgoing_controller.js.coffee | 7 ++++++- .../admin/order_cycles/controllers/simple_create.js.coffee | 2 +- .../admin/order_cycles/controllers/simple_edit.js.coffee | 2 +- .../admin/order_cycles/services/order_cycle.js.coffee | 3 --- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/app/assets/javascripts/admin/order_cycles/controllers/outgoing_controller.js.coffee b/app/assets/javascripts/admin/order_cycles/controllers/outgoing_controller.js.coffee index db902aa29a..91da3aa8eb 100644 --- a/app/assets/javascripts/admin/order_cycles/controllers/outgoing_controller.js.coffee +++ b/app/assets/javascripts/admin/order_cycles/controllers/outgoing_controller.js.coffee @@ -1,4 +1,4 @@ -angular.module('admin.orderCycles').controller 'AdminOrderCycleOutgoingCtrl', ($scope, $controller, $filter, $location, OrderCycle, ocInstance) -> +angular.module('admin.orderCycles').controller 'AdminOrderCycleOutgoingCtrl', ($scope, $controller, $filter, $location, OrderCycle, ocInstance, StatusMessage) -> $controller('AdminOrderCycleExchangesCtrl', {$scope: $scope, ocInstance: ocInstance, $location: $location}) $scope.view = 'outgoing' @@ -11,3 +11,8 @@ angular.module('admin.orderCycles').controller 'AdminOrderCycleOutgoingCtrl', ($ $scope.incomingExchangeVariantsFor = (enterprise_id) -> $filter('filterExchangeVariants')(OrderCycle.incomingExchangesVariants(), $scope.order_cycle.visible_variants_for_outgoing_exchanges[enterprise_id]) + + $scope.submit = ($event, destination) -> + $event.preventDefault() + StatusMessage.display 'progress', t('js.saving') + OrderCycle.update(destination, $scope.order_cycle_form) if OrderCycle.confirmNoDistributors() diff --git a/app/assets/javascripts/admin/order_cycles/controllers/simple_create.js.coffee b/app/assets/javascripts/admin/order_cycles/controllers/simple_create.js.coffee index 9b87c050e9..545b35e97b 100644 --- a/app/assets/javascripts/admin/order_cycles/controllers/simple_create.js.coffee +++ b/app/assets/javascripts/admin/order_cycles/controllers/simple_create.js.coffee @@ -25,4 +25,4 @@ angular.module('admin.orderCycles').controller "AdminSimpleCreateOrderCycleCtrl" $event.preventDefault() StatusMessage.display 'progress', t('js.saving') OrderCycle.mirrorIncomingToOutgoingProducts() - OrderCycle.create(destination) + OrderCycle.create(destination) if OrderCycle.confirmNoDistributors() diff --git a/app/assets/javascripts/admin/order_cycles/controllers/simple_edit.js.coffee b/app/assets/javascripts/admin/order_cycles/controllers/simple_edit.js.coffee index 645d45a4a1..29cefaceed 100644 --- a/app/assets/javascripts/admin/order_cycles/controllers/simple_edit.js.coffee +++ b/app/assets/javascripts/admin/order_cycles/controllers/simple_edit.js.coffee @@ -18,4 +18,4 @@ angular.module('admin.orderCycles').controller "AdminSimpleEditOrderCycleCtrl", $event.preventDefault() StatusMessage.display 'progress', t('js.saving') OrderCycle.mirrorIncomingToOutgoingProducts() - OrderCycle.update(destination, $scope.order_cycle_form) + OrderCycle.update(destination, $scope.order_cycle_form) if OrderCycle.confirmNoDistributors() diff --git a/app/assets/javascripts/admin/order_cycles/services/order_cycle.js.coffee b/app/assets/javascripts/admin/order_cycles/services/order_cycle.js.coffee index cac1c9ca87..a10d599c9e 100644 --- a/app/assets/javascripts/admin/order_cycles/services/order_cycle.js.coffee +++ b/app/assets/javascripts/admin/order_cycles/services/order_cycle.js.coffee @@ -148,7 +148,6 @@ angular.module('admin.orderCycles').factory 'OrderCycle', ($resource, $window, S this.order_cycle create: (destination) -> - return unless @confirmNoDistributors() oc = new OrderCycleResource({order_cycle: this.dataForSubmit()}) oc.$create (data) -> $window.location = destination @@ -159,7 +158,6 @@ angular.module('admin.orderCycles').factory 'OrderCycle', ($resource, $window, S StatusMessage.display('failure', t('js.order_cycles.create_failure')) update: (destination, form) -> - return unless @confirmNoDistributors() oc = new OrderCycleResource({order_cycle: this.dataForSubmit()}) oc.$update {order_cycle_id: this.order_cycle.id, reloading: (if destination? then 1 else 0)}, (data) => form.$setPristine() if form @@ -173,7 +171,6 @@ angular.module('admin.orderCycles').factory 'OrderCycle', ($resource, $window, S else StatusMessage.display('failure', t('js.order_cycles.update_failure')) - confirmNoDistributors: -> if @order_cycle.outgoing_exchanges.length == 0 confirm t('js.order_cycles.no_distributors') From 46d00230181e938ad3f41bf13a225307953dd7e0 Mon Sep 17 00:00:00 2001 From: luisramos0 Date: Sun, 3 Nov 2019 15:18:54 +0000 Subject: [PATCH 13/19] Adapt OC spec to new page flow with 3 steps --- spec/features/admin/order_cycles_spec.rb | 41 +++++++++++++----------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/spec/features/admin/order_cycles_spec.rb b/spec/features/admin/order_cycles_spec.rb index 95074e18d1..c3c5006ae7 100644 --- a/spec/features/admin/order_cycles_spec.rb +++ b/spec/features/admin/order_cycles_spec.rb @@ -196,6 +196,9 @@ feature ' click_button 'Add coordinator fee' select 'Coord fee', from: 'order_cycle_coordinator_fee_0_id' + click_button 'Create' + expect(page).to have_content 'Your order cycle has been created.' + # I should not be able to add a blank supplier expect(page).to have_select 'new_supplier_id', selected: '' expect(page).to have_button 'Add supplier', disabled: true @@ -218,6 +221,8 @@ feature ' select 'My supplier', from: 'order_cycle_incoming_exchange_0_enterprise_fees_0_enterprise_id' select 'Supplier fee', from: 'order_cycle_incoming_exchange_0_enterprise_fees_0_enterprise_fee_id' + click_button 'Save and Next' + # And I add a distributor with the same products select 'My distributor', from: 'new_distributor_id' click_button 'Add distributor' @@ -239,14 +244,9 @@ feature ' select 'My distributor', from: 'order_cycle_outgoing_exchange_0_enterprise_fees_0_enterprise_id' select 'Distributor fee', from: 'order_cycle_outgoing_exchange_0_enterprise_fees_0_enterprise_fee_id' - # And I click Create - click_button 'Create' - - # Then my order cycle should have been created - expect(page).to have_content 'Your order cycle has been created.' + click_button 'Save and Back to List' oc = OrderCycle.last - toggle_columns "Producers", "Shops" expect(page).to have_input "oc#{oc.id}[name]", value: "Plums & Avos" @@ -316,9 +316,6 @@ feature ' fill_in 'order_cycle_orders_open_at', with: order_cycle_opening_time fill_in 'order_cycle_orders_close_at', with: order_cycle_closing_time - # CAN'T CHANGE COORDINATOR ANYMORE - # select 'My coordinator', from: 'order_cycle_coordinator_id' - # And I configure some coordinator fees click_button 'Add coordinator fee' select 'Coord fee 1', from: 'order_cycle_coordinator_fee_0_id' @@ -327,6 +324,9 @@ feature ' click_link 'order_cycle_coordinator_fee_2_remove' select 'Coord fee 2', from: 'order_cycle_coordinator_fee_1_id' + click_button 'Save and Next' + expect(page).to have_content 'Your order cycle has been updated.' + # And I add a supplier and some products select 'My supplier', from: 'new_supplier_id' click_button 'Add supplier' @@ -347,6 +347,8 @@ feature ' select 'My supplier', from: 'order_cycle_incoming_exchange_2_enterprise_fees_0_enterprise_id' select 'Supplier fee 2', from: 'order_cycle_incoming_exchange_2_enterprise_fees_0_enterprise_fee_id' + click_button 'Save and Next' + # And I add a distributor and some products select 'My distributor', from: 'new_distributor_id' click_button 'Add distributor' @@ -378,15 +380,10 @@ feature ' select 'My distributor', from: 'order_cycle_outgoing_exchange_2_enterprise_fees_0_enterprise_id' select 'Distributor fee 2', from: 'order_cycle_outgoing_exchange_2_enterprise_fees_0_enterprise_fee_id' - # And I click Update expect(page).to have_selector "#save-bar" - click_button 'Update and Close' - - # Then my order cycle should have been updated - expect(page).to have_content 'Your order cycle has been updated.' + click_button 'Save and Back to List' oc = OrderCycle.last - toggle_columns "Producers", "Shops" expect(page).to have_input "oc#{oc.id}[name]", value: "Plums & Avos" @@ -439,6 +436,8 @@ feature ' expect(page.find('#order_cycle_orders_close_at').value).to eq(oc.orders_close_at.to_s) expect(page).to have_content "COORDINATOR #{oc.coordinator.name}" + click_button 'Next' + # And I should see the suppliers expect(page).to have_selector 'td.supplier_name', text: oc.suppliers.first.name expect(page).to have_selector 'td.supplier_name', text: oc.suppliers.last.name @@ -465,6 +464,8 @@ feature ' expect(page).to have_select 'order_cycle_incoming_exchange_1_enterprise_fees_0_enterprise_id', selected: supplier.name expect(page).to have_select 'order_cycle_incoming_exchange_1_enterprise_fees_0_enterprise_fee_id', selected: supplier.enterprise_fees.first.name + click_button 'Next' + # And I should see the distributors expect(page).to have_selector 'td.distributor_name', text: oc.distributors.first.name expect(page).to have_selector 'td.distributor_name', text: oc.distributors.last.name @@ -505,13 +506,15 @@ feature ' # When I edit the first order cycle, the exchange should appear as incoming quick_login_as_admin - visit edit_admin_order_cycle_path(oc_incoming) - expect(page).to have_selector 'table.exchanges tr.supplier' + visit admin_order_cycle_incoming_path(oc_incoming) + expect(page).to have_selector 'table.exchanges tr.supplier' + visit admin_order_cycle_outgoing_path(oc_incoming) expect(page).not_to have_selector 'table.exchanges tr.distributor' # And when I edit the second order cycle, the exchange should appear as outgoing - visit edit_admin_order_cycle_path(oc_outgoing) - expect(page).to have_selector 'table.exchanges tr.distributor' + visit admin_order_cycle_outgoing_path(oc_outgoing) + expect(page).to have_selector 'table.exchanges tr.distributor' + visit admin_order_cycle_incoming_path(oc_outgoing) expect(page).not_to have_selector 'table.exchanges tr.supplier' end From 7c19fe418eb59e54425fb252f30bc096438cb91b Mon Sep 17 00:00:00 2001 From: luisramos0 Date: Sun, 3 Nov 2019 16:42:03 +0000 Subject: [PATCH 14/19] Adapt OC specs to new page flow with 3 steps (these specs are not green yet) --- spec/features/admin/order_cycles_spec.rb | 49 ++++++++++++------------ 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/spec/features/admin/order_cycles_spec.rb b/spec/features/admin/order_cycles_spec.rb index c3c5006ae7..54571a94ae 100644 --- a/spec/features/admin/order_cycles_spec.rb +++ b/spec/features/admin/order_cycles_spec.rb @@ -692,6 +692,9 @@ feature ' visit admin_order_cycles_path click_link 'New Order Cycle' + [distributor_unmanaged.name, supplier_managed.name, supplier_unmanaged.name].each do |enterprise_name| + expect(page).not_to have_select 'coordinator_id', with_options: [enterprise_name] + end select2_select 'Managed distributor', from: 'coordinator_id' click_button "Continue >" @@ -701,6 +704,13 @@ feature ' expect(page).not_to have_select2 'schedule_ids', with_options: [schedule_of_other_managed_distributor.name] multi_select2_select schedule.name, from: 'schedule_ids' + click_button 'Add coordinator fee' + select 'Managed distributor fee', from: 'order_cycle_coordinator_fee_0_id' + + click_button 'Create' + + expect(page).to have_select 'new_supplier_id' + expect(page).not_to have_select 'new_supplier_id', with_options: [supplier_unmanaged.name] select 'Managed supplier', from: 'new_supplier_id' click_button 'Add supplier' select 'Permitted supplier', from: 'new_supplier_id' @@ -709,9 +719,10 @@ feature ' select_incoming_variant supplier_managed, 0, variant_managed select_incoming_variant supplier_permitted, 1, variant_permitted - click_button 'Add coordinator fee' - select 'Managed distributor fee', from: 'order_cycle_coordinator_fee_0_id' + click_button 'Save and Next' + expect(page).to have_select 'new_distributor_id' + expect(page).not_to have_select 'new_distributor_id', with_options: [distributor_unmanaged.name] select 'Managed distributor', from: 'new_distributor_id' click_button 'Add distributor' select 'Permitted distributor', from: 'new_distributor_id' @@ -722,23 +733,13 @@ feature ' fill_in 'order_cycle_outgoing_exchange_1_pickup_time', with: 'pickup time 2' fill_in 'order_cycle_outgoing_exchange_1_pickup_instructions', with: 'pickup instructions' - # Should only have suppliers / distributors listed which the user is managing or - # has E2E permission to add products to order cycles - expect(page).not_to have_select 'new_supplier_id', with_options: [supplier_unmanaged.name] - expect(page).not_to have_select 'new_distributor_id', with_options: [distributor_unmanaged.name] - - [distributor_unmanaged.name, supplier_managed.name, supplier_unmanaged.name].each do |enterprise_name| - expect(page).not_to have_select 'order_cycle_coordinator_id', with_options: [enterprise_name] - end - page.find("table.exchanges tr.distributor-#{distributor_managed.id} td.tags").click within ".exchange-tags" do find(:css, "tags-input .tags input").set "wholesale\n" end - click_button 'Create' + click_button 'Save and Back to List' - expect(flash_message).to eq("Your order cycle has been created.") order_cycle = OrderCycle.find_by_name('My order cycle') expect(order_cycle.suppliers).to match_array [supplier_managed, supplier_permitted] expect(order_cycle.coordinator).to eq(distributor_managed) @@ -851,14 +852,14 @@ feature ' { distributor_managed.id.to_s => [v1.id] } end - visit edit_admin_order_cycle_path(oc) - # I should only see exchanges for supplier_managed AND # distributor_managed and distributor_permitted (who I have given permission to) AND # and distributor_unmanaged (who distributes my products) + visit admin_order_cycle_incoming_path(oc) expect(page).to have_selector "tr.supplier-#{supplier_managed.id}" expect(page).to have_selector 'tr.supplier', count: 1 + visit admin_order_cycle_outgoing_path(oc) expect(page).to have_selector "tr.distributor-#{distributor_managed.id}" expect(page).to have_selector "tr.distributor-#{distributor_permitted.id}" expect(page).to have_selector 'tr.distributor', count: 2 @@ -878,7 +879,7 @@ feature ' expect(page).not_to have_selector "table.exchanges tr.distributor-#{distributor_managed.id} td.tags" # When I save, any exchanges that I can't manage remain - click_button 'Update' + click_button 'Save' expect(page).to have_content "Your order cycle has been updated." oc.reload @@ -919,15 +920,15 @@ feature ' { supplier_managed.id.to_s => [v1.id] } end - visit edit_admin_order_cycle_path(oc) - # I should see exchanges for my_distributor, and the incoming exchanges supplying the variants in it - expect(page).to have_selector "tr.supplier-#{supplier_managed.id}" - expect(page).to have_selector 'tr.supplier', count: 1 - + visit admin_order_cycle_outgoing_path(oc) expect(page).to have_selector "tr.distributor-#{my_distributor.id}" expect(page).to have_selector 'tr.distributor', count: 1 + visit admin_order_cycle_incoming_path(oc) + expect(page).to have_selector "tr.supplier-#{supplier_managed.id}" + expect(page).to have_selector 'tr.supplier', count: 1 + # Open the products list for managed_supplier's incoming exchange within "tr.supplier-#{supplier_managed.id}" do page.find("td.products").click @@ -940,12 +941,12 @@ feature ' # I should be able to see but not toggle v2, because I don't have permission expect(page).to have_checked_field "order_cycle_incoming_exchange_0_variants_#{v2.id}", disabled: true - expect(page).to have_selector "table.exchanges tr.distributor-#{my_distributor.id} td.tags" - # When I save, any exchange that I can't manage remains - click_button 'Update' + click_button 'Save and Next' expect(page).to have_content "Your order cycle has been updated." + expect(page).to have_selector "table.exchanges tr.distributor-#{my_distributor.id} td.tags" + oc.reload expect(oc.suppliers).to match_array [supplier_managed, supplier_permitted, supplier_unmanaged] expect(oc.coordinator).to eq(distributor_managed) From 7c63e59ae9232d9c8f32926396b95af119ef7cf7 Mon Sep 17 00:00:00 2001 From: luisramos0 Date: Sun, 3 Nov 2019 17:53:45 +0000 Subject: [PATCH 15/19] Add OC imcoming and outgoing abilities to managers, this fixes a few OC feature specs --- app/models/spree/ability_decorator.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/spree/ability_decorator.rb b/app/models/spree/ability_decorator.rb index f71c7c9d7e..dccfd4d756 100644 --- a/app/models/spree/ability_decorator.rb +++ b/app/models/spree/ability_decorator.rb @@ -192,7 +192,7 @@ class AbilityDecorator end def add_order_cycle_management_abilities(user) - can [:admin, :index, :read, :edit, :update], OrderCycle do |order_cycle| + can [:admin, :index, :read, :edit, :update, :incoming, :outgoing], OrderCycle do |order_cycle| OrderCycle.accessible_by(user).include? order_cycle end can [:admin, :index, :create], Schedule From d281837dd910ffe818bb8d47580481a87fc7314c Mon Sep 17 00:00:00 2001 From: luisramos0 Date: Sun, 3 Nov 2019 18:03:24 +0000 Subject: [PATCH 16/19] Remove useless spec now that we have 3 steps in OC edit process --- spec/features/admin/order_cycles_spec.rb | 33 ------------------------ 1 file changed, 33 deletions(-) diff --git a/spec/features/admin/order_cycles_spec.rb b/spec/features/admin/order_cycles_spec.rb index 54571a94ae..64942c1ac4 100644 --- a/spec/features/admin/order_cycles_spec.rb +++ b/spec/features/admin/order_cycles_spec.rb @@ -749,39 +749,6 @@ feature ' expect(exchange.tag_list).to eq(["wholesale"]) end - scenario "editing an order cycle we can see (and for now, edit) all exchanges in the order cycle" do - # TODO: when we add the editable scope to variant permissions, we should test that - # exchanges with enterprises who have not granted P-OC to the coordinator are not - # editable, but at this point we cannot distiguish between visible and editable - # variants. - - oc = create(:simple_order_cycle, suppliers: [supplier_managed, supplier_permitted, supplier_unmanaged], coordinator: distributor_managed, distributors: [distributor_managed, distributor_permitted, distributor_unmanaged], name: 'Order Cycle 1' ) - - visit edit_admin_order_cycle_path(oc) - - fill_in 'order_cycle_name', with: 'Coordinated' - - # I should be able to see but not edit exchanges for supplier_unmanaged or distributor_unmanaged - expect(page).to have_selector "tr.supplier-#{supplier_managed.id}" - expect(page).to have_selector "tr.supplier-#{supplier_permitted.id}" - expect(page).to have_selector "tr.supplier-#{supplier_unmanaged.id}" - expect(page).to have_selector 'tr.supplier', count: 3 - - expect(page).to have_selector "tr.distributor-#{distributor_managed.id}" - expect(page).to have_selector "tr.distributor-#{distributor_permitted.id}" - expect(page).to have_selector "tr.distributor-#{distributor_unmanaged.id}" - expect(page).to have_selector 'tr.distributor', count: 3 - - # When I save, then those exchanges should remain - click_button 'Update' - expect(page).to have_content "Your order cycle has been updated." - - oc.reload - expect(oc.suppliers).to match_array [supplier_managed, supplier_permitted, supplier_unmanaged] - expect(oc.coordinator).to eq(distributor_managed) - expect(oc.distributors).to match_array [distributor_managed, distributor_permitted, distributor_unmanaged] - end - scenario "editing an order cycle" do oc = create(:simple_order_cycle, suppliers: [supplier_managed, supplier_permitted, supplier_unmanaged], coordinator: distributor_managed, distributors: [distributor_managed, distributor_permitted, distributor_unmanaged], name: 'Order Cycle 1' ) distributor_managed.update_attribute(:enable_subscriptions, true) From 6615469f8bb7f42e5890138c917c49c750984d3b Mon Sep 17 00:00:00 2001 From: luisramos0 Date: Sun, 3 Nov 2019 18:17:07 +0000 Subject: [PATCH 17/19] Fix 3 more specs in OC edit pages --- spec/features/admin/order_cycles_spec.rb | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/spec/features/admin/order_cycles_spec.rb b/spec/features/admin/order_cycles_spec.rb index 64942c1ac4..f6ff7ee28b 100644 --- a/spec/features/admin/order_cycles_spec.rb +++ b/spec/features/admin/order_cycles_spec.rb @@ -739,8 +739,9 @@ feature ' end click_button 'Save and Back to List' - order_cycle = OrderCycle.find_by_name('My order cycle') + expect(page).to have_input "oc#{order_cycle.id}[name]", value: order_cycle.name + expect(order_cycle.suppliers).to match_array [supplier_managed, supplier_permitted] expect(order_cycle.coordinator).to eq(distributor_managed) expect(order_cycle.distributors).to match_array [distributor_managed, distributor_permitted] @@ -759,15 +760,18 @@ feature ' multi_select2_select schedule.name, from: 'schedule_ids' expect(page).not_to have_select2 'schedule_ids', with_options: [schedule_of_other_managed_distributor.name] - # When I remove all the exchanges and save + click_button 'Save and Next' + + # When I remove all incoming exchanges page.find("tr.supplier-#{supplier_managed.id} a.remove-exchange").click page.find("tr.supplier-#{supplier_permitted.id} a.remove-exchange").click + click_button 'Save and Next' + + # And I remove all outgoing exchanges page.find("tr.distributor-#{distributor_managed.id} a.remove-exchange").click page.find("tr.distributor-#{distributor_permitted.id} a.remove-exchange").click - click_button 'Update' - - # Then the exchanges should be removed - expect(page).to have_content "Your order cycle has been updated." + click_button 'Save and Back to List' + expect(page).to have_input "oc#{oc.id}[name]", value: oc.name oc.reload expect(oc.suppliers).to eq([supplier_unmanaged]) @@ -1070,11 +1074,11 @@ feature ' select 'that fee', from: 'order_cycle_coordinator_fee_0_id' # When I update, or update and close, both work - click_button 'Update' + click_button 'Save' expect(page).to have_content 'Your order cycle has been updated.' fill_in 'order_cycle_outgoing_exchange_0_pickup_instructions', with: 'yyz' - click_button 'Update and Close' + click_button 'Save and Back to List' # Then my order cycle should have been updated expect(page).to have_content 'Your order cycle has been updated.' From 5fdb86ae4361cb8fdb416f68cca36ecd7c78d161 Mon Sep 17 00:00:00 2001 From: luisramos0 Date: Sun, 3 Nov 2019 13:28:47 +0000 Subject: [PATCH 18/19] Make simple create redirect to OC list but normal create to jump to incoming settings --- .../order_cycles/services/order_cycle.js.coffee | 5 ++++- app/controllers/admin/order_cycles_controller.rb | 2 +- app/views/admin/order_cycles/new.html.haml | 4 +++- .../admin/order_cycles_controller_spec.rb | 12 +++++++++++- .../services/order_cycle_spec.js.coffee | 15 +++++++++++++-- 5 files changed, 32 insertions(+), 6 deletions(-) diff --git a/app/assets/javascripts/admin/order_cycles/services/order_cycle.js.coffee b/app/assets/javascripts/admin/order_cycles/services/order_cycle.js.coffee index a10d599c9e..58493d0214 100644 --- a/app/assets/javascripts/admin/order_cycles/services/order_cycle.js.coffee +++ b/app/assets/javascripts/admin/order_cycles/services/order_cycle.js.coffee @@ -150,7 +150,10 @@ angular.module('admin.orderCycles').factory 'OrderCycle', ($resource, $window, S create: (destination) -> oc = new OrderCycleResource({order_cycle: this.dataForSubmit()}) oc.$create (data) -> - $window.location = destination + if destination? && destination.length != 0 + $window.location = destination + else if data.edit_path? + $window.location = data.edit_path , (response) -> if response.data.errors? StatusMessage.display('failure', response.data.errors[0]) diff --git a/app/controllers/admin/order_cycles_controller.rb b/app/controllers/admin/order_cycles_controller.rb index 23740b16ff..a414a5b819 100644 --- a/app/controllers/admin/order_cycles_controller.rb +++ b/app/controllers/admin/order_cycles_controller.rb @@ -43,7 +43,7 @@ module Admin if @order_cycle_form.save flash[:notice] = I18n.t(:order_cycles_create_notice) - render json: { success: true } + render json: { success: true, edit_path: main_app.admin_order_cycle_incoming_path(@order_cycle) } else render json: { errors: @order_cycle.errors.full_messages }, status: :unprocessable_entity end diff --git a/app/views/admin/order_cycles/new.html.haml b/app/views/admin/order_cycles/new.html.haml index 6a67f4fc14..b6c4a43700 100644 --- a/app/views/admin/order_cycles/new.html.haml +++ b/app/views/admin/order_cycles/new.html.haml @@ -7,7 +7,9 @@ = form_for [main_app, :admin, @order_cycle], :url => '', :html => {:class => 'ng order_cycle', 'ng-app' => 'admin.orderCycles', 'ng-controller' => ng_controller, name: 'order_cycle_form'} do |f| %save-bar{ dirty: "order_cycle_form.$dirty", persist: "true" } - %input.red{ type: "button", value: t('.create'), ng: { click: "submit($event, '#{main_app.admin_order_cycles_path}')", disabled: "!order_cycle_form.$dirty || order_cycle_form.$invalid" } } + - if order_cycles_simple_form + - custom_redirect_path = main_app.admin_order_cycles_path + %input.red{ type: "button", value: t('.create'), ng: { click: "submit($event, '#{custom_redirect_path}')", disabled: "!order_cycle_form.$dirty || order_cycle_form.$invalid" } } %input{ type: "button", ng: { value: "order_cycle_form.$dirty ? '#{t('.cancel')}' : '#{t('.back_to_list')}'", click: "cancel('#{main_app.admin_order_cycles_path}')" } } - if order_cycles_simple_form diff --git a/spec/controllers/admin/order_cycles_controller_spec.rb b/spec/controllers/admin/order_cycles_controller_spec.rb index 4df355f595..67169a1047 100644 --- a/spec/controllers/admin/order_cycles_controller_spec.rb +++ b/spec/controllers/admin/order_cycles_controller_spec.rb @@ -111,10 +111,20 @@ module Admin context "when creation is successful" do before { allow(form_mock).to receive(:save) { true } } - it "returns success: true" do + # mock build_resource so that we can control the edit_path + OrderCyclesController.class_eval do + def build_resource + order_cycle = OrderCycle.new + order_cycle.id = 1 + order_cycle + end + end + + it "returns success: true and a valid edit path" do spree_post :create, params json_response = JSON.parse(response.body) expect(json_response['success']).to be true + expect(json_response['edit_path']).to eq "/admin/order_cycles/1/incoming" end end diff --git a/spec/javascripts/unit/admin/order_cycles/services/order_cycle_spec.js.coffee b/spec/javascripts/unit/admin/order_cycles/services/order_cycle_spec.js.coffee index 18f07406d8..4570f8d545 100644 --- a/spec/javascripts/unit/admin/order_cycles/services/order_cycle_spec.js.coffee +++ b/spec/javascripts/unit/admin/order_cycles/services/order_cycle_spec.js.coffee @@ -348,17 +348,28 @@ describe 'OrderCycle service', -> beforeEach -> spyOn(OrderCycle, 'confirmNoDistributors').and.returnValue true - it 'redirects to the destination page on success', -> + it 'redirects to the given destination on success', -> OrderCycle.order_cycle = 'this is the order cycle' spyOn(OrderCycle, 'dataForSubmit').and.returnValue('this is the submit data') $httpBackend.expectPOST('/admin/order_cycles.json', { order_cycle: 'this is the submit data' - }).respond {success: true} + }).respond {success: true, edit_path: "/edit/path"} OrderCycle.create('/destination/page') $httpBackend.flush() expect($window.location).toEqual('/destination/page') + it 'redirects to the edit_path on success if no destination is given', -> + OrderCycle.order_cycle = 'this is the order cycle' + spyOn(OrderCycle, 'dataForSubmit').and.returnValue('this is the submit data') + $httpBackend.expectPOST('/admin/order_cycles.json', { + order_cycle: 'this is the submit data' + }).respond {success: true, edit_path: "/edit/path"} + + OrderCycle.create() + $httpBackend.flush() + expect($window.location).toEqual('/edit/path') + it 'does not redirect on error', -> OrderCycle.order_cycle = 'this is the order cycle' spyOn(OrderCycle, 'dataForSubmit').and.returnValue('this is the submit data') From 14433e776451e8253ebc22475891f0fd131f9597 Mon Sep 17 00:00:00 2001 From: luisramos0 Date: Mon, 4 Nov 2019 13:49:49 +0000 Subject: [PATCH 19/19] Fix some rubocop issues in admin/order_cycles_controller --- .rubocop_manual_todo.yml | 1 - .../admin/order_cycles_controller.rb | 93 +++++++++++++------ 2 files changed, 64 insertions(+), 30 deletions(-) diff --git a/.rubocop_manual_todo.yml b/.rubocop_manual_todo.yml index c4ff990180..e8dc590f17 100644 --- a/.rubocop_manual_todo.yml +++ b/.rubocop_manual_todo.yml @@ -32,7 +32,6 @@ Metrics/LineLength: - app/controllers/admin/enterprises_controller.rb - app/controllers/admin/inventory_items_controller.rb - app/controllers/admin/manager_invitations_controller.rb - - app/controllers/admin/order_cycles_controller.rb - app/controllers/admin/product_import_controller.rb - app/controllers/admin/proxy_orders_controller.rb - app/controllers/admin/schedules_controller.rb diff --git a/app/controllers/admin/order_cycles_controller.rb b/app/controllers/admin/order_cycles_controller.rb index a414a5b819..14d075514a 100644 --- a/app/controllers/admin/order_cycles_controller.rb +++ b/app/controllers/admin/order_cycles_controller.rb @@ -13,9 +13,10 @@ module Admin respond_to do |format| format.html format.json do - render_as_json @collection, ams_prefix: params[:ams_prefix], - current_user: spree_current_user, - subscriptions_count: SubscriptionsCount.new(@collection) + render_as_json @collection, + ams_prefix: params[:ams_prefix], + current_user: spree_current_user, + subscriptions_count: SubscriptionsCount.new(@collection) end end end @@ -43,7 +44,8 @@ module Admin if @order_cycle_form.save flash[:notice] = I18n.t(:order_cycles_create_notice) - render json: { success: true, edit_path: main_app.admin_order_cycle_incoming_path(@order_cycle) } + render json: { success: true, + edit_path: main_app.admin_order_cycle_incoming_path(@order_cycle) } else render json: { errors: @order_cycle.errors.full_messages }, status: :unprocessable_entity end @@ -69,9 +71,10 @@ module Admin def bulk_update if order_cycle_set.andand.save - render_as_json @order_cycles, ams_prefix: 'index', - current_user: spree_current_user, - subscriptions_count: SubscriptionsCount.new(@collection) + render_as_json @order_cycles, + ams_prefix: 'index', + current_user: spree_current_user, + subscriptions_count: SubscriptionsCount.new(@collection) else order_cycle = order_cycle_set.collection.find{ |oc| oc.errors.present? } render json: { errors: order_cycle.errors.full_messages }, status: :unprocessable_entity @@ -99,20 +102,8 @@ module Admin return Enterprise.where("1=0") unless json_request? return order_cycles_from_set if params[:order_cycle_set] - ocs = if params[:as] == "distributor" - OrderCycle.preload(:schedules).ransack(params[:q]).result. - involving_managed_distributors_of(spree_current_user).order('updated_at DESC') - elsif params[:as] == "producer" - OrderCycle.preload(:schedules).ransack(params[:q]).result. - involving_managed_producers_of(spree_current_user).order('updated_at DESC') - else - OrderCycle.preload(:schedules).ransack(params[:q]).result.accessible_by(spree_current_user) - end - - ocs.undated | - ocs.soonest_closing | - ocs.soonest_opening | - ocs.closed + ocs = order_cycles + ocs.undated | ocs.soonest_closing | ocs.soonest_opening | ocs.closed end def collection_actions @@ -121,21 +112,60 @@ module Admin private + def order_cycles + if params[:as] == "distributor" + order_cycles_as_distributor + elsif params[:as] == "producer" + order_cycles_as_producer + else + order_cycles_as_both + end + end + + def order_cycles_as_distributor + OrderCycle. + preload(:schedules). + ransack(params[:q]). + result. + involving_managed_distributors_of(spree_current_user). + order('updated_at DESC') + end + + def order_cycles_as_producer + OrderCycle. + preload(:schedules). + ransack(params[:q]). + result. + involving_managed_producers_of(spree_current_user). + order('updated_at DESC') + end + + def order_cycles_as_both + OrderCycle. + preload(:schedules). + ransack(params[:q]). + result. + accessible_by(spree_current_user) + end + def load_data_for_index if json_request? - # Split ransack params into all those that currently exist and new ones to limit returned ocs to recent or undated + # Split ransack params into all those that currently exist and new ones + # to limit returned ocs to recent or undated orders_close_at_gt = params[:q].andand.delete(:orders_close_at_gt) || 31.days.ago params[:q] = { - g: [params.delete(:q) || {}, { m: 'or', orders_close_at_gt: orders_close_at_gt, orders_close_at_null: true }] + g: [params.delete(:q) || {}, { m: 'or', + orders_close_at_gt: orders_close_at_gt, + orders_close_at_null: true }] } @collection = collection end end def require_coordinator - if params[:coordinator_id] && @order_cycle.coordinator = permitted_coordinating_enterprises_for(@order_cycle).find_by_id(params[:coordinator_id]) - return - end + @order_cycle.coordinator = + permitted_coordinating_enterprises_for(@order_cycle).find_by_id(params[:coordinator_id]) + return if params[:coordinator_id] && @order_cycle.coordinator available_coordinators = permitted_coordinating_enterprises_for(@order_cycle) case available_coordinators.count @@ -145,7 +175,9 @@ module Admin when 1 @order_cycle.coordinator = available_coordinators.first else - flash[:error] = I18n.t(:order_cycles_no_permission_to_create_error) if params[:coordinator_id] + if params[:coordinator_id] + flash[:error] = I18n.t(:order_cycles_no_permission_to_create_error) + end render :set_coordinator end end @@ -169,7 +201,9 @@ module Admin params[:order_cycle].delete :coordinator_id unless Enterprise.managed_by(spree_current_user).include?(@order_cycle.coordinator) - params[:order_cycle].delete_if{ |k, _v| [:name, :orders_open_at, :orders_close_at].include? k.to_sym } + params[:order_cycle].delete_if do |k, _v| + [:name, :orders_open_at, :orders_close_at].include? k.to_sym + end end end @@ -194,7 +228,8 @@ module Admin def require_order_cycle_set_params return if params[:order_cycle_set] - render json: { errors: t('admin.order_cycles.bulk_update.no_data') }, status: :unprocessable_entity + render json: { errors: t('admin.order_cycles.bulk_update.no_data') }, + status: :unprocessable_entity end def ams_prefix_whitelist