amelioration(Procedure.revision_changes): ajout du support pour les texte complementaire affichable au clique des champs de type explication

Co-authored-by: Paul Chavard <github@paul.chavard.net>
This commit is contained in:
Martin 2022-11-08 09:26:34 +01:00 committed by mfo
parent df54dc04a4
commit b3f80dc5f9
6 changed files with 118 additions and 40 deletions

View file

@ -6,6 +6,6 @@
- if @champ.collapsible_explanation_enabled? && @champ.collapsible_explanation_text.present? - if @champ.collapsible_explanation_enabled? && @champ.collapsible_explanation_text.present?
%div %div
%p.fr-my-2w %p.fr-my-2w
%button{type: "button", "aria-controls" => "champs-text-#{@champ.id}", "aria-expanded" => "false", href: "#champs-text-#{@champ.id}"} Lire plus %button{type: "button", "aria-controls": dom_id(@champ, :explanation), "aria-expanded": "false", href: dom_id(@champ, :explanation)} Lire plus
%p.fr-collapse{ id: "champs-text-#{@champ.id}"} %p.fr-collapse{ id: dom_id(@champ, :explanation)}
= @champ.collapsible_explanation_text = @champ.collapsible_explanation_text

View file

@ -42,7 +42,6 @@ class Champ < ApplicationRecord
:drop_down_list_enabled_non_empty_options, :drop_down_list_enabled_non_empty_options,
:drop_down_secondary_libelle, :drop_down_secondary_libelle,
:drop_down_secondary_description, :drop_down_secondary_description,
:collapsible_explanation_enabled,
:collapsible_explanation_enabled?, :collapsible_explanation_enabled?,
:collapsible_explanation_text, :collapsible_explanation_text,
:exclude_from_export?, :exclude_from_export?,

View file

