aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/controllers/lines_controller.rb9
-rw-r--r--app/helpers/table_builder_helper.rb9
-rw-r--r--app/helpers/table_builder_helper/custom_links.rb5
-rw-r--r--app/helpers/table_builder_helper/url.rb7
-rw-r--r--app/views/lines/_filters.html.slim8
-rw-r--r--app/views/lines/index.html.slim50
-rw-r--r--spec/helpers/table_builder_helper_spec.rb4
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]