From 2a92002b6e4a6a54af85f8144e25944043eefb0f Mon Sep 17 00:00:00 2001 From: jpl Date: Fri, 2 Dec 2016 12:14:51 +0100 Subject: Refs #2015: adding sortable columns for ref_* & * (+ fix for nil values) --- app/controllers/stop_areas_controller.rb | 33 ++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) (limited to 'app/controllers/stop_areas_controller.rb') diff --git a/app/controllers/stop_areas_controller.rb b/app/controllers/stop_areas_controller.rb index 1fe904a40..fca33bdfb 100644 --- a/app/controllers/stop_areas_controller.rb +++ b/app/controllers/stop_areas_controller.rb @@ -139,16 +139,37 @@ class StopAreasController < BreadcrumbController def collection @q = parent.present? ? parent.stop_areas.search(params[:q]) : referential.stop_areas.search(params[:q]) - @stop_areas ||= - begin - stop_areas = @q.result.order(:name) - stop_areas = stop_areas.paginate(:page => params[:page], :per_page => @per_page) if @per_page.present? - stop_areas - end + + if sort_column && sort_direction + @stop_areas ||= + begin + stop_areas = @q.result.order(sort_column + ' ' + sort_direction) + stop_areas = stop_areas.paginate(:page => params[:page], :per_page => @per_page) if @per_page.present? + stop_areas + end + else + @stop_areas ||= + begin + stop_areas = @q.result.order(:name) + stop_areas = stop_areas.paginate(:page => params[:page], :per_page => @per_page) if @per_page.present? + stop_areas + end + end end private + def sort_column + if parent.present? + parent.stop_areas.column_names.include?(params[:sort]) ? params[:sort] : 'name' + else + referential.stop_areas.column_names.include?(params[:sort]) ? params[:sort] : 'name' + end + end + def sort_direction + %w[asc desc].include?(params[:direction]) ? params[:direction] : 'asc' + end + alias_method :current_referential, :stop_area_referential helper_method :current_referential -- cgit v1.2.3