From 934f960336953fee35e30087ed0d49fb4cfbb682 Mon Sep 17 00:00:00 2001 From: Rob H Date: Thu, 26 Jun 2014 15:27:24 +1000 Subject: [PATCH 1/2] Add display as to new product page --- app/assets/javascripts/admin/admin.js.coffee | 2 +- .../admin/directives/display_as.js.coffee | 2 +- .../admin/products/units_controller.js.coffee | 17 +++++++---------- .../admin/services/option_value_namer.js.coffee | 2 +- app/models/spree/product_decorator.rb | 5 +++-- .../products/new/replace_form.html.haml.deface | 9 +++++---- .../spree/admin/products/_display_as.html.haml | 4 ++++ 7 files changed, 22 insertions(+), 19 deletions(-) create mode 100644 app/views/spree/admin/products/_display_as.html.haml diff --git a/app/assets/javascripts/admin/admin.js.coffee b/app/assets/javascripts/admin/admin.js.coffee index edebc019e5..a0235a568f 100644 --- a/app/assets/javascripts/admin/admin.js.coffee +++ b/app/assets/javascripts/admin/admin.js.coffee @@ -1,3 +1,3 @@ -angular.module("ofn.admin", ["ngResource", "ngAnimate", "ofn.dropdown"]).config ($httpProvider) -> +angular.module("ofn.admin", ["ngResource", "ngAnimate", "ofn.dropdown", "admin.products"]).config ($httpProvider) -> $httpProvider.defaults.headers.common["X-CSRF-Token"] = $("meta[name=csrf-token]").attr("content") $httpProvider.defaults.headers.common["Accept"] = "application/json, text/javascript, */*" \ No newline at end of file diff --git a/app/assets/javascripts/admin/directives/display_as.js.coffee b/app/assets/javascripts/admin/directives/display_as.js.coffee index a13d65bc5e..21f83ebf9f 100644 --- a/app/assets/javascripts/admin/directives/display_as.js.coffee +++ b/app/assets/javascripts/admin/directives/display_as.js.coffee @@ -17,7 +17,7 @@ angular.module("ofn.admin").directive "ofnDisplayAs", (optionValueNamer) -> variant_unit_scale: variant_unit_scale variant_unit: variant_unit variant_unit_name: scope.product.variant_unit_name - + scope.placeholder_text = new optionValueNamer(variant_object).name() productUnitProperties = -> diff --git a/app/assets/javascripts/admin/products/units_controller.js.coffee b/app/assets/javascripts/admin/products/units_controller.js.coffee index 9070648e21..e253e701fa 100644 --- a/app/assets/javascripts/admin/products/units_controller.js.coffee +++ b/app/assets/javascripts/admin/products/units_controller.js.coffee @@ -1,10 +1,10 @@ angular.module("admin.products") - .controller "unitsCtrl", ($scope) -> + .controller "unitsCtrl", ($scope, optionValueNamer) -> $scope.product = { master: {} } + $scope.product.master.product = $scope.product + $scope.placeholder_text = "" - $scope.$watch -> - $scope.product.variant_unit_with_scale - , -> + $scope.$watchCollection '[product.variant_unit_with_scale, product.master.unit_value_with_description]', -> if $scope.product.variant_unit_with_scale match = $scope.product.variant_unit_with_scale.match(/^([^_]+)_([\d\.]+)$/) if match @@ -16,9 +16,6 @@ angular.module("admin.products") else $scope.product.variant_unit = $scope.product.variant_unit_scale = null - $scope.$watch -> - $scope.product.master.unit_value_with_description - , -> if $scope.product.master.hasOwnProperty("unit_value_with_description") match = $scope.product.master.unit_value_with_description.match(/^([\d\.]+(?= |$)|)( |)(.*)$/) if match @@ -27,6 +24,8 @@ angular.module("admin.products") $scope.product.master.unit_value *= $scope.product.variant_unit_scale if $scope.product.master.unit_value && $scope.product.variant_unit_scale $scope.product.master.unit_description = match[3] + $scope.placeholder_text = new optionValueNamer($scope.product.master).name() + $scope.variant_unit_options = [ ["Weight (g)", "weight_1"], ["Weight (kg)", "weight_1000"], @@ -41,6 +40,4 @@ angular.module("admin.products") Object.keys(product.variants).length > 0 $scope.hasUnit = (product) -> - product.variant_unit_with_scale? - - \ No newline at end of file + product.variant_unit_with_scale? \ No newline at end of file diff --git a/app/assets/javascripts/admin/services/option_value_namer.js.coffee b/app/assets/javascripts/admin/services/option_value_namer.js.coffee index 8d127f01c7..b497e3aef2 100644 --- a/app/assets/javascripts/admin/services/option_value_namer.js.coffee +++ b/app/assets/javascripts/admin/services/option_value_namer.js.coffee @@ -1,4 +1,4 @@ -angular.module("ofn.admin").factory "optionValueNamer", ($resource) -> +angular.module("admin.products").factory "optionValueNamer", -> class OptionValueNamer constructor: (@variant) -> diff --git a/app/models/spree/product_decorator.rb b/app/models/spree/product_decorator.rb index 6e116d3e4d..22fa5b3b8b 100644 --- a/app/models/spree/product_decorator.rb +++ b/app/models/spree/product_decorator.rb @@ -12,9 +12,10 @@ Spree::Product.class_eval do accepts_nested_attributes_for :product_distributions, :allow_destroy => true delegate_belongs_to :master, :unit_value, :unit_description - delegate :images_attributes=, to: :master + delegate :images_attributes=, :display_as=, to: :master - attr_accessible :supplier_id, :primary_taxon_id, :distributor_ids, :product_distributions_attributes, :group_buy, :group_buy_unit_size, :variant_unit, :variant_unit_scale, :variant_unit_name, :unit_value, :unit_description, :notes, :images_attributes + attr_accessible :supplier_id, :primary_taxon_id, :distributor_ids, :product_distributions_attributes, :group_buy, :group_buy_unit_size + attr_accessible :variant_unit, :variant_unit_scale, :variant_unit_name, :unit_value, :unit_description, :notes, :images_attributes, :display_as validates_presence_of :supplier validates_presence_of :primary_taxon diff --git a/app/overrides/spree/admin/products/new/replace_form.html.haml.deface b/app/overrides/spree/admin/products/new/replace_form.html.haml.deface index a4e073d40d..334739a4c2 100644 --- a/app/overrides/spree/admin/products/new/replace_form.html.haml.deface +++ b/app/overrides/spree/admin/products/new/replace_form.html.haml.deface @@ -30,10 +30,11 @@ %input.fullwidth{ id: 'product_unit_value_with_description', 'ng-model' => 'product.master.unit_value_with_description', :type => 'text', placeholder: "eg. 2", 'ng-disabled' => "!hasUnit(product)" } %input{ type: 'hidden', 'ng-value' => 'product.master.unit_value', name: 'product[unit_value]' } %input{ type: 'hidden', 'ng-value' => 'product.master.unit_description', name: 'product[unit_description]' } - .three.columns.omega{ 'ng-show' => "product.variant_unit_with_scale == 'items'" } - = f.field_container :unit_name do - = f.label :product_variant_unit_name, :unit_name - %input.fullwidth{ id: 'product_variant_unit_name','ng-model' => 'product.variant_unit_name', :name => 'product[variant_unit_name]', :placeholder => 'eg. bunches', :type => 'text' } + = render 'display_as', f: f + .three.columns.omega{ 'ng-show' => "product.variant_unit_with_scale == 'items'" } + = f.field_container :unit_name do + = f.label :product_variant_unit_name, t(:unit_name) + %input.fullwidth{ id: 'product_variant_unit_name','ng-model' => 'product.variant_unit_name', :name => 'product[variant_unit_name]', :placeholder => 'eg. bunches', :type => 'text' } .twelve.columns.alpha .six.columns.alpha = render 'spree/admin/products/primary_taxon_form', f: f diff --git a/app/views/spree/admin/products/_display_as.html.haml b/app/views/spree/admin/products/_display_as.html.haml new file mode 100644 index 0000000000..33beec2b86 --- /dev/null +++ b/app/views/spree/admin/products/_display_as.html.haml @@ -0,0 +1,4 @@ +.three.columns.omega{ "ng-if" => "product.variant_unit_with_scale != 'items'" } + = f.field_container :display_as do + = f.label :product_display_as, t(:display_as) + %input#product_display_as.fullwidth{name: "product[display_as]", placeholder: "{{ placeholder_text }}", type: "text"} \ No newline at end of file From 083fda0ad008dad21a3e5f1d48ffb4d63dd53730 Mon Sep 17 00:00:00 2001 From: Rob H Date: Fri, 27 Jun 2014 10:46:54 +1000 Subject: [PATCH 2/2] Set columns on BPE error messages --- app/views/spree/admin/products/bulk_edit.html.haml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/views/spree/admin/products/bulk_edit.html.haml b/app/views/spree/admin/products/bulk_edit.html.haml index d21235cee6..d1cdd6324f 100644 --- a/app/views/spree/admin/products/bulk_edit.html.haml +++ b/app/views/spree/admin/products/bulk_edit.html.haml @@ -51,13 +51,13 @@ %li.column-list-item{ :class => "three columns alpha", 'ofn-toggle-column' => 'column', 'ng-repeat' => 'column in columns' } {{ column.name }} %hr - %div.loading{ 'ng-show' => 'loading' } + %div.sixteen.columns.alpha.loading{ 'ng-show' => 'loading' } %h4 Loading Products... - %div{ 'ng-show' => '!loading && products.length == 0' } + %div.sixteen.columns.alpha{ 'ng-show' => '!loading && products.length == 0' } %h4{ :style => 'color:red;' } No matching products found. - %div{ 'ng-show' => 'products.length == 500' } + %div.sixteen.columns.alpha{ 'ng-show' => '!loading && products.length == 500' } %h6 Search returned too many products to display (500+), please apply more search filters to reduce the number of matching products - %div{ 'ng-hide' => 'loading || products.length == 500 || products.length == 0' } + %div.sixteen.columns.alpha{ 'ng-hide' => 'loading || products.length == 500 || products.length == 0' } %div.quick_search{ :class => "five columns omega" } %input.search{ :class => "four columns alpha", 'ng-model' => 'query', :name => "quick_filter", :type => 'text', 'placeholder' => 'Quick Search' } %div.pagination{ :class => "seven columns omega" }