diff options
| author | Robert | 2017-10-27 08:31:36 +0200 | 
|---|---|---|
| committer | Robert | 2017-10-31 19:11:05 +0100 | 
| commit | 148d05e5c7db7861c167a97d67a6b6da5ea5d9e7 (patch) | |
| tree | 3229769556f238f08caec1572b678bca79d2f8ad | |
| parent | e078a86f2bd642d5500044a255df75df8251ad9f (diff) | |
| download | chouette-core-148d05e5c7db7861c167a97d67a6b6da5ea5d9e7.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 | 
