From 2a1176c31aa45d1f303223353b82053a04b01771 Mon Sep 17 00:00:00 2001 From: Robert Waltemath Date: Thu, 30 May 2013 10:54:22 +0200 Subject: [PATCH 1/6] Update ordergroup prices in OrderArticles via Order. Should fix bennibu#112. --- app/models/order_article.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/models/order_article.rb b/app/models/order_article.rb index 192d60d5..8b2b0cf9 100644 --- a/app/models/order_article.rb +++ b/app/models/order_article.rb @@ -148,7 +148,10 @@ class OrderArticle < ActiveRecord::Base end def update_ordergroup_prices - group_order_articles.each { |goa| goa.group_order.update_price! } + # updates prices of ALL ordergroups - these are actually too many + # in case of performance issues, update only ordergroups, which ordered this article + # CAUTION: in after_destroy callback related records (e.g. group_order_articles) are already non-existent + order.group_orders.each { |go| go.update_price! } end end From 0d3c23f8147319bc3ef4f1f905fb7c24001ebba4 Mon Sep 17 00:00:00 2001 From: Julius Date: Thu, 6 Jun 2013 17:06:05 +0200 Subject: [PATCH 2/6] Improve performance of data-check-all --- app/assets/javascripts/application.js | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index df0ebc2f..6eee804e 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -35,11 +35,14 @@ $(function() { // Check/Uncheck all checkboxes for a specific form $('input[data-check-all]').live('click', function() { - var status = $(this).is(':checked') - $($(this).data('check-all')).find('input[type="checkbox"]').each(function() { - $(this).attr('checked', status); - highlightRow($(this)); - }); + var status = $(this).is(':checked'); + var context = $(this).data('check-all'); + var elms = $('input[type="checkbox"]', context); + for(i=elms.length-1; i>=0; --i) { // performance can be an issue here, so use native loop + var elm = elms[i]; + elm.checked = status; + highlightRow($(elm)); + } }); // Submit form when changing a select menu. @@ -101,8 +104,8 @@ $(function() { // gives the row an yellow background -function highlightRow(checkbox) { - var row = checkbox.parents('tr'); +function highlightRow(checkbox, status) { + var row = checkbox.closest('tr'); if (checkbox.is(':checked')) { row.addClass('selected'); } else { From b8a23a396c778b1174d1058db82bb8aca46d2584 Mon Sep 17 00:00:00 2001 From: Julius Date: Thu, 6 Jun 2013 17:09:22 +0200 Subject: [PATCH 3/6] Remove test variable --- app/assets/javascripts/application.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 6eee804e..04098d88 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -104,7 +104,7 @@ $(function() { // gives the row an yellow background -function highlightRow(checkbox, status) { +function highlightRow(checkbox) { var row = checkbox.closest('tr'); if (checkbox.is(':checked')) { row.addClass('selected'); From 0058e826b2b3fb90e29655f352e2a3eae247130e Mon Sep 17 00:00:00 2001 From: Julius Date: Fri, 7 Jun 2013 09:35:22 +0200 Subject: [PATCH 4/6] Reorder delivery articles --- app/helpers/deliveries_helper.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/helpers/deliveries_helper.rb b/app/helpers/deliveries_helper.rb index e682b1d9..b8aa2393 100644 --- a/app/helpers/deliveries_helper.rb +++ b/app/helpers/deliveries_helper.rb @@ -11,7 +11,7 @@ module DeliveriesHelper end def stock_articles_for_select(supplier) - supplier.stock_articles.undeleted.map {|a| ["#{a.name} (#{number_to_currency a.price}/#{a.unit})", a.id] } + supplier.stock_articles.undeleted.reorder('articles.name ASC').map {|a| ["#{a.name} (#{number_to_currency a.price}/#{a.unit})", a.id] } end end From e74c6b4068b060fb9299a477bb1ec617314d43ec Mon Sep 17 00:00:00 2001 From: Benjamin Meichsner Date: Sun, 9 Jun 2013 17:33:11 +0200 Subject: [PATCH 5/6] Avoid having content-length warning in dev log. --- Gemfile | 3 +++ Gemfile.lock | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/Gemfile b/Gemfile index 5af84990..302469f7 100644 --- a/Gemfile +++ b/Gemfile @@ -58,4 +58,7 @@ group :development do # Hide assets requests in log gem 'quiet_assets' + + # Avoid having content-length warnings + gem 'thin' end diff --git a/Gemfile.lock b/Gemfile.lock index 821735fd..db7095bb 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -72,6 +72,7 @@ GEM commonjs (0.2.6) daemons (1.1.9) erubis (2.7.0) + eventmachine (1.0.3) exception_notification (2.6.1) actionmailer (>= 3.0.4) execjs (1.4.0) @@ -192,6 +193,10 @@ GEM test-unit (2.5.3) therubyracer (0.10.2) libv8 (~> 3.3.10) + thin (1.5.1) + daemons (>= 1.0.9) + eventmachine (>= 0.12.6) + rack (>= 1.0.0) thor (0.17.0) tilt (1.3.6) treetop (1.4.12) @@ -250,6 +255,7 @@ DEPENDENCIES sqlite3 test-unit therubyracer + thin twitter-bootstrap-rails uglifier (>= 1.0.3) whenever From 7c4ee01ff2c6b5195a1bdb7b72cc87f4799a8071 Mon Sep 17 00:00:00 2001 From: Benjamin Meichsner Date: Sun, 9 Jun 2013 18:02:47 +0200 Subject: [PATCH 6/6] Define autofill attributes when creating new supplier from shared_supplier. --- app/controllers/suppliers_controller.rb | 2 +- app/models/shared_supplier.rb | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/app/controllers/suppliers_controller.rb b/app/controllers/suppliers_controller.rb index 5a14e184..8b8af131 100644 --- a/app/controllers/suppliers_controller.rb +++ b/app/controllers/suppliers_controller.rb @@ -18,7 +18,7 @@ class SuppliersController < ApplicationController def new if params[:shared_supplier_id] shared_supplier = SharedSupplier.find(params[:shared_supplier_id]) - @supplier = shared_supplier.build_supplier(shared_supplier.attributes) + @supplier = shared_supplier.build_supplier(shared_supplier.autofill_attributes) else @supplier = Supplier.new end diff --git a/app/models/shared_supplier.rb b/app/models/shared_supplier.rb index fa1e582a..04eb290c 100644 --- a/app/models/shared_supplier.rb +++ b/app/models/shared_supplier.rb @@ -7,6 +7,12 @@ class SharedSupplier < ActiveRecord::Base has_one :supplier has_many :shared_articles, :foreign_key => :supplier_id - + + # These set of attributes are used to autofill attributes of new supplier, + # when created by import from shared supplier feature. + def autofill_attributes + whitelist = %w(name address phone fax email url delivery_days note) + attributes.select { |k,_v| whitelist.include?(k) } + end end