diff options
| author | Zog | 2018-04-11 11:38:22 +0200 | 
|---|---|---|
| committer | Zog | 2018-04-11 11:38:22 +0200 | 
| commit | 1962a33393f5cd0c206dc560e5d3116344393036 (patch) | |
| tree | 38ca5ef728bbb089f7bf8fb286f7a3f8f1513d60 | |
| parent | 2d1ebb630ecfdd7b745571202ee60a35902b545f (diff) | |
| download | chouette-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.rb | 13 | ||||
| -rw-r--r-- | app/models/chouette/area_type.rb | 8 | 
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 | 
