aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZog2018-04-11 11:38:22 +0200
committerZog2018-04-11 11:38:22 +0200
commit1962a33393f5cd0c206dc560e5d3116344393036 (patch)
tree38ca5ef728bbb089f7bf8fb286f7a3f8f1513d60
parent2d1ebb630ecfdd7b745571202ee60a35902b545f (diff)
downloadchouette-core-1962a33393f5cd0c206dc560e5d3116344393036.tar.bz2
Refs #6493; Sort StopAreas on the type label, instead of the internal key
-rw-r--r--app/controllers/stop_areas_controller.rb13
-rw-r--r--app/models/chouette/area_type.rb8
2 files changed, 16 insertions, 5 deletions
diff --git a/app/controllers/stop_areas_controller.rb b/app/controllers/stop_areas_controller.rb
index b2634467d..76732afd7 100644
--- a/app/controllers/stop_areas_controller.rb
+++ b/app/controllers/stop_areas_controller.rb
@@ -126,7 +126,18 @@ class StopAreasController < ChouetteController
if sort_column && sort_direction
@stop_areas ||=
begin
- stop_areas = @q.result.order(sort_column + ' ' + sort_direction)
+ if sort_column == "area_type"
+ sorted_area_type_labels = Chouette::AreaType.options(:all, I18n.locale).sort.transpose.last
+ sorted_area_type_labels = sorted_area_type_labels.reverse if sort_direction != 'asc'
+ order_by = ["CASE"]
+ sorted_area_type_labels.each_with_index do |area_type, index|
+ order_by << "WHEN area_type='#{area_type}' THEN #{index}"
+ end
+ order_by << "END"
+ stop_areas = @q.result.order(order_by.join(" "))
+ else
+ stop_areas = @q.result.order(sort_column + ' ' + sort_direction)
+ end
stop_areas = stop_areas.paginate(:page => params[:page], :per_page => @per_page) if @per_page.present?
stop_areas
end
diff --git a/app/models/chouette/area_type.rb b/app/models/chouette/area_type.rb
index e17d2ee8d..4feb5c914 100644
--- a/app/models/chouette/area_type.rb
+++ b/app/models/chouette/area_type.rb
@@ -34,9 +34,9 @@ class Chouette::AreaType
@@options = {}
end
- def self.options(kind=:all)
+ def self.options(kind=:all, locale=nil)
@@options ||= {}
- @@options[kind] ||= self.send(kind).map { |c| find(c) }.map { |t| [ t.label, t.code ] }
+ @@options[kind] ||= self.send(kind).map { |c| find(c) }.map { |t| [ t.label(locale), t.code ] }
end
attr_reader :code
@@ -48,8 +48,8 @@ class Chouette::AreaType
all.index(code) <=> all.index(other.code)
end
- def label
- I18n.translate code, scope: 'area_types.label'
+ def label locale=nil
+ I18n.translate code, scope: 'area_types.label', locale: locale
end
end