diff options
| author | Luc Donnet | 2017-12-11 09:20:55 +0100 | 
|---|---|---|
| committer | GitHub | 2017-12-11 09:20:55 +0100 | 
| commit | c9f2073abb231c67e87b5d0685c873c064420caa (patch) | |
| tree | e1b482d5beb76173422248baa0810556fc5a04d3 | |
| parent | 06fa06f1da0ebc4e4971c54e7795080198cc98e2 (diff) | |
| parent | c8b266dd40bd75e45ded8ccc673a45a6796a0f84 (diff) | |
| download | chouette-core-c9f2073abb231c67e87b5d0685c873c064420caa.tar.bz2 | |
Merge pull request #144 from af83/4812-display_empty_compliance_control_blocks
Refs 4812 UX changes to show empty compliance control blocks so the u…
| -rw-r--r-- | app/helpers/compliance_control_sets_helper.rb | 77 | ||||
| -rw-r--r-- | app/views/compliance_control_sets/show.html.slim | 91 | ||||
| -rw-r--r-- | config/locales/compliance_control_blocks.en.yml | 5 | ||||
| -rw-r--r-- | config/locales/compliance_control_blocks.fr.yml | 5 | ||||
| -rw-r--r-- | config/locales/compliance_controls.en.yml | 1 | ||||
| -rw-r--r-- | config/locales/compliance_controls.fr.yml | 3 | ||||
| -rw-r--r-- | spec/features/compliance_control_sets_spec.rb | 10 | 
7 files changed, 116 insertions, 76 deletions
| diff --git a/app/helpers/compliance_control_sets_helper.rb b/app/helpers/compliance_control_sets_helper.rb index bb2a72623..b5d0c5afc 100644 --- a/app/helpers/compliance_control_sets_helper.rb +++ b/app/helpers/compliance_control_sets_helper.rb @@ -36,4 +36,81 @@ module ComplianceControlSetsHelper        nil      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: :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: true, +        cls: 'table has-filter has-search', +        model: ComplianceControl +    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
\ No newline at end of file diff --git a/app/views/compliance_control_sets/show.html.slim b/app/views/compliance_control_sets/show.html.slim index e6416fda4..4385505b0 100644 --- a/app/views/compliance_control_sets/show.html.slim +++ b/app/views/compliance_control_sets/show.html.slim @@ -26,82 +26,25 @@        .col-lg-12          = render '/compliance_controls/filters' +  / compliance controls without block +  - if @direct_compliance_controls.try(:any?) +    = render_compliance_control_block +    = render_compliance_controls(@direct_compliance_controls) -    - if @direct_compliance_controls.try(:any?) -      .row -        .col-lg-12 -          h2 -            = transport_mode_text() -      .row -        .col-lg-12 -          .select_table -            = table_builder_2 @direct_compliance_controls, -                    [ \ -                TableBuilderHelper::Column.new( \ -                  key: :code, \ -                  attribute: 'code' \ -                ), \ -                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: true, -              cls: 'table has-filter has-search', -              model: ComplianceControl - +  / compliance controls with block +  - if params[:q] && params[:q][:compliance_control_block_id_eq_any].try(:present?)      - @blocks_to_compliance_controls_map.each do |block, compliance_controls| +      = render_compliance_control_block(block) +      = render_compliance_controls(compliance_controls) +  - else +    - @compliance_control_set.compliance_control_blocks.each do |block| +      = render_compliance_control_block(block) +      = render_compliance_controls(@blocks_to_compliance_controls_map[block]) -      - if compliance_controls.try(:any?) -        .row -          .col-lg-12 -            h2 -              = transport_mode_text(block) -              .btn-group -                .btn.dropdown-toggle{ data-toggle="dropdown" } -                  .span.fa.fa-cog -                ul.dropdown-menu -                  li -                    = link_to t('compliance_control_sets.actions.edit'), edit_compliance_control_set_compliance_control_block_path(@compliance_control_set.id, block.id) -                    = 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')} -        .row -          .col-lg-12 -            .select_table -              = table_builder_2 compliance_controls, -                      [ \ -                  TableBuilderHelper::Column.new( \ -                    key: :code, \ -                    attribute: 'code' \ -                  ), \ -                  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: true, -                cls: 'table has-filter has-search', -                model: ComplianceControl +  - if params[:q].present? && !@blocks_to_compliance_controls_map.try(:any?) && @direct_compliance_controls.nil? +    .row.mt-xs +      .col-lg-12 +        = replacement_msg t('compliance_controls.search_no_results') +  / flotted buttons    = flotted_links @compliance_control_set.id diff --git a/config/locales/compliance_control_blocks.en.yml b/config/locales/compliance_control_blocks.en.yml index fbface6b2..150157ff3 100644 --- a/config/locales/compliance_control_blocks.en.yml +++ b/config/locales/compliance_control_blocks.en.yml @@ -18,3 +18,8 @@ fr:        title: Create a control block      edit:        title: "Edit the control block : %{compliance_control_block}" +    metas: +      control: +        zero: "No controls" +        one: "1 control" +        other: "%{count} controls" diff --git a/config/locales/compliance_control_blocks.fr.yml b/config/locales/compliance_control_blocks.fr.yml index 66df008be..1222b5c1a 100644 --- a/config/locales/compliance_control_blocks.fr.yml +++ b/config/locales/compliance_control_blocks.fr.yml @@ -18,3 +18,8 @@ fr:        title: Créer un groupe de contrôle(s)      edit:        title: "Editer le groupe de contrôle : %{compliance_control_block}" +    metas: +      control: +        zero: "Aucun contrôle" +        one: "1 contrôle" +        other: "%{count} contrôles"
\ No newline at end of file diff --git a/config/locales/compliance_controls.en.yml b/config/locales/compliance_controls.en.yml index 0c476a46d..f9d7d23d2 100644 --- a/config/locales/compliance_controls.en.yml +++ b/config/locales/compliance_controls.en.yml @@ -13,6 +13,7 @@ en:          route: 'Route'          routing_constraint_zone: 'RoutingConstraint'          vehicle_journey: 'VehicleJourney' +    search_no_results: 'No compliance controls matching your query'      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})" diff --git a/config/locales/compliance_controls.fr.yml b/config/locales/compliance_controls.fr.yml index 70227b01f..b77b4e6d4 100644 --- a/config/locales/compliance_controls.fr.yml +++ b/config/locales/compliance_controls.fr.yml @@ -4,7 +4,7 @@ fr:        prefix: 'Copie de'      filters:        criticity: Criticité -      name: "Chercher le nom ou code d'un contrôl" +      name: "Chercher le nom ou code d'un contrôle"        subclass: Objet        subclasses:          generic: 'Généric' @@ -13,6 +13,7 @@ fr:          route: 'Itinéraire'          routing_constraint_zone: 'ITL'          vehicle_journey: 'Course' +    search_no_results: 'Aucun contrôle ne correspond à votre recherche'      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})" diff --git a/spec/features/compliance_control_sets_spec.rb b/spec/features/compliance_control_sets_spec.rb index bcb989cdc..64125a577 100644 --- a/spec/features/compliance_control_sets_spec.rb +++ b/spec/features/compliance_control_sets_spec.rb @@ -1,4 +1,5 @@  RSpec.describe "ComplianceControlSets", type: :feature do +  include TransportModeHelper    login_user @@ -12,7 +13,7 @@ RSpec.describe "ComplianceControlSets", type: :feature do    }    before do -    blox.first.update transport_mode: 'bus', transport_submode: 'bus' +    blox.first.update transport_mode: 'bus', transport_submode: 'nightBus'      blox.second.update transport_mode: 'train', transport_submode: 'train'      make_control @@ -75,6 +76,13 @@ RSpec.describe "ComplianceControlSets", type: :feature do        end      end +    context "wthout filter on compliance control block applied" do +      it "we can see empty blocks" do +        blox.first.compliance_controls.destroy_all +        expect(page).to have_content (transport_mode_text(blox.first) ) +      end +    end +    end    def make_control ccblock=nil, times: 1, severity: :warning | 
