Merge pull request #10957 from demarches-simplifiees/update-configuration-routage-interface-v2
ETQ administrateur j'ai une nouvelle interface de configuration du routage
This commit is contained in:
commit
510799bf23
13 changed files with 77 additions and 26 deletions
|
@ -44,6 +44,6 @@
|
||||||
.fr-col-12
|
.fr-col-12
|
||||||
%ul.fr-btns-group.fr-btns-group--inline-md
|
%ul.fr-btns-group.fr-btns-group--inline-md
|
||||||
%li
|
%li
|
||||||
= link_to "Annuler et revenir à l'écran de gestion", admin_procedure_path(id: @draft_revision.procedure), class: 'fr-btn fr-btn--secondary', data: { confirm: 'Si vous avez fait des modifications elles ne seront pas sauvegardées.'}
|
= link_to "Annuler et revenir à l’écran de gestion", admin_procedure_path(id: @draft_revision.procedure), class: 'fr-btn fr-btn--secondary', data: { confirm: 'Si vous avez fait des modifications elles ne seront pas sauvegardées.'}
|
||||||
%li
|
%li
|
||||||
= button_tag "Enregistrer", class: "fr-btn", form: 'ineligibilite_form'
|
= button_tag "Enregistrer", class: "fr-btn", form: 'ineligibilite_form'
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
fr:
|
fr:
|
||||||
back: Revenir à l'écran de gestion
|
back: Revenir à l’écran de gestion
|
||||||
submit: Enregistrer
|
submit: Enregistrer
|
||||||
cancel: Annuler et revenir à l'écran de gestion
|
cancel: Annuler et revenir à l’écran de gestion
|
||||||
|
|
|
@ -50,3 +50,6 @@
|
||||||
= select_tag :defaut_groupe_instructeur_id,
|
= select_tag :defaut_groupe_instructeur_id,
|
||||||
options_for_select(@procedure.groupe_instructeurs.pluck(:label, :id), selected: @procedure.defaut_groupe_instructeur.id),
|
options_for_select(@procedure.groupe_instructeurs.pluck(:label, :id), selected: @procedure.defaut_groupe_instructeur.id),
|
||||||
class: 'fr-select'
|
class: 'fr-select'
|
||||||
|
|
||||||
|
- if flash[:routing_mode] == 'custom'
|
||||||
|
= render partial: 'custom_routing_modal'
|
||||||
|
|
|
@ -1,6 +1,13 @@
|
||||||
.container
|
.container
|
||||||
.fr-grid-row
|
.fr-grid-row
|
||||||
.fr-col.fr-col-12.fr-col-md-3
|
.fr-col.fr-col-12.fr-col-md-3
|
||||||
= render(Dsfr::SidemenuComponent.new) do |component|
|
- if params[:state] != 'choix'
|
||||||
- component.with_links(links)
|
= render(Dsfr::SidemenuComponent.new) do |component|
|
||||||
|
- component.with_links(links)
|
||||||
|
- else
|
||||||
|
.fr-container
|
||||||
|
%ul.fr-btns-group.fr-btns-group--inline-md.fr-ml-0
|
||||||
|
%li
|
||||||
|
= link_to options_admin_procedure_groupe_instructeurs_path, class: 'fr-link fr-icon-arrow-left-line fr-link--icon-left fr-mb-2w fr-mr-2w' do
|
||||||
|
Revenir aux options
|
||||||
.fr-col= content
|
.fr-col= content
|
||||||
|
|
|
@ -54,15 +54,27 @@
|
||||||
data: { controller: 'enable-submit-if-checked' },
|
data: { controller: 'enable-submit-if-checked' },
|
||||||
url: wizard_admin_procedure_groupe_instructeurs_path(@procedure) do |f|
|
url: wizard_admin_procedure_groupe_instructeurs_path(@procedure) do |f|
|
||||||
|
|
||||||
%div{ data: { 'action': "click->enable-submit-if-checked#click" } }
|
%h1 Configuration du routage
|
||||||
|
%h2 Choix du type de routage
|
||||||
|
|
||||||
|
.card.fr-pb-0{ data: { 'action': "click->enable-submit-if-checked#click" } }
|
||||||
|
%p.fr-mb-0 Routage
|
||||||
= render Dsfr::RadioButtonListComponent.new(form: f,
|
= render Dsfr::RadioButtonListComponent.new(form: f,
|
||||||
target: :state,
|
target: :state,
|
||||||
buttons: [ { label: 'À partir d’un champ', value: 'routage_simple', hint: 'crée les groupes en fonction d’un champ du formulaire' } ,
|
buttons: [ { label: 'À partir d’un champ', value: 'routage_simple', hint: 'crée les groupes en fonction d’un champ du formulaire' } ,
|
||||||
{ label: 'Avancé', value: 'routage_custom', hint: 'libre à vous de créer et de configurer les groupes' }]) do
|
{ label: 'Avancé', value: 'custom_routing', hint: 'libre à vous de créer et de configurer les groupes' }])
|
||||||
%h1 Choix du type de routage
|
|
||||||
|
|
||||||
%ul.fr-btns-group.fr-btns-group--inline-sm
|
|
||||||
%li
|
%ul.fr-btns-group.fr-btns-group--inline-sm
|
||||||
= link_to 'Retour', options_admin_procedure_groupe_instructeurs_path(@procedure), class: 'fr-btn fr-btn--secondary'
|
%li
|
||||||
%li
|
= link_to 'Annuler', options_admin_procedure_groupe_instructeurs_path(@procedure), class: 'fr-btn fr-btn--secondary'
|
||||||
%button.fr-btn{ disabled: true, data: { 'enable-submit-if-checked-target': 'submit' } } Continuer
|
%li
|
||||||
|
%button.fr-btn{ disabled: true, data: { 'enable-submit-if-checked-target': 'submit' } } Continuer
|
||||||
|
- if params[:state] != 'choix'
|
||||||
|
.padded-fixed-footer
|
||||||
|
.fixed-footer
|
||||||
|
.fr-container
|
||||||
|
%ul.fr-btns-group.fr-btns-group--inline-md.fr-ml-0
|
||||||
|
%li
|
||||||
|
= link_to admin_procedure_path(id: @procedure), class: 'fr-link fr-icon-arrow-left-line fr-link--icon-left fr-mb-2w fr-mr-2w' do
|
||||||
|
Revenir à l’écran de gestion
|
||||||
|
|
|
@ -27,7 +27,7 @@ module Administrateurs
|
||||||
def options
|
def options
|
||||||
@procedure = procedure
|
@procedure = procedure
|
||||||
if params[:state] == 'choix' && @procedure.active_revision.simple_routable_types_de_champ.none?
|
if params[:state] == 'choix' && @procedure.active_revision.simple_routable_types_de_champ.none?
|
||||||
configurate_routage_custom
|
configurate_custom_routing
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -93,20 +93,22 @@ module Administrateurs
|
||||||
end
|
end
|
||||||
|
|
||||||
def wizard
|
def wizard
|
||||||
if params[:choice][:state] == 'routage_custom'
|
if params[:choice][:state] == 'custom_routing'
|
||||||
configurate_routage_custom
|
configurate_custom_routing
|
||||||
elsif params[:choice][:state] == 'routage_simple'
|
elsif params[:choice][:state] == 'routage_simple'
|
||||||
redirect_to simple_routing_admin_procedure_groupe_instructeurs_path
|
redirect_to simple_routing_admin_procedure_groupe_instructeurs_path
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def configurate_routage_custom
|
def configurate_custom_routing
|
||||||
new_label = procedure.defaut_groupe_instructeur.label + ' bis'
|
procedure.defaut_groupe_instructeur.update!(label: 'Groupe 1 (à renommer et configurer)')
|
||||||
procedure.groupe_instructeurs
|
procedure.groupe_instructeurs
|
||||||
.create({ label: new_label, instructeurs: [current_administrateur.instructeur] })
|
.create({ label: 'Groupe 2 (à renommer et configurer)', instructeurs: [current_administrateur.instructeur] })
|
||||||
|
|
||||||
procedure.toggle_routing
|
procedure.toggle_routing
|
||||||
|
|
||||||
|
flash[:routing_mode] = 'custom'
|
||||||
|
|
||||||
redirect_to admin_procedure_groupe_instructeurs_path(procedure)
|
redirect_to admin_procedure_groupe_instructeurs_path(procedure)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -44,6 +44,8 @@ module ApplicationHelper
|
||||||
class_names << 'alert-success'
|
class_names << 'alert-success'
|
||||||
when 'alert', 'error'
|
when 'alert', 'error'
|
||||||
class_names << 'alert-danger'
|
class_names << 'alert-danger'
|
||||||
|
when 'routing_mode'
|
||||||
|
class_names << 'hidden'
|
||||||
end
|
end
|
||||||
if sticky
|
if sticky
|
||||||
class_names << 'sticky'
|
class_names << 'sticky'
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
%dialog{ aria: { labelledby: "fr-modal-title-modal-1" }, role: "dialog", id: "routing-mode-modal", class: "fr-modal fr-modal--opened" }
|
||||||
|
.fr-container.fr-container--fluid.fr-container-md
|
||||||
|
.fr-grid-row.fr-grid-row--center
|
||||||
|
.fr-col-12.fr-col-md-8.fr-col-lg-6
|
||||||
|
.fr-modal__body
|
||||||
|
.fr-modal__header
|
||||||
|
%button.fr-btn.fr-btn--close{ title: "Fermer la fenêtre modale", aria: { controls: "routing-mode-modal" } } Fermer
|
||||||
|
.fr-modal__content
|
||||||
|
%h1#fr-modal-title-modal-1.fr-modal__title
|
||||||
|
%span.fr-icon-arrow-right-line.fr-icon--lg
|
||||||
|
Routage avancé
|
||||||
|
.fr-alert.fr-alert--success
|
||||||
|
%h2.fr-alert__title
|
||||||
|
Deux groupes par défaut ont été créés
|
||||||
|
%p
|
||||||
|
Vous devez maintenant les renommer et leur attribuer des règles de routage à partir du ou des champs « routables » de votre formulaire, soit des champs de type :
|
||||||
|
%ul
|
||||||
|
- TypeDeChamp.humanized_conditionable_types_by_category.each do |category|
|
||||||
|
%li
|
||||||
|
= category.join(', ')
|
|
@ -20,7 +20,7 @@
|
||||||
.fr-container
|
.fr-container
|
||||||
%ul.fr-btns-group.fr-btns-group--inline-md.fr-ml-0
|
%ul.fr-btns-group.fr-btns-group--inline-md.fr-ml-0
|
||||||
%li
|
%li
|
||||||
= link_to "Revenir à l'écran de gestion", admin_procedure_path(@procedure), title: t('continue_annotations', scope: [:layouts, :breadcrumb]), class: 'fr-link fr-icon-arrow-left-line fr-link--icon-left fr-mb-2w fr-mr-2w'
|
= link_to "Revenir à l’écran de gestion", admin_procedure_path(@procedure), title: t('continue_annotations', scope: [:layouts, :breadcrumb]), class: 'fr-link fr-icon-arrow-left-line fr-link--icon-left fr-mb-2w fr-mr-2w'
|
||||||
- if @procedure.draft_revision.revision_types_de_champ_private.count > 0
|
- if @procedure.draft_revision.revision_types_de_champ_private.count > 0
|
||||||
%li
|
%li
|
||||||
= link_to t('preview_annotations', scope: [:layouts, :breadcrumb]), apercu_admin_procedure_path(@procedure, params: {tab: 'annotations-privees'}), target: "_blank", rel: "noopener", class: 'fr-link fr-mb-2w'
|
= link_to t('preview_annotations', scope: [:layouts, :breadcrumb]), apercu_admin_procedure_path(@procedure, params: {tab: 'annotations-privees'}), target: "_blank", rel: "noopener", class: 'fr-link fr-mb-2w'
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
%ul.fr-btns-group.fr-btns-group--inline-md.fr-ml-0
|
%ul.fr-btns-group.fr-btns-group--inline-md.fr-ml-0
|
||||||
%li
|
%li
|
||||||
= link_to admin_procedure_path(id: @procedure), class: 'fr-link fr-icon-arrow-left-line fr-link--icon-left fr-mb-2w fr-mr-2w' do
|
= link_to admin_procedure_path(id: @procedure), class: 'fr-link fr-icon-arrow-left-line fr-link--icon-left fr-mb-2w fr-mr-2w' do
|
||||||
Revenir à l'écran de gestion
|
Revenir à l’écran de gestion
|
||||||
- if @procedure.draft_revision.revision_types_de_champ_public.count > 0
|
- if @procedure.draft_revision.revision_types_de_champ_public.count > 0
|
||||||
%li
|
%li
|
||||||
= link_to t('preview', scope: [:layouts, :breadcrumb]), apercu_admin_procedure_path(@procedure), target: "_blank", rel: "noopener", class: 'fr-link fr-mb-2w'
|
= link_to t('preview', scope: [:layouts, :breadcrumb]), apercu_admin_procedure_path(@procedure), target: "_blank", rel: "noopener", class: 'fr-link fr-mb-2w'
|
||||||
|
|
|
@ -1058,11 +1058,11 @@ describe Administrateurs::GroupeInstructeursController, type: :controller do
|
||||||
|
|
||||||
let!(:drop_down_tdc) { procedure4.draft_revision.types_de_champ.first }
|
let!(:drop_down_tdc) { procedure4.draft_revision.types_de_champ.first }
|
||||||
|
|
||||||
before { patch :wizard, params: { procedure_id: procedure4.id, choice: { state: 'routage_custom' } } }
|
before { patch :wizard, params: { procedure_id: procedure4.id, choice: { state: 'custom_routing' } } }
|
||||||
|
|
||||||
it do
|
it do
|
||||||
expect(response).to redirect_to(admin_procedure_groupe_instructeurs_path(procedure4))
|
expect(response).to redirect_to(admin_procedure_groupe_instructeurs_path(procedure4))
|
||||||
expect(procedure4.groupe_instructeurs.pluck(:label)).to match_array(['défaut', 'défaut bis'])
|
expect(procedure4.groupe_instructeurs.pluck(:label)).to match_array(['Groupe 1 (à renommer et configurer)', 'Groupe 2 (à renommer et configurer)'])
|
||||||
expect(procedure4.reload.routing_enabled).to be_truthy
|
expect(procedure4.reload.routing_enabled).to be_truthy
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -24,7 +24,7 @@ describe 'Administrateurs can edit procedures', js: true do
|
||||||
click_on 'Ajouter un champ'
|
click_on 'Ajouter un champ'
|
||||||
select "Oui/Non"
|
select "Oui/Non"
|
||||||
fill_in "Libellé du champ", with: "Un champ oui non"
|
fill_in "Libellé du champ", with: "Un champ oui non"
|
||||||
click_on "Revenir à l'écran de gestion"
|
click_on "Revenir à l’écran de gestion"
|
||||||
procedure.reload
|
procedure.reload
|
||||||
first_tdc = procedure.draft_revision.types_de_champ.first
|
first_tdc = procedure.draft_revision.types_de_champ.first
|
||||||
# back to procedure dashboard, explain you can set it up now
|
# back to procedure dashboard, explain you can set it up now
|
||||||
|
|
|
@ -53,8 +53,13 @@ describe 'The routing with rules', js: true do
|
||||||
expect(page).to have_text('Gestion des groupes')
|
expect(page).to have_text('Gestion des groupes')
|
||||||
expect(page).to have_text('règle invalide')
|
expect(page).to have_text('règle invalide')
|
||||||
|
|
||||||
|
# close modal
|
||||||
|
expect(page).to have_selector("#routing-mode-modal", visible: true)
|
||||||
|
within("#routing-mode-modal") { click_on "Fermer" }
|
||||||
|
expect(page).to have_selector("#routing-mode-modal", visible: false)
|
||||||
|
|
||||||
# update defaut groupe
|
# update defaut groupe
|
||||||
click_on 'défaut'
|
click_on 'Groupe 1 (à renommer et configurer)'
|
||||||
expect(page).to have_text('Paramètres du groupe')
|
expect(page).to have_text('Paramètres du groupe')
|
||||||
fill_in 'Nom du groupe', with: 'littéraire'
|
fill_in 'Nom du groupe', with: 'littéraire'
|
||||||
click_on 'Renommer'
|
click_on 'Renommer'
|
||||||
|
@ -83,7 +88,7 @@ describe 'The routing with rules', js: true do
|
||||||
|
|
||||||
# # add scientifique groupe
|
# # add scientifique groupe
|
||||||
click_on '3 groupes'
|
click_on '3 groupes'
|
||||||
click_on 'défaut bis'
|
click_on 'Groupe 2 (à renommer et configurer)'
|
||||||
fill_in 'Nom du groupe', with: 'scientifique'
|
fill_in 'Nom du groupe', with: 'scientifique'
|
||||||
click_on 'Renommer'
|
click_on 'Renommer'
|
||||||
expect(page).to have_text('Le nom est à présent « scientifique ». ')
|
expect(page).to have_text('Le nom est à présent « scientifique ». ')
|
||||||
|
|
Loading…
Reference in a new issue