diff --git a/app/assets/javascripts/admin/all.js b/app/assets/javascripts/admin/all.js index bbab92885d..082253d47e 100644 --- a/app/assets/javascripts/admin/all.js +++ b/app/assets/javascripts/admin/all.js @@ -16,7 +16,8 @@ //= require admin/spree_auth //= require admin/spree_promo //= require ./admin -//= require ./products/products //= require ./enterprises/enterprises +//= require ./payment_methods/payment_methods +//= require ./products/products //= require_tree . diff --git a/app/assets/javascripts/admin/enterprises/controllers/enterprise_controller.js.coffee b/app/assets/javascripts/admin/enterprises/controllers/enterprise_controller.js.coffee index d87eadfde5..56b13f0cf4 100644 --- a/app/assets/javascripts/admin/enterprises/controllers/enterprise_controller.js.coffee +++ b/app/assets/javascripts/admin/enterprises/controllers/enterprise_controller.js.coffee @@ -1,3 +1,19 @@ angular.module("admin.enterprises") - .controller "enterpriseCtrl", ($scope, Enterprise) -> - $scope.enterprise = Enterprise.enterprise + .controller "enterpriseCtrl", ($scope, Enterprise, PaymentMethods) -> + $scope.Enterprise = Enterprise.enterprise + $scope.PaymentMethods = PaymentMethods.paymentMethods + + for PaymentMethod in $scope.PaymentMethods + PaymentMethod.selected = if PaymentMethod.id in $scope.Enterprise.payment_method_ids then true else false + + $scope.selectedPaymentMethodsCount = -> + $scope.PaymentMethods.reduce (count, PaymentMethod) -> + count++ if PaymentMethod.selected + count + , 0 + + $scope.paymentMethodsColor = -> + if $scope.PaymentMethods.length > 0 + if $scope.selectedPaymentMethodsCount() > 0 then "blue" else "red" + else + "red" \ No newline at end of file diff --git a/app/assets/javascripts/admin/enterprises/enterprises.js.coffee b/app/assets/javascripts/admin/enterprises/enterprises.js.coffee index 813c99cf39..b8f697b40d 100644 --- a/app/assets/javascripts/admin/enterprises/enterprises.js.coffee +++ b/app/assets/javascripts/admin/enterprises/enterprises.js.coffee @@ -1 +1 @@ -angular.module("admin.enterprises", []) \ No newline at end of file +angular.module("admin.enterprises", ["admin.payment_methods"]) \ No newline at end of file diff --git a/app/assets/javascripts/admin/payment_methods/controllers/payment_method_controller.js.coffee b/app/assets/javascripts/admin/payment_methods/controllers/payment_method_controller.js.coffee new file mode 100644 index 0000000000..092fd5bbd2 --- /dev/null +++ b/app/assets/javascripts/admin/payment_methods/controllers/payment_method_controller.js.coffee @@ -0,0 +1,4 @@ +angular.module("admin.payment_methods") + .controller "paymentMethodCtrl", ($scope, PaymentMethods) -> + $scope.findPaymentMethodByID = (id) -> + $scope.PaymentMethod = PaymentMethods.findByID(id) \ No newline at end of file diff --git a/app/assets/javascripts/admin/payment_methods/payment_methods.js.coffee b/app/assets/javascripts/admin/payment_methods/payment_methods.js.coffee new file mode 100644 index 0000000000..e75142ae0d --- /dev/null +++ b/app/assets/javascripts/admin/payment_methods/payment_methods.js.coffee @@ -0,0 +1 @@ +angular.module("admin.payment_methods", []) \ No newline at end of file diff --git a/app/assets/javascripts/admin/payment_methods/services/payment_methods.js.coffee b/app/assets/javascripts/admin/payment_methods/services/payment_methods.js.coffee new file mode 100644 index 0000000000..53fdcb93e4 --- /dev/null +++ b/app/assets/javascripts/admin/payment_methods/services/payment_methods.js.coffee @@ -0,0 +1,8 @@ +angular.module("admin.payment_methods") + .factory "PaymentMethods", (paymentMethods) -> + new class PaymentMethods + paymentMethods: paymentMethods + + findByID: (id) -> + for paymentMethod in @paymentMethods + return paymentMethod if paymentMethod.id is id diff --git a/app/assets/stylesheets/admin/sidebar-item.css.sass b/app/assets/stylesheets/admin/sidebar-item.css.sass index fc19154e94..7972320b09 100644 --- a/app/assets/stylesheets/admin/sidebar-item.css.sass +++ b/app/assets/stylesheets/admin/sidebar-item.css.sass @@ -18,13 +18,13 @@ div.sidebar_item max-height: 400px overflow-y: auto overflow-x: hidden - border: solid #5498da - border-width: 0px 1px 0px 1px &.red color: #DA5354 - border: solid #DA5354 - border-width: 0px 3px 0px 3px .list-item + border: solid #DA5354 + border-width: 0px 3px 0px 3px + span.alpha + margin-left: -3px &.odd background-color: #fcf6ef &:hover @@ -33,9 +33,11 @@ div.sidebar_item color: #DA5354 .list-item + border: solid #5498da + border-width: 0px 1px 0px 1px span.alpha font-weight: bold - margin-left: -3px + margin-left: -1px padding: 10px 2px 10px 5% overflow: hidden max-width: 160px diff --git a/app/helpers/admin/injection_helper.rb b/app/helpers/admin/injection_helper.rb index 67149c35db..f2b50f28c3 100644 --- a/app/helpers/admin/injection_helper.rb +++ b/app/helpers/admin/injection_helper.rb @@ -4,9 +4,18 @@ module Admin admin_inject_json_ams "admin.enterprises", "enterprise", @enterprise, Api::Admin::EnterpriseSerializer end + def admin_inject_payment_methods + admin_inject_json_ams_array "admin.payment_methods", "paymentMethods", @payment_methods, Api::Admin::PaymentMethodSerializer + end + def admin_inject_json_ams(ngModule, name, data, serializer, opts = {}) json = serializer.new(data).to_json render partial: "admin/json/injection_ams", locals: {ngModule: ngModule, name: name, json: json} end + + def admin_inject_json_ams_array(ngModule, name, data, serializer, opts = {}) + json = ActiveModel::ArraySerializer.new(data, {each_serializer: serializer}.merge(opts)).to_json + render partial: "admin/json/injection_ams", locals: {ngModule: ngModule, name: name, json: json} + end end end \ No newline at end of file diff --git a/app/serializers/api/admin/enterprise_serializer.rb b/app/serializers/api/admin/enterprise_serializer.rb index e35226f27c..bc2292ff70 100644 --- a/app/serializers/api/admin/enterprise_serializer.rb +++ b/app/serializers/api/admin/enterprise_serializer.rb @@ -1,3 +1,3 @@ class Api::Admin::EnterpriseSerializer < ActiveModel::Serializer - attributes :name, :id, :is_primary_producer, :is_distributor + attributes :name, :id, :is_primary_producer, :is_distributor, :payment_method_ids end \ No newline at end of file diff --git a/app/serializers/api/admin/payment_method_serializer.rb b/app/serializers/api/admin/payment_method_serializer.rb new file mode 100644 index 0000000000..570e4949dd --- /dev/null +++ b/app/serializers/api/admin/payment_method_serializer.rb @@ -0,0 +1,3 @@ +class Api::Admin::PaymentMethodSerializer < ActiveModel::Serializer + attributes :name, :id +end \ No newline at end of file diff --git a/app/serializers/api/id_serializer.rb b/app/serializers/api/id_serializer.rb index 0093338e6e..bbd9b0ad56 100644 --- a/app/serializers/api/id_serializer.rb +++ b/app/serializers/api/id_serializer.rb @@ -1,3 +1,3 @@ class Api::IdSerializer < ActiveModel::Serializer attributes :id -end +end \ No newline at end of file diff --git a/app/views/admin/enterprises/_form.html.haml b/app/views/admin/enterprises/_form.html.haml index 2851e68734..e21e653a05 100644 --- a/app/views/admin/enterprises/_form.html.haml +++ b/app/views/admin/enterprises/_form.html.haml @@ -29,11 +29,11 @@ .with-tip{'data-powertip' => "Select 'Producer' if you are a primary producer of food. Select 'Hub' if you want a shop-front. You can choose either or both."} %a What's this? .two.columns - = f.check_box :is_distributor, 'ng-model' => 'enterprise.is_distributor' + = f.check_box :is_distributor, 'ng-model' => 'Enterprise.is_distributor'   = f.label :is_distributor, 'Hub' .five.columns.omega - = f.check_box :is_primary_producer, 'ng-model' => 'enterprise.is_primary_producer' + = f.check_box :is_primary_producer, 'ng-model' => 'Enterprise.is_primary_producer'   = f.label :is_primary_producer, 'Producer' .row diff --git a/app/views/admin/enterprises/_ng_form.html.haml b/app/views/admin/enterprises/_ng_form.html.haml index d7bd3ebb2f..7d8a1ff24c 100644 --- a/app/views/admin/enterprises/_ng_form.html.haml +++ b/app/views/admin/enterprises/_ng_form.html.haml @@ -1,4 +1,5 @@ = admin_inject_enterprise += admin_inject_payment_methods .sixteen.columns.alpha{ ng: { app: 'admin.enterprises', controller: 'enterpriseCtrl' } } .eleven.columns.alpha = render partial: 'form', :locals => { f: f } diff --git a/app/views/admin/enterprises/_sidebar.html.haml b/app/views/admin/enterprises/_sidebar.html.haml index ef525304e8..74a8a0a8f4 100644 --- a/app/views/admin/enterprises/_sidebar.html.haml +++ b/app/views/admin/enterprises/_sidebar.html.haml @@ -1,27 +1,26 @@ -- payment_methods_color = @payment_methods.count > 0 ? (@enterprise.payment_methods.count > 0 ? "blue" : "red") : "red" -.sidebar_item.four.columns.alpha#payment_methods{ ng: { show: 'enterprise.is_distributor' } } - .four.columns.alpha.header{ class: "#{payment_methods_color}" } +.sidebar_item.four.columns.alpha#payment_methods{ ng: { show: 'Enterprise.is_distributor' } } + .four.columns.alpha.header{ ng: { class: "paymentMethodsColor()" } } %span.four.columns.alpha.centered Payment Methods - .four.columns.alpha.list{ class: "#{payment_methods_color}" } + .four.columns.alpha.list{ ng: { class: "paymentMethodsColor()" } } - if @payment_methods.count > 0 -# = hidden_field_tag "enterprise[payment_method_ids][]", [] - @payment_methods.each do |payment_method| - %a.four.columns.alpha.list-item{ class: "#{cycle('odd','even')}", href: "#{edit_admin_payment_method_path(payment_method)}" } + %a.four.columns.alpha.list-item{ class: "#{cycle('odd','even')}", href: "#{edit_admin_payment_method_path(payment_method)}", ng: { controller: 'paymentMethodCtrl', init: "findPaymentMethodByID(#{payment_method.id})" } } %span.three.columns.alpha = payment_method.name %span.one.column.omega - = f.check_box :payment_method_ids, { multiple: true }, payment_method.id, nil + = f.check_box :payment_method_ids, { multiple: true, 'ng-model' => 'PaymentMethod.selected' }, payment_method.id, nil - else .four.columns.alpha.list-item %span.three.columns.alpha None Available %span.one.column.omega %span.icon-remove-sign - %a.four.columns.alpha.button{ href: "#{new_admin_payment_method_path}", class: "#{payment_methods_color}" } + %a.four.columns.alpha.button{ href: "#{new_admin_payment_method_path}", ng: { class: "paymentMethodsColor()" } } CREATE NEW %span.icon-arrow-right - shipping_methods_color = @shipping_methods.count > 0 ? (@enterprise.shipping_methods.count > 0 ? "blue" : "red") : "red" -.sidebar_item.four.columns.alpha#shipping_methods{ ng: { show: 'enterprise.is_distributor' } } +.sidebar_item.four.columns.alpha#shipping_methods{ ng: { show: 'Enterprise.is_distributor' } } .four.columns.alpha.header{ class: "#{shipping_methods_color}" } %span.four.columns.alpha.centered Shipping Methods .four.columns.alpha.list{ class: "#{shipping_methods_color}" } @@ -42,7 +41,7 @@ %span.icon-arrow-right - enterprise_fees_color = @enterprise_fees.count > 0 ? "blue" : "red" -.sidebar_item.four.columns.alpha#enterprise_fees{ ng: { show: 'enterprise.is_distributor' } } +.sidebar_item.four.columns.alpha#enterprise_fees{ ng: { show: 'Enterprise.is_distributor' } } .four.columns.alpha.header{ class: "#{enterprise_fees_color}" } %span.four.columns.alpha.centered Enterprise Fees .four.columns.alpha.list{ class: "#{enterprise_fees_color}" }