aboutsummaryrefslogtreecommitdiffstats
path: root/app/controllers/stop_areas_controller.rb
diff options
context:
space:
mode:
authorjpl2016-12-02 12:14:51 +0100
committerjpl2016-12-02 12:14:51 +0100
commit2a92002b6e4a6a54af85f8144e25944043eefb0f (patch)
tree1897142b2219b428672c5de33878be215b036e7a /app/controllers/stop_areas_controller.rb
parent76cc4431ba302bae2edf925417f438cfcf0afd57 (diff)
downloadchouette-core-2a92002b6e4a6a54af85f8144e25944043eefb0f.tar.bz2
Refs #2015: adding sortable columns for ref_* & * (+ fix for nil values)
Diffstat (limited to 'app/controllers/stop_areas_controller.rb')
-rw-r--r--app/controllers/stop_areas_controller.rb33
1 files changed, 27 insertions, 6 deletions
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