aboutsummaryrefslogtreecommitdiffstats
path: root/app/helpers/compliance_control_sets_helper.rb
blob: a62b278584453fa3d3d439a5911764cda43d8a5c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
module ComplianceControlSetsHelper

  def organisations_filters_values
    [current_organisation, *Organisation.find_by_name("STIF")].uniq
  end

  def floating_links ccs_id
    links = [new_control(ccs_id), new_block(ccs_id)]
    if links.any?
      content_tag :div, class: 'select_toolbox', id: 'floating-links' do
        content_tag :ul do
          links.collect {|link| concat content_tag(:li, link, class: 'st_action with_text') if link} 
        end
      end
    end
  end

  def new_control ccs_id
    if policy(ComplianceControl).create?
      link_to select_type_compliance_control_set_compliance_controls_path(ccs_id) do 
        concat content_tag :span, nil, class: 'fa fa-plus'
        concat content_tag :span, t('compliance_control_sets.actions.add_compliance_control')
      end
    end
  end

  def new_block ccs_id
    if policy(ComplianceControlBlock).create?
      link_to new_compliance_control_set_compliance_control_block_path(ccs_id) do 
        concat content_tag :span, nil, class: 'fa fa-plus'
        concat content_tag :span,t('compliance_control_sets.actions.add_compliance_control_block')
      end   
    end
  end

  def render_compliance_control_block(block=nil)
    content_tag :div, class: 'row' do
      content_tag :div, class: 'col-lg-12' do
        content_tag :h2 do
          concat transport_mode_text(block)
          concat dropdown(block) if block
        end
      end
    end
  end

  def dropdown(block)
    dropdown_button = content_tag :div, class: 'btn dropdown-toggle', "data-toggle": "dropdown" do
      content_tag :div, nil, class: 'span fa fa-cog'
    end

    dropdown_menu = content_tag :ul, class: 'dropdown-menu' do
      link_1 = content_tag :li do
        link_to t('compliance_control_sets.actions.edit'), edit_compliance_control_set_compliance_control_block_path(@compliance_control_set.id, block.id)
      end
      link_2 = content_tag :li do
        link_to t('compliance_control_sets.actions.destroy'), compliance_control_set_compliance_control_block_path(@compliance_control_set.id, block.id), :method => :delete, :data => {:confirm =>  t('compliance_control_sets.actions.destroy_confirm')}
      end
      link_1 + link_2
    end

    content_tag :div, class: 'btn-group' do
      dropdown_button + dropdown_menu
    end

  end

  def render_compliance_controls(compliance_controls)
    content_tag :div, class: 'row' do
      content_tag :div, class: 'col-lg-12' do
        compliance_controls.try(:any?) ? render_table_builder(compliance_controls) : render_no_controls
      end
    end

  end

  def render_table_builder(compliance_controls)
    table = content_tag :div, class: 'select_table' do
      table_builder_2 compliance_controls,
        [
          TableBuilderHelper::Column.new(
            key: :code,
            attribute: 'code'
          ),
          TableBuilderHelper::Column.new(
            key: :subclass,
            attribute: Proc.new { |compliance_control| compliance_control.object.class.translated_subclass }
          ),
          TableBuilderHelper::Column.new(
            key: :name,
            attribute: 'name',
            link_to: lambda do |compliance_control|
              compliance_control_set_compliance_control_path(@compliance_control_set, compliance_control)
            end
          ),
          TableBuilderHelper::Column.new(
            key: :criticity,
            attribute: 'criticity'
          ),
          TableBuilderHelper::Column.new(
            key: :comment,
            attribute: 'comment'
          ),
      ],
      sortable: false,
      cls: 'table has-filter has-search',
      model: ComplianceControl,
      action: :index
    end
    metas = content_tag :div, I18n.t('compliance_control_blocks.metas.control', count: compliance_controls.count), class: 'pull-right'
    table + metas
  end

  def render_no_controls
    content_tag :div, I18n.t('compliance_control_blocks.metas.control.zero'), class: 'alert alert-warning'
  end
end