aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert2017-10-27 08:31:36 +0200
committerXinhui2017-11-03 12:26:41 +0100
commitc29671392e88d6e4a29e6eaea3a1d7b9cfd21529 (patch)
tree3229769556f238f08caec1572b678bca79d2f8ad
parent2f518afba3392d102afdc4dfa5da1c93acba6fec (diff)
downloadchouette-core-c29671392e88d6e4a29e6eaea3a1d7b9cfd21529.tar.bz2
Refs: #4774@3h;
Ransack filter view implemented
-rw-r--r--app/controllers/compliance_control_sets_controller.rb14
-rw-r--r--app/models/compliance_control.rb43
-rw-r--r--app/views/compliance_control_sets/simple.html.slim34
-rw-r--r--app/views/compliance_controls/_filters.html.slim42
-rw-r--r--app/views/compliance_controls/_simple_filters.html.slim38
-rw-r--r--config/locales/compliance_controls.en.yml6
-rw-r--r--config/locales/compliance_controls.fr.yml10
-rw-r--r--config/routes.rb1
8 files changed, 149 insertions, 39 deletions
diff --git a/app/controllers/compliance_control_sets_controller.rb b/app/controllers/compliance_control_sets_controller.rb
index f576a55c5..ac07c5495 100644
--- a/app/controllers/compliance_control_sets_controller.rb
+++ b/app/controllers/compliance_control_sets_controller.rb
@@ -21,12 +21,22 @@ class ComplianceControlSetsController < InheritedResources::Base
@compliance_controls = @compliance_control_set.compliance_controls
@q_controls_form = @compliance_controls.ransack(params[:q])
@compliance_controls =
- decorate_compliance_controls( @compliance_controls)
- .group_by(&:compliance_control_block)
+ decorate_compliance_controls( @compliance_controls)
+ .group_by(&:compliance_control_block)
}
end
end
+ def simple
+ show! do | format |
+ format.html do
+ @compliance_controls = @compliance_control_set.compliance_controls
+ @q_controls_form = @compliance_controls.ransack(params[:q])
+ @compliance_control_set = @compliance_control_set.decorate
+ end
+ end
+ end
+
def clone
ComplianceControlSetCloner.new.copy(params[:id], current_organisation.id)
flash[:notice] = I18n.t("compliance_control_sets.errors.operation_in_progress")
diff --git a/app/models/compliance_control.rb b/app/models/compliance_control.rb
index 08efa7e9a..e00a2c109 100644
--- a/app/models/compliance_control.rb
+++ b/app/models/compliance_control.rb
@@ -1,9 +1,31 @@
class ComplianceControl < ActiveRecord::Base
+
+ class << self
+ def criticities; %i(warning error) end
+ def default_code; "" end
+ def dynamic_attributes
+ hstore_metadata_for_control_attributes.keys
+ end
+
+ def policy_class
+ ComplianceControlPolicy
+ end
+
+ def inherited(child)
+ child.instance_eval do
+ def model_name
+ ComplianceControl.model_name
+ end
+ end
+ super
+ end
+ end
+
extend Enumerize
belongs_to :compliance_control_set
belongs_to :compliance_control_block
- enumerize :criticity, in: %i(warning error), scope: true, default: :warning
+ enumerize :criticity, in: criticities, scope: true, default: :warning
hstore_accessor :control_attributes, {}
validates :criticity, presence: true
@@ -23,25 +45,6 @@ class ComplianceControl < ActiveRecord::Base
direct_set_name: names.last))
end
- class << self
- def default_code; "" end
- def dynamic_attributes
- hstore_metadata_for_control_attributes.keys
- end
-
- def policy_class
- ComplianceControlPolicy
- end
-
- def inherited(child)
- child.instance_eval do
- def model_name
- ComplianceControl.model_name
- end
- end
- super
- end
- end
def initialize(attributes = {})
super
diff --git a/app/views/compliance_control_sets/simple.html.slim b/app/views/compliance_control_sets/simple.html.slim
new file mode 100644
index 000000000..73f127646
--- /dev/null
+++ b/app/views/compliance_control_sets/simple.html.slim
@@ -0,0 +1,34 @@
+/ PageHeader
+= pageheader 'Simple',
+ t('compliance_control_sets.show.title', name: @compliance_control_set.name),
+ 'Lorem ipsum dolor sit amet'
+
+
+/ PageContent
+.page_content
+ .container-fluid
+ .row
+ .col-lg-6.col-md-6.col-sm-12.col-xs-12
+ = definition_list t('metadatas'),
+ ComplianceControlSet.human_attribute_name(:name) => @compliance_control_set.name
+ - if params[:q].present? or @compliance_controls.any?
+ .row
+ .col-lg-12
+ = render '/compliance_controls/simple_filters'
+
+ - if @compliance_controls.any?
+ .row
+ .col-lg-12
+ .select_table
+ table
+ thead
+ th id
+ th name
+ tbody
+ - @compliance_controls.each do | cc |
+ tr
+ td
+ = cc.id
+ td
+ = cc.name
+
diff --git a/app/views/compliance_controls/_filters.html.slim b/app/views/compliance_controls/_filters.html.slim
index b9cb69a2a..55490e01b 100644
--- a/app/views/compliance_controls/_filters.html.slim
+++ b/app/views/compliance_controls/_filters.html.slim
@@ -1,27 +1,43 @@
= search_form_for @q_controls_form,
- url: compliance_control_set_compliance_controls_path(@compliance_control_set),
- builder: SimpleForm::FormBuilder,
+ url: compliance_control_set_path(@compliance_control_set),
+ builder: SimpleForm::FormBuilder,
class: 'form form-filter' do |f|
-// Rewriting the ransack filter copied from cc_stes/_filter
.ffg-row
.input-group.search_bar
- = f.search_field :name_cont, class: 'form-control', placeholder: t('compliance_control_sets.filters.name')
+ = f.search_field :name_cont,
+ class: 'form-control',
+ placeholder: t('compliance_controls.filters.name')
span.input-group-btn
button.btn.btn-default type='submit'
span.fa.fa-search
+
.ffg-row
.form-group.togglable
- = f.label t('activerecord.models.organisation.one'), required: false, class: 'control-label'
- = f.input :organisation_name_eq_any, collection: organisations_filters_values, as: :check_boxes, label: false, label_method: lambda {|w| ("<span>#{w.name}</span>").html_safe}, required: false, wrapper_html: {class: 'checkbox_list'}
-
+ = f.label t('activerecord.models.compliance_control_block.one'), required: false, class: 'control-label'
+ = f.input :compliance_control_block_name_eq_any,
+ collection: @compliance_control_set.compliance_control_blocks,
+ as: :check_boxes,
+ label: true,
+ label_method: lambda {|w| ("<span>#{w.name}</span>").html_safe},
+ required: false,
+ wrapper_html: {class: 'checkbox_list'}
+ .form-group.togglable
+ = f.label t('compliance_controls.filters.comment'), required: false, class: 'control-label'
+ = f.collection_check_boxes :comment_eq_any,
+ @compliance_control_set.compliance_controls,
+ :id, :comment,
+ label: true,
+ wrapper_html: {class: 'checkbox_list'}
.form-group.togglable
- = f.label Import.human_attribute_name(:updated_at), required: false, class: 'control-label'
- .filter_menu
- = f.simple_fields_for :updated_at do |p|
- = p.input :start_date, as: :date, label: false, wrapper_html: {class: 'date smart_date filter_menu-item'}, default: @begin_range, include_blank: @begin_range ? false : true
- = p.input :end_date, as: :date, label: false, wrapper_html: {class: 'date smart_date filter_menu-item'}, default: @end_range, include_blank: @end_range ? false : true
+ = f.label t('compliance_controls.filters.criticity'), required: false, class: 'control-label'
+ = f.input :criticity_eq,
+ collection: ComplianceControl.criticities,
+ as: :check_boxes,
+ label: true,
+ required: false,
+ wrapper_html: {class: 'checkbox_list'}
.actions
= link_to t('actions.erase'), @compliance_control_set, class: 'btn btn-link'
- = f.submit t('actions.filter'), class: 'btn btn-default', id: 'compliance_control_set_filter_btn'
+ = f.submit t('actions.filter'), class: 'btn btn-default', id: 'compliance_control_set_compliance_controls_filter_btn'
diff --git a/app/views/compliance_controls/_simple_filters.html.slim b/app/views/compliance_controls/_simple_filters.html.slim
new file mode 100644
index 000000000..da037c051
--- /dev/null
+++ b/app/views/compliance_controls/_simple_filters.html.slim
@@ -0,0 +1,38 @@
+= search_form_for @q_controls_form,
+ url: simple_compliance_control_set_path(@compliance_control_set),
+ builder: SimpleForm::FormBuilder,
+ class: 'form form-filter' do |f|
+
+ .ffg-row
+ .input-group.search_bar
+ = f.search_field :name_cont,
+ class: 'form-control',
+ placeholder: t('compliance_controls.filters.name')
+ span.input-group-btn
+ button.btn.btn-default type='submit'
+ span.fa.fa-search
+
+ .ffg-row
+ .form-group.togglable
+ = f.label t('activerecord.models.compliance_control_block.one'), required: false, class: 'control-label'
+ = f.input :compliance_control_block_id_eq_any,
+ collection: @compliance_control_set.compliance_control_blocks,
+ as: :check_boxes,
+ label: false,
+ label_method: lambda {|w| ("<span>#{w.name}</span>").html_safe},
+ required: false,
+ wrapper_html: {class: 'checkbox_list'}
+
+ .form-group.togglable
+ = f.label t('compliance_controls.filters.criticity'), required: false, class: 'control-label'
+ = f.input :criticity_eq,
+ collection: ComplianceControl.criticities,
+ as: :check_boxes,
+ label: false,
+ label_method: lambda {|w| ("<span>#{w}</span>").html_safe},
+ required: false,
+ wrapper_html: {class: 'checkbox_list'}
+
+ .actions
+ = link_to t('actions.erase'), @compliance_control_set, class: 'btn btn-link'
+ = f.submit t('actions.filter'), class: 'btn btn-default', id: 'compliance_control_set_compliance_controls_filter_btn'
diff --git a/config/locales/compliance_controls.en.yml b/config/locales/compliance_controls.en.yml
index 887bc2009..f39f54e5b 100644
--- a/config/locales/compliance_controls.en.yml
+++ b/config/locales/compliance_controls.en.yml
@@ -2,6 +2,10 @@ en:
compliance_controls:
clone:
prefix: 'Copy of'
+ filters:
+ comment: Object
+ criticity: Severity
+ name: "Search by a control's name or code"
min_max_values: "the minimum (%{min}) is not supposed to be greater than the maximum (%{max})"
errors:
incoherent_control_sets: "Impossible to assign a control to a set (id: %{direct_set_name}) differing from the one of its group (id: %{indirect_set_name})"
@@ -179,4 +183,4 @@ en:
compliance_control_block: "Control Block"
minimum: "Minimum"
maximum: "Maximum"
- target: "Target" \ No newline at end of file
+ target: "Target"
diff --git a/config/locales/compliance_controls.fr.yml b/config/locales/compliance_controls.fr.yml
index 2feb201bf..312638379 100644
--- a/config/locales/compliance_controls.fr.yml
+++ b/config/locales/compliance_controls.fr.yml
@@ -2,6 +2,10 @@ fr:
compliance_controls:
clone:
prefix: 'Copie de'
+ filters:
+ comment: Objet
+ criticity: Criticité
+ name: "Chercher le nom ou code d'un contrôl"
min_max_values: "la valeur de minimum (%{min}) ne doit pas être superieur à la valuer du maximum (%{max})"
errors:
incoherent_control_sets: "Le contrôle ne peut pas être associé à un jeu de contrôle (id: %{direct_set_name}) différent de celui de son groupe (id: %{indirect_set_name})"
@@ -119,7 +123,7 @@ fr:
activerecord:
models:
compliance_control:
- one: "controle"
+ one: "contrôle"
other: "contrôles"
route_control/zdl_stop_area:
one: "Deux arrêts d’une même ZDL ne peuvent pas se succéder dans un itinéraire"
@@ -130,7 +134,7 @@ fr:
route_control/duplicates:
one: "Détection de double définition d'itinéraire"
route_control/opposite_route_terminus:
- one: "Vérification des terminus de l'itinéraire inverse"
+ one: "Vérification des terminus de l'itinéraire inverse"
route_control/minimum_length:
one: "Un itinéraire doit contenir au moins 2 arrêts"
route_control/omnibus_journey_pattern:
@@ -179,4 +183,4 @@ fr:
compliance_control_block: "Groupe de contrôle"
minimum: "Minimum"
maximum: "Maximum"
- target: "Cible" \ No newline at end of file
+ target: "Cible"
diff --git a/config/routes.rb b/config/routes.rb
index b105e77d6..27c3c3044 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -74,6 +74,7 @@ ChouetteIhm::Application.routes.draw do
resources :api_keys, :only => [:edit, :update, :new, :create, :destroy]
resources :compliance_control_sets do
+ get :simple, on: :member
get :clone, on: :member
resources :compliance_controls, except: :index do
get :select_type, on: :collection