aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcedricnjanga2018-03-12 06:17:02 -0700
committercedricnjanga2018-03-12 06:17:02 -0700
commite02ada352a0b204783fbc67d7c2a4266d2551082 (patch)
tree92f446c0938f88f2ab7852cae1eb40f4e07a2f7d
parentba30cc2c8772dbd1934d032e2a3a6a66795df4e2 (diff)
downloadchouette-core-e02ada352a0b204783fbc67d7c2a4266d2551082.tar.bz2
Refs #5146 Line state update
-rw-r--r--app/controllers/lines_controller.rb20
-rw-r--r--app/helpers/referentials_helper.rb6
-rw-r--r--app/views/lines/_filters.html.slim20
-rw-r--r--app/views/lines/index.html.slim4
-rw-r--r--config/locales/lines.en.yml3
-rw-r--r--config/locales/lines.fr.yml3
-rw-r--r--spec/features/lines_spec.rb10
7 files changed, 60 insertions, 6 deletions
diff --git a/app/controllers/lines_controller.rb b/app/controllers/lines_controller.rb
index 27a9bf9be..6b002e4f6 100644
--- a/app/controllers/lines_controller.rb
+++ b/app/controllers/lines_controller.rb
@@ -89,7 +89,9 @@ class LinesController < ChouetteController
params[:q]["#{filter}_blank"] = '1'
end
end
- @q = line_referential.lines.search(params[:q])
+
+ scope = ransack_status line_referential.lines
+ @q = scope.search(params[:q])
if sort_column && sort_direction
@lines ||= @q.result(:distinct => true).order(sort_column + ' ' + sort_direction).paginate(:page => params[:page]).includes([:network, :company])
@@ -145,4 +147,20 @@ class LinesController < ChouetteController
)
end
+ # Fake ransack filter
+ def ransack_status scope
+ return scope unless params[:q].try(:[], :status)
+ return scope if params[:q][:status].values.uniq.length == 1
+
+ @status = {
+ activated: params[:q][:status]['activated'] == 'true',
+ deactivated: params[:q][:status]['deactivated'] == 'true',
+ }
+
+ scope = Chouette::Line.where(deactivated: @status[@status.key(true)])
+
+ params[:q].delete :status
+ scope
+end
+
end
diff --git a/app/helpers/referentials_helper.rb b/app/helpers/referentials_helper.rb
index e464ec8a5..9c3852322 100644
--- a/app/helpers/referentials_helper.rb
+++ b/app/helpers/referentials_helper.rb
@@ -2,12 +2,12 @@ module ReferentialsHelper
# Outputs a green check icon and the text "Oui" or a red exclamation mark
# icon and the text "Non" based on `status`
def line_status(status)
- if status
+ if status
content_tag(:span, nil, class: 'fa fa-exclamation-circle fa-lg text-danger') +
- t('false')
+ t('activerecord.attributes.line.deactivated')
else
content_tag(:span, nil, class: 'fa fa-check-circle fa-lg text-success') +
- t('true')
+ t('activerecord.attributes.line.activated')
end
end
diff --git a/app/views/lines/_filters.html.slim b/app/views/lines/_filters.html.slim
index 67ba297cf..c221a02a1 100644
--- a/app/views/lines/_filters.html.slim
+++ b/app/views/lines/_filters.html.slim
@@ -23,6 +23,26 @@
= f.label Chouette::Line.human_attribute_name(:transport_submode), required: false, class: 'control-label'
= f.input :transport_submode_eq_any, collection: StifTransportSubmodeEnumerations.sorted_transport_submodes, as: :check_boxes, label: false, label_method: lambda{|l| ("<span>" + t("enumerize.transport_submode.#{l}") + "</span>").html_safe}, required: false, wrapper_html: { class: 'checkbox_list'}
+ .form-group.togglable class=filter_item_class(params[:q], :status)
+ = f.label Chouette::Line.human_attribute_name(:state), required: false, class: 'control-label'
+ .form-group.checkbox_list
+ = f.simple_fields_for :status do |p|
+ = p.input :activated,
+ label: ("<span>#{t('activerecord.attributes.line.activated')}<span class='fa fa-check-circle text-success'></span></span>").html_safe,
+ as: :boolean,
+ wrapper_html: { class: 'checkbox-wrapper' },
+ checked_value: true,
+ unchecked_value: false,
+ input_html: { checked: @status.try(:[], :confirmed) }
+ = p.input :deactivated,
+ label: ("<span>#{t('activerecord.attributes.line.deactivated')}<span class='fa fa-exclamation-circle text-danger'></span></span>").html_safe,
+ as: :boolean,
+ wrapper_html: { class: 'checkbox-wrapper' },
+ checked_value: true,
+ unchecked_value: false,
+ input_html: { checked: @status.try(:[], :deactivated) }
+
+
.actions
= link_to 'Effacer', @workbench, class: 'btn btn-link'
= f.submit 'Filtrer', class: 'btn btn-default'
diff --git a/app/views/lines/index.html.slim b/app/views/lines/index.html.slim
index 2d64e5f73..e77518d57 100644
--- a/app/views/lines/index.html.slim
+++ b/app/views/lines/index.html.slim
@@ -29,8 +29,8 @@
end \
), \
TableBuilderHelper::Column.new( \
- key: :deactivated, \
- attribute: Proc.new { |n| line_status(n.deactivated?) } \
+ name: t('activerecord.attributes.line.state'), \
+ attribute: Proc.new { |n| line_status(n.deactivated) } \
), \
TableBuilderHelper::Column.new( \
key: 'networks.name', \
diff --git a/config/locales/lines.en.yml b/config/locales/lines.en.yml
index 8e0189bd8..94b34a63b 100644
--- a/config/locales/lines.en.yml
+++ b/config/locales/lines.en.yml
@@ -116,6 +116,9 @@ en:
creator_id: "Created by"
footnotes: "Footnotes"
stable_id: External permanent idenifier"
+ state: State
+ activated: Activated
+ deactivated: Deactivated
formtastic:
titles:
line:
diff --git a/config/locales/lines.fr.yml b/config/locales/lines.fr.yml
index 2159f06ab..5f2110db8 100644
--- a/config/locales/lines.fr.yml
+++ b/config/locales/lines.fr.yml
@@ -116,6 +116,9 @@ fr:
creator_id: "Créé par"
footnotes: "Notes de bas de page"
stable_id: "Identifiant externe pérenne"
+ state: État
+ activated: Activée
+ deactivated: Désactivée
formtastic:
titles:
line:
diff --git a/spec/features/lines_spec.rb b/spec/features/lines_spec.rb
index f176e34fe..459c065cb 100644
--- a/spec/features/lines_spec.rb
+++ b/spec/features/lines_spec.rb
@@ -46,6 +46,16 @@ describe "Lines", type: :feature do
expect(page).to have_content(lines.first.name)
expect(page).not_to have_content(lines.last.name)
end
+
+ xit 'supports filtering by status' do
+ lines.first.update_attribute(:deactivated, true)
+ lines.last.update_attribute(:deactivated, false)
+
+ find('#q_status_activated').set(true)
+ click_button 'search-btn'
+ expect(page).to have_content(lines.first.name)
+ expect(page).not_to have_content(lines.last.name)
+ end
end
end