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 index 853f37f690..105b9fa904 100644 --- 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 @@ -84,6 +84,7 @@ angular.module('admin.orderCycles') $scope.supplied_products = Enterprise.supplied_products $scope.enterprise_fees = EnterpriseFee.index(order_cycle_id: order_cycle_id) + $scope.OrderCycle = OrderCycle $scope.order_cycle = OrderCycle.load(order_cycle_id) $scope.loaded = -> 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 9f80a0b666..faffeecfb3 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,6 +4,7 @@ angular.module('admin.orderCycles').controller "AdminSimpleEditOrderCycleCtrl", $scope.enterprises = Enterprise.index(order_cycle_id: $scope.orderCycleId()) $scope.enterprise_fees = EnterpriseFee.index(order_cycle_id: $scope.orderCycleId()) + $scope.OrderCycle = OrderCycle $scope.order_cycle = OrderCycle.load $scope.orderCycleId(), (order_cycle) => $scope.init() 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 36641dc4d1..595bfdbde6 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 @@ -1,4 +1,4 @@ -angular.module('admin.orderCycles').factory('OrderCycle', ($resource, $window) -> +angular.module('admin.orderCycles').factory('OrderCycle', ($resource, $window, $timeout) -> OrderCycle = $resource '/admin/order_cycles/:action_name/:order_cycle_id.json', {}, { 'index': { method: 'GET', isArray: true} 'new' : { method: 'GET', params: { action_name: "new" } } @@ -127,15 +127,18 @@ angular.module('admin.orderCycles').factory('OrderCycle', ($resource, $window) - oc = new OrderCycle({order_cycle: this.dataForSubmit()}) oc.$create (data) -> if data['success'] - $window.location = destination + $window.location = destination else console.log('Failed to create order cycle') update: (destination) -> oc = new OrderCycle({order_cycle: this.dataForSubmit()}) - oc.$update {order_cycle_id: this.order_cycle.id}, (data) -> + oc.$update {order_cycle_id: this.order_cycle.id}, (data) => if data['success'] - $window.location = destination + if destination? + $window.location = destination + else + this.displayMessage 'Your order cycle has been updated.' else console.log('Failed to update order cycle') @@ -200,4 +203,11 @@ angular.module('admin.orderCycles').factory('OrderCycle', ($resource, $window) - for id, active of incoming.variants outgoing.variants[id] = active + + displayMessage: (message) -> + this.message = message + $timeout => + this.message = null + , 5000 + }) diff --git a/app/assets/stylesheets/admin/openfoodnetwork.css.scss b/app/assets/stylesheets/admin/openfoodnetwork.css.scss index fac771921c..4dff14cf00 100644 --- a/app/assets/stylesheets/admin/openfoodnetwork.css.scss +++ b/app/assets/stylesheets/admin/openfoodnetwork.css.scss @@ -107,6 +107,10 @@ form.order_cycle { margin-top: 3em; } + .message { + font-weight: bold; + } + /* This styling makes it easier to read the debug info at the same time as working with the * interface, but it breaks the tests. Enable when you need it. #order-cycles-debug { diff --git a/app/views/admin/order_cycles/_form.html.haml b/app/views/admin/order_cycles/_form.html.haml index 1452b7dfb1..ca78bf4203 100644 --- a/app/views/admin/order_cycles/_form.html.haml +++ b/app/views/admin/order_cycles/_form.html.haml @@ -46,12 +46,13 @@ - if @order_cycle.new_record? = f.submit 'Create', 'ng-click' => "submit('#{main_app.admin_order_cycles_path}')", 'ng-disabled' => '!loaded()' - else - = f.submit 'Update', 'ng-click' => "submit('#{main_app.edit_admin_order_cycle_path(@order_cycle)}')", 'ng-disabled' => '!loaded()' + = f.submit 'Update', 'ng-click' => "submit(null)", 'ng-disabled' => '!loaded()' = f.submit 'Update and Close', 'ng-click' => "submit('#{main_app.admin_order_cycles_path}')", 'ng-disabled' => '!loaded()' %span{'ng-show' => 'loaded()'} or = link_to 'Cancel', main_app.admin_order_cycles_path %span{'ng-hide' => 'loaded()'} Loading... + %h6.message {{ OrderCycle.message }} - unless Rails.env.production? diff --git a/app/views/admin/order_cycles/_simple_form.html.haml b/app/views/admin/order_cycles/_simple_form.html.haml index dade484849..d162dd37da 100644 --- a/app/views/admin/order_cycles/_simple_form.html.haml +++ b/app/views/admin/order_cycles/_simple_form.html.haml @@ -24,10 +24,11 @@ - if @order_cycle.new_record? = f.submit 'Create', 'ng-click' => "submit('#{main_app.admin_order_cycles_path}')", 'ng-disabled' => '!loaded()' - else - = f.submit 'Update', 'ng-click' => "submit('#{main_app.edit_admin_order_cycle_path(@order_cycle)}')", 'ng-disabled' => '!loaded()' + = f.submit 'Update', 'ng-click' => "submit(null)", 'ng-disabled' => '!loaded()' = f.submit 'Update and Close', 'ng-click' => "submit('#{main_app.admin_order_cycles_path}')", 'ng-disabled' => '!loaded()' %span{'ng-show' => 'loaded()'} or = link_to 'Cancel', main_app.admin_order_cycles_path %span{'ng-hide' => 'loaded()'} Loading... + %h6.message {{ OrderCycle.message }} diff --git a/spec/features/admin/order_cycles_spec.rb b/spec/features/admin/order_cycles_spec.rb index 0bf0c7e952..27ad584e47 100644 --- a/spec/features/admin/order_cycles_spec.rb +++ b/spec/features/admin/order_cycles_spec.rb @@ -879,6 +879,9 @@ feature %q{ click_button 'Add coordinator fee' select 'that fee', from: 'order_cycle_coordinator_fee_0_id' + # When I update, or update and close, both work + click_button 'Update' + page.should have_content 'Your order cycle has been updated.' click_button 'Update and Close' # Then my order cycle should have been updated