From 1962a33393f5cd0c206dc560e5d3116344393036 Mon Sep 17 00:00:00 2001 From: Zog Date: Wed, 11 Apr 2018 11:38:22 +0200 Subject: Refs #6493; Sort StopAreas on the type label, instead of the internal key --- app/controllers/stop_areas_controller.rb | 13 ++++++++++++- 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 -- cgit v1.2.3