@ -359,6 +359,30 @@ class ProcedureRevision < ApplicationRecord
stable_id: from_type_de_champ.stable_id stable_id: from_type_de_champ.stable_id
} }
end end
if from_type_de_champ.collapsible_explanation_enabled? != to_type_de_champ.collapsible_explanation_enabled?
changes << {
model: :type_de_champ,
op: :update,
attribute: :collapsible_explanation_enabled,
label: from_type_de_champ.libelle,
private: from_type_de_champ.private?,
from: from_type_de_champ.collapsible_explanation_enabled?,
to: to_type_de_champ.collapsible_explanation_enabled?,
stable_id: from_type_de_champ.stable_id
}
end
if from_type_de_champ.collapsible_explanation_text != to_type_de_champ.collapsible_explanation_text
changes << {
model: :type_de_champ,
op: :update,
attribute: :collapsible_explanation_text,
label: from_type_de_champ.libelle,
private: from_type_de_champ.private?,
from: from_type_de_champ.collapsible_explanation_text,
to: to_type_de_champ.collapsible_explanation_text,
stable_id: from_type_de_champ.stable_id
}
end
if from_type_de_champ.description != to_type_de_champ.description if from_type_de_champ.description != to_type_de_champ.description
changes << { changes << {
model: :type_de_champ, model: :type_de_champ,

View file

@ -70,6 +70,17 @@
- if removed.present? - if removed.present?
- list.with_item do - list.with_item do
= t(:remove_option, scope: [:administrateurs, :revision_changes], items: removed.map{ |term| "« #{t(term, scope: [:administrateurs, :carte_layers])} »" }.join(", ")) = t(:remove_option, scope: [:administrateurs, :revision_changes], items: removed.map{ |term| "« #{t(term, scope: [:administrateurs, :carte_layers])} »" }.join(", "))
- when :collapsible_explanation_enabled
- if change[:to]
- list.with_item do
= t("administrateurs.revision_changes.update_collapsible_explanation_enabled#{postfix}.enabled", label: change[:label])
- else
- list.with_item do
= t("administrateurs.revision_changes.update_collapsible_explanation_enabled#{postfix}.disabled", label: change[:label])
- when :collapsible_explanation_text
- list.with_item do
= t("administrateurs.revision_changes.update_collapsible_explanation_text#{postfix}", label: change[:label], text: change[:to])
- when :condition - when :condition
- if change[:from].nil? - if change[:from].nil?
- list.with_item do - list.with_item do

View file

@ -29,6 +29,10 @@ fr:
enabled: Le champ « %{label} » comporte maintenant un choix « Autre » enabled: Le champ « %{label} » comporte maintenant un choix « Autre »
disabled: Le champ « %{label} » ne comporte plus de choix « Autre » disabled: Le champ « %{label} » ne comporte plus de choix « Autre »
update_carte_layers: Les référentiels cartographiques du champ « %{label} » ont été modifiés update_carte_layers: Les référentiels cartographiques du champ « %{label} » ont été modifiés
update_collapsible_explanation_enabled:
enabled: "Le texte complementaire affichable au clique du champ « %{label} » a été ajouté"
disabled: "Le texte complementaire affichable au clique du champ « %{label} » a été supprimée"
update_collapsible_explanation_text: "Le texte complementaire affichable au clique du champ « %{label} » a été modifié. Il est maintenant « %{text} »."
add_private: Lannotation privée « %{label} » a été ajoutée add_private: Lannotation privée « %{label} » a été ajoutée
remove_private: Lannotation privée « %{label} » a été supprimée remove_private: Lannotation privée « %{label} » a été supprimée
move_private: move_private:
@ -45,6 +49,10 @@ fr:
update_piece_justificative_template_private: Le modèle de pièce justificative de lannotation privée « %{label} » a été modifié update_piece_justificative_template_private: Le modèle de pièce justificative de lannotation privée « %{label} » a été modifié
update_drop_down_options_private: Les options de sélection de lannotation privée « %{label} » ont été modifiées update_drop_down_options_private: Les options de sélection de lannotation privée « %{label} » ont été modifiées
update_carte_layers_private: Les référentiels cartographiques de lannotation privée « %{label} » ont été modifiés update_carte_layers_private: Les référentiels cartographiques de lannotation privée « %{label} » ont été modifiés
update_collapsible_explanation_enabled_private:
enabled: "Le texte complementaire affichable au clique de lannotation privée « %{label} » a été ajouté"
disabled: "Le texte complementaire affichable au clique de lannotation privée « %{label} » a été supprimée"
update_collapsible_explanation_private: "Le texte complementaire affichable au clique de lannotation privée « %{label} » a été modifié. Il est maintenant « %{text} »."
add_option: "ajoutés : %{items}" add_option: "ajoutés : %{items}"
remove_option: "supprimés : %{items}" remove_option: "supprimés : %{items}"
add_condition: Une condition a été ajoutée sur le champ « %{label} ». La nouvelle condition est « %{to} » add_condition: Une condition a été ajoutée sur le champ « %{label} ». La nouvelle condition est « %{to} »

View file

@ -440,47 +440,83 @@ describe ProcedureRevision do
end end
context 'when a type de champ is changed' do context 'when a type de champ is changed' do
let(:procedure) { create(:procedure, :with_type_de_champ) } context 'when libelle, description, and mandatory are changed' do
let(:procedure) { create(:procedure, :with_type_de_champ) }
before do before do
updated_tdc = new_draft.find_and_ensure_exclusive_use(first_tdc.stable_id) updated_tdc = new_draft.find_and_ensure_exclusive_use(first_tdc.stable_id)
updated_tdc.update(libelle: 'modifier le libelle', description: 'une description', mandatory: !updated_tdc.mandatory) updated_tdc.update(libelle: 'modifier le libelle', description: 'une description', mandatory: !updated_tdc.mandatory)
end
it do
is_expected.to eq([
{
model: :type_de_champ,
op: :update,
attribute: :libelle,
label: first_tdc.libelle,
private: false,
from: first_tdc.libelle,
to: "modifier le libelle",
stable_id: first_tdc.stable_id
},
{
model: :type_de_champ,
op: :update,
attribute: :description,
label: first_tdc.libelle,
private: false,
from: first_tdc.description,
to: "une description",
stable_id: first_tdc.stable_id
},
{
model: :type_de_champ,
op: :update,
attribute: :mandatory,
label: first_tdc.libelle,
private: false,
from: false,
to: true,
stable_id: first_tdc.stable_id
}
])
end
end end
it do context 'when collapsible_explanation_enabled and collapsible_explanation_text are changed' do
is_expected.to eq([ let(:procedure) { create(:procedure, :with_explication) }
{
model: :type_de_champ, before do
op: :update, updated_tdc = new_draft.find_and_ensure_exclusive_use(first_tdc.stable_id)
attribute: :libelle,
label: first_tdc.libelle, updated_tdc.update(collapsible_explanation_enabled: "1", collapsible_explanation_text: 'afficher au clique')
private: false, end
from: first_tdc.libelle, it do
to: "modifier le libelle", is_expected.to eq([
stable_id: first_tdc.stable_id {
}, model: :type_de_champ,
{ op: :update,
model: :type_de_champ, attribute: :collapsible_explanation_enabled,
op: :update, label: first_tdc.libelle,
attribute: :description, private: first_tdc.private?,
label: first_tdc.libelle, from: false,
private: false, to: true,
from: first_tdc.description, stable_id: first_tdc.stable_id
to: "une description", },
stable_id: first_tdc.stable_id {
}, model: :type_de_champ,
{ op: :update,
model: :type_de_champ, attribute: :collapsible_explanation_text,
op: :update, label: first_tdc.libelle,
attribute: :mandatory, private: first_tdc.private?,
label: first_tdc.libelle, from: nil,
private: false, to: 'afficher au clique',
from: false, stable_id: first_tdc.stable_id
to: true, }
stable_id: first_tdc.stable_id ])
} end
])
end end
end end