diff options
| -rw-r--r-- | app/controllers/lines_controller.rb | 9 | ||||
| -rw-r--r-- | app/helpers/table_builder_helper.rb | 9 | ||||
| -rw-r--r-- | app/helpers/table_builder_helper/custom_links.rb | 5 | ||||
| -rw-r--r-- | app/helpers/table_builder_helper/url.rb | 7 | ||||
| -rw-r--r-- | app/views/lines/_filters.html.slim | 8 | ||||
| -rw-r--r-- | app/views/lines/index.html.slim | 50 | ||||
| -rw-r--r-- | spec/helpers/table_builder_helper_spec.rb | 4 | 
7 files changed, 68 insertions, 24 deletions
| diff --git a/app/controllers/lines_controller.rb b/app/controllers/lines_controller.rb index 1e2056aad..4b6448ce8 100644 --- a/app/controllers/lines_controller.rb +++ b/app/controllers/lines_controller.rb @@ -13,6 +13,15 @@ class LinesController < BreadcrumbController    def index      @hide_group_of_line = line_referential.group_of_lines.empty?      index! do |format| +      @lines = ModelDecorator.decorate( +        @lines, +        with: LineDecorator, +        context: { +          line_referential: @line_referential, +          current_organisation: current_organisation +        } +      ) +        format.html {          if collection.out_of_bounds?            redirect_to params.merge(:page => 1) diff --git a/app/helpers/table_builder_helper.rb b/app/helpers/table_builder_helper.rb index b93e9b22b..e1b8b406d 100644 --- a/app/helpers/table_builder_helper.rb +++ b/app/helpers/table_builder_helper.rb @@ -104,6 +104,10 @@ module TableBuilderHelper    end    def tbody(collection, columns, selectable, links) +    # Certain controllers don't define a `#current_referential`. In these +    # cases, avoid a `NoMethodError`. +    referential = current_referential if respond_to?(:current_referential) +      content_tag :tbody do        collection.map do |item| @@ -122,7 +126,10 @@ module TableBuilderHelper              if column_is_linkable?(column)                # Build a link to the `item` -              polymorph_url = URL.polymorphic_url_parts(item) +              polymorph_url = URL.polymorphic_url_parts( +                item, +                referential +              )                bcont << content_tag(:td, link_to(value, polymorph_url), title: 'Voir')              else                bcont << content_tag(:td, value) diff --git a/app/helpers/table_builder_helper/custom_links.rb b/app/helpers/table_builder_helper/custom_links.rb index abb907678..39cffd2cd 100644 --- a/app/helpers/table_builder_helper/custom_links.rb +++ b/app/helpers/table_builder_helper/custom_links.rb @@ -31,7 +31,10 @@ module TableBuilderHelper          polymorph_url << action        end -      polymorph_url += URL.polymorphic_url_parts(@obj) +      polymorph_url += URL.polymorphic_url_parts( +        @obj, +        @user_context.context[:referential] +      )      end      def method_for_action(action) diff --git a/app/helpers/table_builder_helper/url.rb b/app/helpers/table_builder_helper/url.rb index f60864ac1..894e5ddf8 100644 --- a/app/helpers/table_builder_helper/url.rb +++ b/app/helpers/table_builder_helper/url.rb @@ -1,12 +1,11 @@  module TableBuilderHelper -  # Depends on `current_referential`, defined in object controllers    class URL -    def self.polymorphic_url_parts(item) +    def self.polymorphic_url_parts(item, referential)        polymorph_url = []        unless item.is_a?(Calendar) || item.is_a?(Referential) -        if current_referential -          polymorph_url << current_referential +        if referential +          polymorph_url << referential            polymorph_url << item.line if item.respond_to? :line            polymorph_url << item.route.line if item.is_a?(Chouette::RoutingConstraintZone)            polymorph_url << item if item.respond_to? :line_referential diff --git a/app/views/lines/_filters.html.slim b/app/views/lines/_filters.html.slim index a0188f562..0e34b2e4c 100644 --- a/app/views/lines/_filters.html.slim +++ b/app/views/lines/_filters.html.slim @@ -8,19 +8,19 @@    .ffg-row      .form-group.togglable -      = f.label @lines.human_attribute_name(:network), required: false, class: 'control-label' +      = f.label Chouette::Line.human_attribute_name(:network), required: false, class: 'control-label'        = f.input :network_id_eq_any, collection: @line_referential.networks.order(name: :asc), as: :check_boxes, label: false, label_method: lambda{|l| ("<span>" + l.name + "</span>").html_safe}, required: false, wrapper_html: { class: 'checkbox_list'}      .form-group.togglable -      = f.label @lines.human_attribute_name(:company), required: false, class: 'control-label' +      = f.label Chouette::Line.human_attribute_name(:company), required: false, class: 'control-label'        = f.input :company_id_eq_any, collection: @line_referential.companies.order(name: :asc), as: :check_boxes, label: false, label_method: lambda{|l| ("<span>" + l.name + "</span>").html_safe}, required: false, wrapper_html: { class: 'checkbox_list'}      .form-group.togglable -      = f.label @lines.human_attribute_name(:transport_mode), required: false, class: 'control-label' +      = f.label Chouette::Line.human_attribute_name(:transport_mode), required: false, class: 'control-label'        = f.input :transport_mode_eq_any, collection: sorted_transport_mode, as: :check_boxes, label: false, label_method: lambda{|l| ("<span>" + t("enumerize.line.transport_mode.#{l}") + "</span>").html_safe}, required: false, wrapper_html: { class: 'checkbox_list'}      .form-group.togglable -      = f.label @lines.human_attribute_name(:transport_submode), required: false, class: 'control-label' +      = f.label Chouette::Line.human_attribute_name(:transport_submode), required: false, class: 'control-label'        = f.input :transport_submode_eq_any, collection: sorted_transport_submode, as: :check_boxes, label: false, label_method: lambda{|l| ("<span>" + t("enumerize.line.transport_submode.#{l}") + "</span>").html_safe}, required: false, wrapper_html: { class: 'checkbox_list'}    .actions diff --git a/app/views/lines/index.html.slim b/app/views/lines/index.html.slim index d3ee46b8a..630d63068 100644 --- a/app/views/lines/index.html.slim +++ b/app/views/lines/index.html.slim @@ -16,18 +16,44 @@      - if @lines.any?        .row          .col-lg-12 -          = table_builder @lines, -            { 'ID Codifligne' => Proc.new { |n| n.objectid.local_id }, -            :number => 'number', -            :name => 'name', -            :deactivated => Proc.new{|n| n.deactivated? ? t('false') : t('true')}, -            'networks.name' => Proc.new { |n| n.try(:network).try(:name) }, -            'companies.name' => Proc.new { |n| n.try(:company).try(:name) }, -            :transport_mode => Proc.new { |n| n.transport_mode.nil? ? '-' :  t("enumerize.line.transport_mode.#{n.try(:transport_mode)}") }, -            :transport_submode => Proc.new { |n| n.transport_submode.nil? ? '-' :  t("enumerize.line.transport_submode.#{n.try(:transport_submode)}") } }, -            [:show, :delete], -            [], -            'table has-filter has-search' +          = table_builder_2 @lines, +            [ \ +              TableBuilderHelper::Column.new( \ +                name: 'ID Codifligne', \ +                attribute: Proc.new { |n| n.objectid.local_id }, \ +                sortable: false \ +              ), \ +              TableBuilderHelper::Column.new( \ +                key: :number, \ +                attribute: 'number' \ +              ), \ +              TableBuilderHelper::Column.new( \ +                key: :name, \ +                attribute: 'name' \ +              ), \ +              TableBuilderHelper::Column.new( \ +                key: :deactivated, \ +                attribute: Proc.new{|n| n.deactivated? ? t('false') : t('true')} \ +              ), \ +              TableBuilderHelper::Column.new( \ +                key: 'networks.name', \ +                attribute: Proc.new { |n| n.try(:network).try(:name) } \ +              ), \ +              TableBuilderHelper::Column.new( \ +                key: 'companies.name', \ +                attribute: Proc.new { |n| n.try(:company).try(:name) } \ +              ), \ +              TableBuilderHelper::Column.new( \ +                key: :transport_mode, \ +                attribute: Proc.new { |n| n.transport_mode.nil? ? '-' :  t("enumerize.line.transport_mode.#{n.try(:transport_mode)}") } \ +              ), \ +              TableBuilderHelper::Column.new( \ +                key: :transport_submode, \ +                attribute: Proc.new { |n| n.transport_submode.nil? ? '-' :  t("enumerize.line.transport_submode.#{n.try(:transport_submode)}") } \ +              ) \ +            ], +            links: [:show], +            cls: 'table has-filter has-search'            = new_pagination @lines, 'pull-right' diff --git a/spec/helpers/table_builder_helper_spec.rb b/spec/helpers/table_builder_helper_spec.rb index 67980fc2c..d90c14204 100644 --- a/spec/helpers/table_builder_helper_spec.rb +++ b/spec/helpers/table_builder_helper_spec.rb @@ -176,7 +176,7 @@ describe TableBuilderHelper, type: :helper do          referential: referential        )        allow(helper).to receive(:current_user).and_return(user_context) -      allow(TableBuilderHelper::URL).to receive(:current_referential) +      allow(helper).to receive(:current_referential)          .and_return(referential)        companies = [company] @@ -284,7 +284,7 @@ describe TableBuilderHelper, type: :helper do          referential: referential        )        allow(helper).to receive(:current_user).and_return(user_context) -      allow(TableBuilderHelper::URL).to receive(:current_referential) +      allow(helper).to receive(:current_referential)          .and_return(referential)        companies = [company] | 
