diff options
Diffstat (limited to 'app')
| -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 |
5 files changed, 136 insertions, 35 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' |
