Merge pull request #10935 from demarches-simplifiees/update-instruction-options-interface

ETQ admin j'ai une nouvelle interface pour les options de l'instruction
This commit is contained in:
Eric Leroy-Terquem 2024-11-05 14:00:46 +00:00 committed by GitHub
commit a2446c429a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 39 additions and 13 deletions

View file

@ -2,10 +2,15 @@
fr: fr:
routing_configuration_notice_1: routing_configuration_notice_1:
Le routage permet dacheminer les dossiers vers différents groupes dinstructeurs. Le routage permet dacheminer les dossiers vers différents groupes dinstructeurs.
routing_not_configured:
Vous navez pas configuré de routage.
routing_configured_html:
Vous avez configuré un routage avec <strong>%{groupe_instructeurs_count} groupes dinstructeurs.</strong>
routing_configuration_notice_2_html: | routing_configuration_notice_2_html: |
<p>Pour le configurer, votre formulaire doit comporter Pour le configurer, votre formulaire doit comporter
au moins un champ de type %{conditionable_types}.</p> au moins un <strong>« champ routable »</strong>, soit un champ de type :
<p>Ajoutez ce champ dans la page <a href="%{path}">« Configuration des champs »</a>.</p> routing_configuration_notice_3_html: |
Ajoutez ce champ dans la page dédition <a href="%{path}">des champs du formulaire</a>.
delete_title: Aucun dossier ne sera supprimé. Les groupes d'instructeurs vont être supprimés. Seuls les instructeurs du groupe « %{defaut_label} » resteront affectés à la démarche. delete_title: Aucun dossier ne sera supprimé. Les groupes d'instructeurs vont être supprimés. Seuls les instructeurs du groupe « %{defaut_label} » resteront affectés à la démarche.
delete_confirmation: | delete_confirmation: |
Attention : tous les dossiers vont être déplacés dans le groupe « %{defaut_label} » et seuls les instructeurs présent dans ce groupe resteront affectés à la démarche. Souhaitez-vous continuer ? Attention : tous les dossiers vont être déplacés dans le groupe « %{defaut_label} » et seuls les instructeurs présent dans ce groupe resteront affectés à la démarche. Souhaitez-vous continuer ?

View file

@ -16,16 +16,27 @@
disabled: false) disabled: false)
%hr %hr
%p.fr-mt-2w Routage %p Routage
%p.fr-mt-2w= t('.routing_configuration_notice_1') %p.fr-mt-1w.fr-hint-text= t('.routing_configuration_notice_1')
%p.fr-icon-info-line.fr-hint-text{ aria: { hidden: true } } %p.fr-alert.fr-alert--info.fr-mb-3w{ aria: { hidden: true } }
Plus d'informations sur le routage dans la En savoir plus sur la
= link_to('doc', = link_to('configuration du routage',
ROUTAGE_URL, ROUTAGE_URL,
title: t('.routage_doc.title'), title: t('.routage_doc.title'),
**helpers.external_link_attributes) **helpers.external_link_attributes)
- if !@procedure.routing_enabled?
%p.fr-mt-2w
%i.fr-mt-2w= t('.routing_not_configured')
- else
%p.fr-mt-2w
%i.fr-mt-2w= t('.routing_configured_html', groupe_instructeurs_count: @procedure.groupe_instructeurs.count)
- if @procedure.active_revision.conditionable_types_de_champ.none? - if @procedure.active_revision.conditionable_types_de_champ.none?
%p.fr-mt-2w= t('.routing_configuration_notice_2_html', path: champs_admin_procedure_path(@procedure), conditionable_types: TypeDeChamp.humanized_conditionable_types) %p.fr-mt-2w.fr-mb-0= t('.routing_configuration_notice_2_html')
%ul
- TypeDeChamp.humanized_conditionable_types_by_category.each do |category|
%li
= category.join(', ')
%p.fr-mt-2w= t('.routing_configuration_notice_3_html', path: champs_admin_procedure_path(@procedure))
- elsif @procedure.groupe_instructeurs.active.one? - elsif @procedure.groupe_instructeurs.active.one?
= link_to 'Configurer le routage', options_admin_procedure_groupe_instructeurs_path(@procedure, state: :choix), class: 'fr-btn' = link_to 'Configurer le routage', options_admin_procedure_groupe_instructeurs_path(@procedure, state: :choix), class: 'fr-btn'

View file

@ -16,6 +16,11 @@ class Logic::ChampValue < Logic::Term
:pays :pays
) )
MANAGED_TYPE_DE_CHAMP_BY_CATEGORY = MANAGED_TYPE_DE_CHAMP.keys.map(&:to_sym)
.each_with_object(Hash.new { |h, k| h[k] = [] }) do |type, h|
h[TypeDeChamp::TYPE_DE_CHAMP_TO_CATEGORIE[type]] << type
end
CHAMP_VALUE_TYPE = { CHAMP_VALUE_TYPE = {
boolean: :boolean, # from yes_no or checkbox champ boolean: :boolean, # from yes_no or checkbox champ
number: :number, # from integer or decimal number champ number: :number, # from integer or decimal number champ

View file

@ -655,10 +655,9 @@ class TypeDeChamp < ApplicationRecord
Logic::ChampValue::MANAGED_TYPE_DE_CHAMP.values.include?(type_champ) Logic::ChampValue::MANAGED_TYPE_DE_CHAMP.values.include?(type_champ)
end end
def self.humanized_conditionable_types def self.humanized_conditionable_types_by_category
Logic::ChampValue::MANAGED_TYPE_DE_CHAMP.values.map do Logic::ChampValue::MANAGED_TYPE_DE_CHAMP_BY_CATEGORY
"« #{I18n.t(_1, scope: [:activerecord, :attributes, :type_de_champ, :type_champs])} »" .map { |_, v| v.map { "« #{I18n.t(_1, scope: [:activerecord, :attributes, :type_de_champ, :type_champs])} »" } }
end.to_sentence(last_word_connector: ' ou ')
end end
def invalid_regexp? def invalid_regexp?

View file

@ -475,4 +475,10 @@ describe TypeDeChamp do
it { expect(subject).to eq('') } it { expect(subject).to eq('') }
end end
end end
describe '#humanized_conditionable_types_by_category' do
subject { TypeDeChamp.humanized_conditionable_types_by_category }
it { is_expected.to eq([["« Oui/Non »", "« Case à cocher seule »", "« Choix simple »", "« Choix multiple »"], ["« Nombre entier »", "« Nombre décimal »"], ["« Communes »", "« EPCI »", "« Départements »", "« Régions »", "« Adresse »", "« Pays »"]]) }
end
end end