aboutsummaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/controllers/stop_areas_controller.rb27
-rw-r--r--app/helpers/stop_areas_helper.rb21
-rw-r--r--app/views/stop_areas/_filters.html.slim36
3 files changed, 34 insertions, 50 deletions
diff --git a/app/controllers/stop_areas_controller.rb b/app/controllers/stop_areas_controller.rb
index 734152c64..c3d27cc6c 100644
--- a/app/controllers/stop_areas_controller.rb
+++ b/app/controllers/stop_areas_controller.rb
@@ -120,7 +120,7 @@ class StopAreasController < ChouetteController
def collection
scope = parent.present? ? parent.stop_areas : referential.stop_areas
- scope = ransack_status(scope)
+ scope = ransack_status(scope) if params[:q] && params[:q][:status_eq_any]
@q = scope.search(params[:q])
if sort_column && sort_direction
@@ -209,21 +209,26 @@ class StopAreasController < ChouetteController
# 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_param = params[:q][:status_eq_any].reject(&:blank?)
+ params[:q].delete :status_eq_any
- @status = {
- in_creation: params[:q][:status]['in_creation'] == 'true',
- confirmed: params[:q][:status]['confirmed'] == 'true',
- deactivated: params[:q][:status]['deactivated'] == 'true',
- }
+ return scope unless status_param
+ return scope if status_param.empty? || status_param.length == 3
+
+ @status = Hash.new do |hash|
+ hash[:status_eq_any] = {
+ in_creation: status_param.include?('in_creation'),
+ confirmed: status_param.include?('confirmed'),
+ deactivated: status_param.include?('deactivated'),
+ }
+ end
+
scope = Chouette::StopArea.where(
- "confirmed_at #{(@status[:confirmed] || @status[:deactivated]) ? "IS NOT NULL" : "IS NULL"}
- AND deleted_at #{@status[:deactivated] ? "IS NOT NULL" : "IS NULL"}"
+ "confirmed_at #{(@status[:status_eq_any][:confirmed] || @status[:status_eq_any][:deactivated]) ? "IS NOT NULL" : "IS NULL"}
+ AND deleted_at #{@status[:status_eq_any][:deactivated] ? "IS NOT NULL" : "IS NULL"}"
)
- params[:q].delete :status
scope
end
end
diff --git a/app/helpers/stop_areas_helper.rb b/app/helpers/stop_areas_helper.rb
index 314154fb7..d3e7dd2a4 100644
--- a/app/helpers/stop_areas_helper.rb
+++ b/app/helpers/stop_areas_helper.rb
@@ -75,16 +75,17 @@ module StopAreasHelper
t "formtastic.hints.stop_area.registration_number"
end
- def stop_area_status(stop_area)
- if stop_area.activated?
- content_tag(:span, nil, class: 'fa fa-check-circle fa-lg text-success') +
- t('activerecord.attributes.stop_area.confirmed')
- elsif stop_area.deactivated?
- content_tag(:span, nil, class: 'fa fa-exclamation-circle fa-lg text-danger') +
- t('activerecord.attributes.stop_area.deactivated')
- else
- content_tag(:span, nil, class: 'fa fa-pencil fa-lg text-info') +
- t('activerecord.attributes.stop_area.in_creation')
+ def stop_area_status(status)
+ case status
+ when :confirmed
+ content_tag(:span, nil, class: 'fa fa-check-circle fa-lg text-success') +
+ t('activerecord.attributes.stop_area.confirmed')
+ when :deactivated
+ content_tag(:span, nil, class: 'fa fa-exclamation-circle fa-lg text-danger') +
+ t('activerecord.attributes.stop_area.deactivated')
+ else
+ content_tag(:span, nil, class: 'fa fa-pencil fa-lg text-info') +
+ t('activerecord.attributes.stop_area.in_creation')
end
end
diff --git a/app/views/stop_areas/_filters.html.slim b/app/views/stop_areas/_filters.html.slim
index cca48bb17..2bc59ce75 100644
--- a/app/views/stop_areas/_filters.html.slim
+++ b/app/views/stop_areas/_filters.html.slim
@@ -9,38 +9,16 @@
span.fa.fa-search
.ffg-row
- = f.input :zip_code_cont, placeholder: t('.zip_code'), label: Chouette::StopArea.human_attribute_name(:zip_code), required: false, wrapper_html: {class: filter_item_class(params[:q], :zip_code_cont)}
- = f.input :city_name_cont, placeholder: t('.city_name'), label: Chouette::StopArea.human_attribute_name(:city_name), required: false, wrapper_html: {class: filter_item_class(params[:q], :city_name_cont)}
+ = f.input :zip_code_cont, placeholder: t('.zip_code'), label: Chouette::StopArea.tmf('zip_code'), required: false, wrapper_html: {class: filter_item_class(params[:q], :zip_code_cont)}
+ = f.input :city_name_cont, placeholder: t('.city_name'), label: Chouette::StopArea.tmf('city_name'), required: false, wrapper_html: {class: filter_item_class(params[:q], :city_name_cont)}
.form-group.togglable class=filter_item_class(params[:q], :area_type_eq_any)
- = f.label Chouette::StopArea.human_attribute_name(:area_type), required: false, class: 'control-label'
+ = f.label Chouette::StopArea.tmf('area_type'), required: false, class: 'control-label'
= f.input :area_type_eq_any, checked: params[:q] && params[:q][:area_type_eq_any], collection: Chouette::AreaType.options, as: :check_boxes, label: false, label_method: lambda{|w| ("<span>" + w[0] + "</span>").html_safe}, required: false, wrapper_html: { class: 'checkbox_list' }
-
- .form-group.togglable class=filter_item_class(params[:q], :status)
- = f.label Chouette::StopArea.tmf('status'), required: false, class: 'control-label'
- .form-group.checkbox_list
- = f.simple_fields_for :status do |p|
- = p.input :in_creation,
- label: ("<span>#{t('activerecord.attributes.stop_area.in_creation')}<span class='fa fa-pencil text-info'></span></span>").html_safe,
- as: :boolean,
- wrapper_html: { class: 'checkbox-wrapper' },
- checked_value: true,
- unchecked_value: false,
- input_html: { checked: @status.try(:[], :in_creation) }
- = p.input :confirmed,
- label: ("<span>#{t('activerecord.attributes.stop_area.confirmed')}<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.stop_area.deleted')}<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) }
+
+ .form-group.togglable class=filter_item_class(@status, :status_eq_any)
+ = f.label Chouette::StopArea.tmf('state'), required: false, class: 'control-label'
+ = f.input :status_eq_any, checked: lambda { |w| @status.try(:[], :status_eq_any).try(:[], w)}, collection: [:in_creation, :confirmed, :deactivated], as: :check_boxes, label: false, label_method: lambda{|w| ("<span>" + stop_area_status(w) + "</span>").html_safe}, required: false, wrapper_html: { class: 'checkbox_list' }
.actions
= link_to t('actions.erase'), @workbench, class: 'btn btn-link'