aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcedricnjanga2017-12-08 16:58:34 +0100
committercedricnjanga2017-12-08 17:18:54 +0100
commitc8b266dd40bd75e45ded8ccc673a45a6796a0f84 (patch)
treeec58fcd1b542cbc74e5492b709037e39a08dd22b
parent0bb71d8146126f4f2c53ca0c7145f0e7d5eaeda5 (diff)
downloadchouette-core-4812-display_empty_compliance_control_blocks.tar.bz2
Refs 4812 UX changes to show empty compliance control blocks so the user can see them all4812-display_empty_compliance_control_blocks
-rw-r--r--app/helpers/compliance_control_sets_helper.rb77
-rw-r--r--app/views/compliance_control_sets/show.html.slim91
-rw-r--r--config/locales/compliance_control_blocks.en.yml5
-rw-r--r--config/locales/compliance_control_blocks.fr.yml5
-rw-r--r--config/locales/compliance_controls.en.yml1
-rw-r--r--config/locales/compliance_controls.fr.yml3
-rw-r--r--spec/features/compliance_control_sets_spec.rb10
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