feat(routing): add message if no type de champs routable
This commit is contained in:
parent
80b5f6bc1d
commit
c4d64d9775
4 changed files with 72 additions and 23 deletions
|
@ -13,6 +13,10 @@ class Procedure::RoutingRulesComponent < ApplicationComponent
|
|||
end
|
||||
end
|
||||
|
||||
def can_route?
|
||||
available_targets_for_select.present?
|
||||
end
|
||||
|
||||
def targeted_champ_tag(targeted_champ, row_index)
|
||||
select_tag(
|
||||
'targeted_champ',
|
||||
|
|
|
@ -6,3 +6,7 @@ fr:
|
|||
Ajoutez des règles de routage à partir de champs créés dans le formulaire.
|
||||
Si les mêmes règles de routage sont appliquées à plusieurs groupes,
|
||||
les dossiers seront routés vers le premier groupe affiché dans la liste.
|
||||
routing_rules_warning_html: |
|
||||
Pour appliquer des règles de routage, votre formulaire doit comporter
|
||||
au moins un champ « choix simple ». <br>
|
||||
Ajoutez ce champ dans la page <a href="%{path}">« Configuration des champs »</a>
|
||||
|
|
|
@ -1,26 +1,29 @@
|
|||
.card#routing-rules
|
||||
.card-title
|
||||
= t('.apply_routing_rules')
|
||||
%p.notice
|
||||
= t('.routing_rules_notice')
|
||||
.conditionnel.mt-2.width-100
|
||||
%table.condition-table.mt-2.width-100
|
||||
%thead
|
||||
%tr
|
||||
%th.far-left
|
||||
%th.target Champ cible du routage
|
||||
%th.operator Opérateur
|
||||
%th.value Valeur
|
||||
%th.delete-column
|
||||
.conditionnel.mt-2.width-100
|
||||
- rows.each.with_index do |(targeted_champ, value, groupe_instructeur), row_index|
|
||||
= form_tag admin_procedure_routing_rules_path(@procedure_id), method: :post, class: "form width-100 gi-#{groupe_instructeur.id}" do
|
||||
%table.condition-table.mt-2.width-100
|
||||
%tbody
|
||||
%tr{ data: { controller: 'autosave' } }
|
||||
%td.far-left Router vers « #{groupe_instructeur.label} » si
|
||||
%td.target= targeted_champ_tag(targeted_champ, row_index)
|
||||
%td.operator Est égal à
|
||||
%td.value= value_tag(targeted_champ, value, row_index)
|
||||
%td.delete-column
|
||||
= hidden_groupe_instructeur_tag(groupe_instructeur.id)
|
||||
- if can_route?
|
||||
%p.notice
|
||||
= t('.routing_rules_notice')
|
||||
.conditionnel.mt-2.width-100
|
||||
%table.condition-table.mt-2.width-100
|
||||
%thead
|
||||
%tr
|
||||
%th.far-left
|
||||
%th.target Champ cible du routage
|
||||
%th.operator Opérateur
|
||||
%th.value Valeur
|
||||
%th.delete-column
|
||||
.conditionnel.mt-2.width-100
|
||||
- rows.each.with_index do |(targeted_champ, value, groupe_instructeur), row_index|
|
||||
= form_tag admin_procedure_routing_rules_path(@procedure_id), method: :post, class: "form width-100 gi-#{groupe_instructeur.id}" do
|
||||
%table.condition-table.mt-2.width-100
|
||||
%tbody
|
||||
%tr{ data: { controller: 'autosave' } }
|
||||
%td.far-left Router vers « #{groupe_instructeur.label} » si
|
||||
%td.target= targeted_champ_tag(targeted_champ, row_index)
|
||||
%td.operator Est égal à
|
||||
%td.value= value_tag(targeted_champ, value, row_index)
|
||||
%td.delete-column
|
||||
= hidden_groupe_instructeur_tag(groupe_instructeur.id)
|
||||
- else
|
||||
%p= t('.routing_rules_warning_html', path: champs_admin_procedure_path(@procedure_id))
|
||||
|
|
38
spec/components/procedures/routing_rules_component_spec.rb
Normal file
38
spec/components/procedures/routing_rules_component_spec.rb
Normal file
|
@ -0,0 +1,38 @@
|
|||
describe Procedure::RoutingRulesComponent, type: :component do
|
||||
include Logic
|
||||
|
||||
describe 'render' do
|
||||
let(:procedure) do
|
||||
create(:procedure, types_de_champ_public: [{ type: :integer_number, libelle: 'Age' }])
|
||||
.tap { _1.groupe_instructeurs.create(label: 'groupe 2') }
|
||||
end
|
||||
|
||||
subject do
|
||||
render_inline(described_class.new(revision: procedure.active_revision,
|
||||
groupe_instructeurs: procedure.groupe_instructeurs))
|
||||
end
|
||||
|
||||
context 'when there are no types de champ that can be routed' do
|
||||
before do
|
||||
procedure.publish_revision!
|
||||
procedure.reload
|
||||
subject
|
||||
end
|
||||
it { expect(page).to have_text('Ajoutez ce champ dans la page') }
|
||||
end
|
||||
|
||||
context 'when there are types de champ that can be routed' do
|
||||
before do
|
||||
procedure.draft_revision.add_type_de_champ({
|
||||
type_champ: :drop_down_list,
|
||||
libelle: 'Votre ville',
|
||||
drop_down_list_value: "Paris\nLyon\nMarseille"
|
||||
})
|
||||
procedure.publish_revision!
|
||||
procedure.reload
|
||||
subject
|
||||
end
|
||||
it { expect(page).to have_text('Router vers') }
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue