diff options
| author | Robert | 2017-10-27 08:31:36 +0200 |
|---|---|---|
| committer | Xinhui | 2017-11-03 12:26:41 +0100 |
| commit | c29671392e88d6e4a29e6eaea3a1d7b9cfd21529 (patch) | |
| tree | 3229769556f238f08caec1572b678bca79d2f8ad | |
| parent | 2f518afba3392d102afdc4dfa5da1c93acba6fec (diff) | |
| download | chouette-core-c29671392e88d6e4a29e6eaea3a1d7b9cfd21529.tar.bz2 | |
Refs: #4774@3h;
Ransack filter view implemented
| -rw-r--r-- | app/controllers/compliance_control_sets_controller.rb | 14 | ||||
| -rw-r--r-- | app/models/compliance_control.rb | 43 | ||||
| -rw-r--r-- | app/views/compliance_control_sets/simple.html.slim | 34 | ||||
| -rw-r--r-- | app/views/compliance_controls/_filters.html.slim | 42 | ||||
| -rw-r--r-- | app/views/compliance_controls/_simple_filters.html.slim | 38 | ||||
| -rw-r--r-- | config/locales/compliance_controls.en.yml | 6 | ||||
| -rw-r--r-- | config/locales/compliance_controls.fr.yml | 10 | ||||
| -rw-r--r-- | config/routes.rb | 1 |
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 |
