diff options
| author | jpl | 2016-12-02 12:14:51 +0100 | 
|---|---|---|
| committer | jpl | 2016-12-02 12:14:51 +0100 | 
| commit | 2a92002b6e4a6a54af85f8144e25944043eefb0f (patch) | |
| tree | 1897142b2219b428672c5de33878be215b036e7a | |
| parent | 76cc4431ba302bae2edf925417f438cfcf0afd57 (diff) | |
| download | chouette-core-2a92002b6e4a6a54af85f8144e25944043eefb0f.tar.bz2 | |
Refs #2015: adding sortable columns for ref_* & * (+ fix for nil values)
| -rw-r--r-- | app/controllers/companies_controller.rb | 17 | ||||
| -rw-r--r-- | app/controllers/lines_controller.rb | 15 | ||||
| -rw-r--r-- | app/controllers/networks_controller.rb | 16 | ||||
| -rw-r--r-- | app/controllers/referential_companies_controller.rb | 2 | ||||
| -rw-r--r-- | app/controllers/referential_networks_controller.rb | 2 | ||||
| -rw-r--r-- | app/controllers/referential_stop_areas_controller.rb | 6 | ||||
| -rw-r--r-- | app/controllers/stop_areas_controller.rb | 33 | ||||
| -rw-r--r-- | app/views/companies/_companies.html.slim | 2 | ||||
| -rw-r--r-- | app/views/lines/_lines.html.slim | 18 | ||||
| -rw-r--r-- | app/views/networks/_networks.html.slim | 2 | ||||
| -rw-r--r-- | app/views/referential_companies/_companies.html.slim | 2 | ||||
| -rw-r--r-- | app/views/referential_lines/_lines.html.slim | 2 | ||||
| -rw-r--r-- | app/views/referential_networks/_networks.html.slim | 2 | ||||
| -rw-r--r-- | app/views/referential_stop_areas/_stop_areas.html.slim | 2 | ||||
| -rw-r--r-- | app/views/stop_areas/_stop_areas.html.slim | 2 | 
15 files changed, 96 insertions, 27 deletions
| diff --git a/app/controllers/companies_controller.rb b/app/controllers/companies_controller.rb index 91e7c311b..bf298786a 100644 --- a/app/controllers/companies_controller.rb +++ b/app/controllers/companies_controller.rb @@ -34,8 +34,12 @@ class CompaniesController < BreadcrumbController    protected    def collection      @q = line_referential.companies.search(params[:q]) -    @companies ||= @q.result(:distinct => true).order(:name).paginate(:page => params[:page]) -    @decoratedcompanies = CompanyDecorator.decorate_collection(@companies) + +    if sort_column && sort_direction +      @companies ||= @q.result(:distinct => true).order(sort_column + ' ' + sort_direction).paginate(:page => params[:page]) +    else +      @companies ||= @q.result(:distinct => true).order(:name).paginate(:page => params[:page]) +    end    end @@ -60,4 +64,13 @@ class CompaniesController < BreadcrumbController      params.require(:company).permit( :objectid, :object_version, :creation_time, :creator_id, :name, :short_name, :organizational_unit, :operating_department_name, :code, :phone, :fax, :email, :registration_number, :url, :time_zone )    end +  private + +  def sort_column +    line_referential.companies.column_names.include?(params[:sort]) ? params[:sort] : 'name' +  end +  def sort_direction +    %w[asc desc].include?(params[:direction]) ?  params[:direction] : 'asc' +  end +  end diff --git a/app/controllers/lines_controller.rb b/app/controllers/lines_controller.rb index c6a2199c1..9a0a007aa 100644 --- a/app/controllers/lines_controller.rb +++ b/app/controllers/lines_controller.rb @@ -79,12 +79,25 @@ class LinesController < BreadcrumbController        end      end      @q = line_referential.lines.search(params[:q]) -    @lines ||= @q.result(:distinct => true).order(:number).paginate(:page => params[:page]).includes([:network, :company]) + +    if sort_column && sort_direction +      @lines ||= @q.result(:distinct => true).order(sort_column + ' ' + sort_direction).paginate(:page => params[:page]).includes([:network, :company]) +    else +      @lines ||= @q.result(:distinct => true).order(:number).paginate(:page => params[:page]).includes([:network, :company]) +    end    end    alias_method :line_referential, :parent    private + +  def sort_column +    line_referential.lines.column_names.include?(params[:sort]) ? params[:sort] : 'number' +  end +  def sort_direction +    %w[asc desc].include?(params[:direction]) ?  params[:direction] : 'asc' +  end +    def check_policy      authorize resource    end diff --git a/app/controllers/networks_controller.rb b/app/controllers/networks_controller.rb index 8d6fc9a8e..d9070e7e8 100644 --- a/app/controllers/networks_controller.rb +++ b/app/controllers/networks_controller.rb @@ -40,7 +40,12 @@ class NetworksController < BreadcrumbController    def collection      @q = line_referential.networks.search(params[:q]) -    @networks ||= @q.result(:distinct => true).order(:name).paginate(:page => params[:page]) + +    if sort_column && sort_direction +      @networks ||= @q.result(:distinct => true).order(sort_column + ' ' + sort_direction).paginate(:page => params[:page]) +    else +      @networks ||= @q.result(:distinct => true).order(:name).paginate(:page => params[:page]) +    end    end    def resource_url(network = nil) @@ -64,4 +69,13 @@ class NetworksController < BreadcrumbController      params.require(:network).permit(:objectid, :object_version, :creation_time, :creator_id, :version_date, :description, :name, :registration_number, :source_name, :source_type_name, :source_identifier, :comment )    end +  private + +  def sort_column +    line_referential.networks.column_names.include?(params[:sort]) ? params[:sort] : 'name' +  end +  def sort_direction +    %w[asc desc].include?(params[:direction]) ?  params[:direction] : 'asc' +  end +  end diff --git a/app/controllers/referential_companies_controller.rb b/app/controllers/referential_companies_controller.rb index ae5ddc1bc..882796951 100644 --- a/app/controllers/referential_companies_controller.rb +++ b/app/controllers/referential_companies_controller.rb @@ -51,7 +51,7 @@ class ReferentialCompaniesController < ChouetteController    private    def sort_column -    referential.lines.column_names.include?(params[:sort]) ? params[:sort] : 'name' +    referential.workbench.companies.column_names.include?(params[:sort]) ? params[:sort] : 'name'    end    def sort_direction      %w[asc desc].include?(params[:direction]) ?  params[:direction] : 'asc' diff --git a/app/controllers/referential_networks_controller.rb b/app/controllers/referential_networks_controller.rb index 40dcef869..711b0cc69 100644 --- a/app/controllers/referential_networks_controller.rb +++ b/app/controllers/referential_networks_controller.rb @@ -59,7 +59,7 @@ class ReferentialNetworksController < ChouetteController    private    def sort_column -    referential.lines.column_names.include?(params[:sort]) ? params[:sort] : 'name' +    referential.workbench.networks.column_names.include?(params[:sort]) ? params[:sort] : 'name'    end    def sort_direction      %w[asc desc].include?(params[:direction]) ?  params[:direction] : 'asc' diff --git a/app/controllers/referential_stop_areas_controller.rb b/app/controllers/referential_stop_areas_controller.rb index b1faff9d4..8f0d6fea3 100644 --- a/app/controllers/referential_stop_areas_controller.rb +++ b/app/controllers/referential_stop_areas_controller.rb @@ -141,7 +141,11 @@ class ReferentialStopAreasController  < ChouetteController    private    def sort_column -    referential.lines.column_names.include?(params[:sort]) ? params[:sort] : 'name' +    if parent.present? +      parent.stop_areas.include?(params[:sort]) ? params[:sort] : 'name' +    else +      referential.stop_areas.include?(params[:sort]) ? params[:sort] : 'name' +    end    end    def sort_direction      %w[asc desc].include?(params[:direction]) ?  params[:direction] : 'asc' 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 diff --git a/app/views/companies/_companies.html.slim b/app/views/companies/_companies.html.slim index 52ea668e1..a397bf06f 100644 --- a/app/views/companies/_companies.html.slim +++ b/app/views/companies/_companies.html.slim @@ -1,6 +1,6 @@  - if @companies.any?    = table_builder @companies, -    { 'Oid' => Proc.new { |n| n.objectid.local_id }, @companies.human_attribute_name(:name) => 'name', @companies.human_attribute_name(:code) => 'code' }, +    { 'Oid' => Proc.new { |n| n.try(:objectid).try(:local_id) }, @companies.human_attribute_name(:name) => 'name', @companies.human_attribute_name(:code) => 'code' },      [:show, :edit, :delete],      'table table-bordered' diff --git a/app/views/lines/_lines.html.slim b/app/views/lines/_lines.html.slim index f765f4a4d..cdb90bbba 100644 --- a/app/views/lines/_lines.html.slim +++ b/app/views/lines/_lines.html.slim @@ -1,8 +1,12 @@ -= table_builder @lines, -  { 'Oid' => Proc.new { |n| n.objectid.local_id }, @lines.human_attribute_name(:id) => 'id', -  @lines.human_attribute_name(:number) => 'number', @lines.human_attribute_name(:name) => 'name', @lines.human_attribute_name(:network) => Proc.new { |n| n.network.name }, @lines.human_attribute_name(:company) => Proc.new { |n| n.company.name }, @lines.human_attribute_name(:group_of_lines) => Proc.new { |n| n.group_of_lines.count } }, -  [:show, :edit, :delete], -  'table table-bordered' +- if @lines.any? +  = table_builder @lines, +    { 'Oid' => Proc.new { |n| n.objectid.local_id }, @lines.human_attribute_name(:id) => 'id', +    @lines.human_attribute_name(:number) => 'number', @lines.human_attribute_name(:name) => 'name', @lines.human_attribute_name(:network) => Proc.new { |n| n.try(:network).try(:name) }, @lines.human_attribute_name(:company) => Proc.new { |n| n.try(:company).try(:name) } }, +    [:show, :edit, :delete], +    'table table-bordered' -.text-center -  = will_paginate @lines, container: false, renderer: RemoteBootstrapPaginationLinkRenderer +  .text-center +    = will_paginate @lines, container: false, renderer: RemoteBootstrapPaginationLinkRenderer + +- else +  = replacement_msg t('referential_lines.search_no_results') diff --git a/app/views/networks/_networks.html.slim b/app/views/networks/_networks.html.slim index a53ca80d5..3075557e5 100644 --- a/app/views/networks/_networks.html.slim +++ b/app/views/networks/_networks.html.slim @@ -1,6 +1,6 @@  - if @networks.any?    = table_builder @networks, -    { 'Oid' => Proc.new { |n| n.objectid.local_id }, @networks.human_attribute_name(:name) => 'name' }, +    { 'Oid' => Proc.new { |n| n.try(:objectid).try(:local_id) }, @networks.human_attribute_name(:name) => 'name' },      [:show, :edit, :delete],      'table table-bordered' diff --git a/app/views/referential_companies/_companies.html.slim b/app/views/referential_companies/_companies.html.slim index a9c59f84f..697131dcb 100644 --- a/app/views/referential_companies/_companies.html.slim +++ b/app/views/referential_companies/_companies.html.slim @@ -1,6 +1,6 @@  - if @companies.any?    = table_builder @companies, -    { 'Oid' => Proc.new { |n| n.objectid.local_id }, Chouette::Company.human_attribute_name(:name) => 'name', Chouette::Company.human_attribute_name(:code) => 'code' }, +    { 'Oid' => Proc.new { |n| n.try(:objectid).try(:local_id) }, Chouette::Company.human_attribute_name(:name) => 'name', Chouette::Company.human_attribute_name(:code) => 'code' },      [:show, :edit, :delete],      'table table-bordered' diff --git a/app/views/referential_lines/_lines.html.slim b/app/views/referential_lines/_lines.html.slim index 662c42f8c..cdb90bbba 100644 --- a/app/views/referential_lines/_lines.html.slim +++ b/app/views/referential_lines/_lines.html.slim @@ -1,7 +1,7 @@  - if @lines.any?    = table_builder @lines,      { 'Oid' => Proc.new { |n| n.objectid.local_id }, @lines.human_attribute_name(:id) => 'id', -    @lines.human_attribute_name(:number) => 'number', @lines.human_attribute_name(:name) => 'name', @lines.human_attribute_name(:network) => Proc.new { |n| n.network.name }, @lines.human_attribute_name(:company) => Proc.new { |n| n.company.name }, @lines.human_attribute_name(:group_of_lines) => Proc.new { |n| n.group_of_lines.count } }, +    @lines.human_attribute_name(:number) => 'number', @lines.human_attribute_name(:name) => 'name', @lines.human_attribute_name(:network) => Proc.new { |n| n.try(:network).try(:name) }, @lines.human_attribute_name(:company) => Proc.new { |n| n.try(:company).try(:name) } },      [:show, :edit, :delete],      'table table-bordered' diff --git a/app/views/referential_networks/_networks.html.slim b/app/views/referential_networks/_networks.html.slim index 6835dcbbe..42f947f73 100644 --- a/app/views/referential_networks/_networks.html.slim +++ b/app/views/referential_networks/_networks.html.slim @@ -1,6 +1,6 @@  - if @networks.any?    = table_builder @networks, -    { 'Oid' => Proc.new { |n| n.objectid.local_id }, Chouette::Network.human_attribute_name(:name) => 'name' }, +    { 'Oid' => Proc.new { |n| n.try(:objectid).try(:local_id) }, Chouette::Network.human_attribute_name(:name) => 'name' },      [:show, :edit, :delete],      'table table-bordered' diff --git a/app/views/referential_stop_areas/_stop_areas.html.slim b/app/views/referential_stop_areas/_stop_areas.html.slim index bb646d914..f8551a0ac 100644 --- a/app/views/referential_stop_areas/_stop_areas.html.slim +++ b/app/views/referential_stop_areas/_stop_areas.html.slim @@ -1,6 +1,6 @@  - if @stop_areas.any?    = table_builder @stop_areas, -    { 'Object_id' => 'objectid', @stop_areas.human_attribute_name(:name) => 'name', @stop_areas.human_attribute_name(:registration_number) => 'registration_number', @stop_areas.human_attribute_name(:city_name) => 'city_name', @stop_areas.human_attribute_name(:zip_code) => 'zip_code', @stop_areas.human_attribute_name(:lines) => Proc.new { |n| n.lines.count } }, +    { 'Object_id' => 'objectid', @stop_areas.human_attribute_name(:name) => 'name', @stop_areas.human_attribute_name(:registration_number) => 'registration_number', @stop_areas.human_attribute_name(:city_name) => 'city_name', @stop_areas.human_attribute_name(:zip_code) => 'zip_code', @stop_areas.human_attribute_name(:lines) => Proc.new { |n| n.try(:lines).try(:count) } },      [:show, :edit, :delete],      'table table-bordered' diff --git a/app/views/stop_areas/_stop_areas.html.slim b/app/views/stop_areas/_stop_areas.html.slim index bb646d914..f8551a0ac 100644 --- a/app/views/stop_areas/_stop_areas.html.slim +++ b/app/views/stop_areas/_stop_areas.html.slim @@ -1,6 +1,6 @@  - if @stop_areas.any?    = table_builder @stop_areas, -    { 'Object_id' => 'objectid', @stop_areas.human_attribute_name(:name) => 'name', @stop_areas.human_attribute_name(:registration_number) => 'registration_number', @stop_areas.human_attribute_name(:city_name) => 'city_name', @stop_areas.human_attribute_name(:zip_code) => 'zip_code', @stop_areas.human_attribute_name(:lines) => Proc.new { |n| n.lines.count } }, +    { 'Object_id' => 'objectid', @stop_areas.human_attribute_name(:name) => 'name', @stop_areas.human_attribute_name(:registration_number) => 'registration_number', @stop_areas.human_attribute_name(:city_name) => 'city_name', @stop_areas.human_attribute_name(:zip_code) => 'zip_code', @stop_areas.human_attribute_name(:lines) => Proc.new { |n| n.try(:lines).try(:count) } },      [:show, :edit, :delete],      'table table-bordered' | 
