From 5a7fe1743790c75cedb7a121a6e74d46140af784 Mon Sep 17 00:00:00 2001 From: sandoz Date: Wed, 1 Apr 2009 06:46:01 +0800 Subject: [PATCH] Make list of ordered articles sortable in _edit_results_by_articles * For the moment you can sort by article name and order number Signed-off-by: bennibu --- .../finance/balancing_controller.rb | 33 +++++++++++++++++-- app/helpers/application_helper.rb | 4 +-- .../_edit_results_by_articles.html.haml | 8 +++-- 3 files changed, 37 insertions(+), 8 deletions(-) diff --git a/app/controllers/finance/balancing_controller.rb b/app/controllers/finance/balancing_controller.rb index 570bce98..98c4dde7 100644 --- a/app/controllers/finance/balancing_controller.rb +++ b/app/controllers/finance/balancing_controller.rb @@ -15,13 +15,40 @@ class Finance::BalancingController < ApplicationController def new @order = Order.find(params[:id]) @comments = @order.comments + + if params['sort'] + sort = case params['sort'] + when "name" then "articles.name" + when "order_number" then "articles.order_number" + when "name_reverse" then "articles.name DESC" + when "order_number_reverse" then "articles.order_number DESC" + end + else + sort = "articles.name" + end + + @articles = @order.order_articles.ordered.find( + :all, + :include => :article, + :order => sort + ) + case params[:view] when 'editResults' - render :partial => 'edit_results_by_articles' + render :partial => 'edit_results_by_articles' and return when 'groupsOverview' - render :partial => 'shared/articles_by_groups', :locals => {:order => @order} + render :partial => 'shared/articles_by_groups', :locals => {:order => @order} and return when 'articlesOverview' - render :partial => 'shared/articles_by_articles', :locals => {:order => @order} + render :partial => 'shared/articles_by_articles', :locals => {:order => @order} and return + end + + respond_to do |format| + format.html # new.haml + format.js do + render :update do |page| + page.replace_html 'results', :partial => "edit_results_by_articles" + end + end end end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index dad7a467..98a0a5ce 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -58,7 +58,7 @@ module ApplicationHelper return result end - def sort_link_helper(text, param, per_page = (@per_page || 10) ) + def sort_link_helper(text, param, per_page = (@per_page || 10), action = "list" ) key = param key += "_reverse" if params[:sort] == param options = { @@ -69,7 +69,7 @@ module ApplicationHelper } html_options = { :title => _('Sort by this field'), - :href => url_for(:action => 'list', :params => params.merge({:sort => key, :page => nil, :per_page => per_page})) + :href => url_for(:action => action, :params => params.merge({:sort => key, :page => nil, :per_page => per_page})) } link_to_remote(text, options, html_options) end diff --git a/app/views/finance/balancing/_edit_results_by_articles.html.haml b/app/views/finance/balancing/_edit_results_by_articles.html.haml index fe05c804..699321c7 100644 --- a/app/views/finance/balancing/_edit_results_by_articles.html.haml +++ b/app/views/finance/balancing/_edit_results_by_articles.html.haml @@ -6,8 +6,10 @@ %table{:class => "ordered_articles", :style => "clear:both"} %thead %tr - %th{:colspan => "1"} Artikel - %th Nr. + %th[sort_td_class_helper "name"]{:colspan => "1"} + = sort_link_helper "Artikel", "name", 1000, "new" + %th[sort_td_class_helper "order_number"] + = sort_link_helper "Nr.", "order_number", 1000, "new" %th Menge %th GebGr * Einheit %th Netto @@ -16,5 +18,5 @@ %th Pfand %th{:colspan => "2"} %tbody#result_table - - for order_article in @order.order_articles.ordered.all(:include => [:article, :article_price]) + - for order_article in @articles = render :partial => "order_article_result", :locals => {:order_article => order_article}