fix(attestation_template): add revision diff support
This commit is contained in:
parent
e269077c40
commit
76b1b85fa7
8 changed files with 199 additions and 66 deletions
|
@ -122,6 +122,22 @@ class AttestationTemplate < ApplicationRecord
|
||||||
revisions.last&.procedure
|
revisions.last&.procedure
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def logo_checksum
|
||||||
|
logo.attached? ? logo.checksum : nil
|
||||||
|
end
|
||||||
|
|
||||||
|
def signature_checksum
|
||||||
|
signature.attached? ? signature.checksum : nil
|
||||||
|
end
|
||||||
|
|
||||||
|
def logo_filename
|
||||||
|
logo.attached? ? logo.filename : nil
|
||||||
|
end
|
||||||
|
|
||||||
|
def signature_filename
|
||||||
|
signature.attached? ? signature.filename : nil
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def used_tags
|
def used_tags
|
||||||
|
|
|
@ -14,7 +14,9 @@ module DossierRebaseConcern
|
||||||
def rebase
|
def rebase
|
||||||
attachments_to_purge = []
|
attachments_to_purge = []
|
||||||
geo_areas_to_delete = []
|
geo_areas_to_delete = []
|
||||||
changes_by_type_de_champ = revision.compare(procedure.published_revision).group_by { |change| change[:stable_id] }
|
changes_by_type_de_champ = revision.compare(procedure.published_revision)
|
||||||
|
.filter { |change| change[:model] == :type_de_champ }
|
||||||
|
.group_by { |change| change[:stable_id] }
|
||||||
|
|
||||||
changes_by_type_de_champ.each do |stable_id, changes|
|
changes_by_type_de_champ.each do |stable_id, changes|
|
||||||
type_de_champ = find_type_de_champ_by_stable_id(stable_id)
|
type_de_champ = find_type_de_champ_by_stable_id(stable_id)
|
||||||
|
|
|
@ -108,13 +108,16 @@ class ProcedureRevision < ApplicationRecord
|
||||||
end
|
end
|
||||||
|
|
||||||
def different_from?(revision)
|
def different_from?(revision)
|
||||||
types_de_champ != revision.types_de_champ || types_de_champ_private != revision.types_de_champ_private
|
types_de_champ != revision.types_de_champ ||
|
||||||
|
types_de_champ_private != revision.types_de_champ_private ||
|
||||||
|
attestation_template != revision.attestation_template
|
||||||
end
|
end
|
||||||
|
|
||||||
def compare(revision)
|
def compare(revision)
|
||||||
changes = []
|
changes = []
|
||||||
changes += compare_types_de_champ(types_de_champ, revision.types_de_champ)
|
changes += compare_types_de_champ(types_de_champ, revision.types_de_champ)
|
||||||
changes += compare_types_de_champ(types_de_champ_private, revision.types_de_champ_private)
|
changes += compare_types_de_champ(types_de_champ_private, revision.types_de_champ_private)
|
||||||
|
changes += compare_attestation_template(attestation_template, revision.attestation_template)
|
||||||
changes
|
changes
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -127,12 +130,65 @@ class ProcedureRevision < ApplicationRecord
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
def attestation_template
|
|
||||||
super || procedure.attestation_template
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
def compare_attestation_template(from_at, to_at)
|
||||||
|
changes = []
|
||||||
|
if from_at.nil? && to_at.present?
|
||||||
|
changes << {
|
||||||
|
model: :attestation_template,
|
||||||
|
op: :add
|
||||||
|
}
|
||||||
|
elsif to_at.present?
|
||||||
|
if from_at.title != to_at.title
|
||||||
|
changes << {
|
||||||
|
model: :attestation_template,
|
||||||
|
op: :update,
|
||||||
|
attribute: :title,
|
||||||
|
from: from_at.title,
|
||||||
|
to: to_at.title
|
||||||
|
}
|
||||||
|
end
|
||||||
|
if from_at.body != to_at.body
|
||||||
|
changes << {
|
||||||
|
model: :attestation_template,
|
||||||
|
op: :update,
|
||||||
|
attribute: :body,
|
||||||
|
from: from_at.body,
|
||||||
|
to: to_at.body
|
||||||
|
}
|
||||||
|
end
|
||||||
|
if from_at.footer != to_at.footer
|
||||||
|
changes << {
|
||||||
|
model: :attestation_template,
|
||||||
|
op: :update,
|
||||||
|
attribute: :footer,
|
||||||
|
from: from_at.footer,
|
||||||
|
to: to_at.footer
|
||||||
|
}
|
||||||
|
end
|
||||||
|
if from_at.logo_checksum != to_at.logo_checksum
|
||||||
|
changes << {
|
||||||
|
model: :attestation_template,
|
||||||
|
op: :update,
|
||||||
|
attribute: :logo,
|
||||||
|
from: from_at.logo_filename,
|
||||||
|
to: to_at.logo_filename
|
||||||
|
}
|
||||||
|
end
|
||||||
|
if from_at.signature_checksum != to_at.signature_checksum
|
||||||
|
changes << {
|
||||||
|
model: :attestation_template,
|
||||||
|
op: :update,
|
||||||
|
attribute: :signature,
|
||||||
|
from: from_at.signature_filename,
|
||||||
|
to: to_at.signature_filename
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
changes
|
||||||
|
end
|
||||||
|
|
||||||
def compare_types_de_champ(from_tdc, to_tdc)
|
def compare_types_de_champ(from_tdc, to_tdc)
|
||||||
if from_tdc == to_tdc
|
if from_tdc == to_tdc
|
||||||
[]
|
[]
|
||||||
|
@ -144,11 +200,11 @@ class ProcedureRevision < ApplicationRecord
|
||||||
to_sids = to_h.keys
|
to_sids = to_h.keys
|
||||||
|
|
||||||
removed = (from_sids - to_sids).map do |sid|
|
removed = (from_sids - to_sids).map do |sid|
|
||||||
{ op: :remove, label: from_h[sid].libelle, private: from_h[sid].private?, position: from_sids.index(sid), stable_id: sid }
|
{ model: :type_de_champ, op: :remove, label: from_h[sid].libelle, private: from_h[sid].private?, position: from_sids.index(sid), stable_id: sid }
|
||||||
end
|
end
|
||||||
|
|
||||||
added = (to_sids - from_sids).map do |sid|
|
added = (to_sids - from_sids).map do |sid|
|
||||||
{ op: :add, label: to_h[sid].libelle, private: to_h[sid].private?, position: to_sids.index(sid), stable_id: sid }
|
{ model: :type_de_champ, op: :add, label: to_h[sid].libelle, private: to_h[sid].private?, position: to_sids.index(sid), stable_id: sid }
|
||||||
end
|
end
|
||||||
|
|
||||||
kept = from_sids.intersection(to_sids)
|
kept = from_sids.intersection(to_sids)
|
||||||
|
@ -157,7 +213,7 @@ class ProcedureRevision < ApplicationRecord
|
||||||
.map { |sid| [sid, from_sids.index(sid), to_sids.index(sid)] }
|
.map { |sid| [sid, from_sids.index(sid), to_sids.index(sid)] }
|
||||||
.filter { |_, from_index, to_index| from_index != to_index }
|
.filter { |_, from_index, to_index| from_index != to_index }
|
||||||
.map do |sid, from_index, to_index|
|
.map do |sid, from_index, to_index|
|
||||||
{ op: :move, label: from_h[sid].libelle, private: from_h[sid].private?, from: from_index, to: to_index, position: to_index, stable_id: sid }
|
{ model: :type_de_champ, op: :move, label: from_h[sid].libelle, private: from_h[sid].private?, from: from_index, to: to_index, position: to_index, stable_id: sid }
|
||||||
end
|
end
|
||||||
|
|
||||||
changed = kept
|
changed = kept
|
||||||
|
@ -177,6 +233,7 @@ class ProcedureRevision < ApplicationRecord
|
||||||
changes = []
|
changes = []
|
||||||
if from_type_de_champ.type_champ != to_type_de_champ.type_champ
|
if from_type_de_champ.type_champ != to_type_de_champ.type_champ
|
||||||
changes << {
|
changes << {
|
||||||
|
model: :type_de_champ,
|
||||||
op: :update,
|
op: :update,
|
||||||
attribute: :type_champ,
|
attribute: :type_champ,
|
||||||
label: from_type_de_champ.libelle,
|
label: from_type_de_champ.libelle,
|
||||||
|
@ -188,6 +245,7 @@ class ProcedureRevision < ApplicationRecord
|
||||||
end
|
end
|
||||||
if from_type_de_champ.libelle != to_type_de_champ.libelle
|
if from_type_de_champ.libelle != to_type_de_champ.libelle
|
||||||
changes << {
|
changes << {
|
||||||
|
model: :type_de_champ,
|
||||||
op: :update,
|
op: :update,
|
||||||
attribute: :libelle,
|
attribute: :libelle,
|
||||||
label: from_type_de_champ.libelle,
|
label: from_type_de_champ.libelle,
|
||||||
|
@ -199,6 +257,7 @@ class ProcedureRevision < ApplicationRecord
|
||||||
end
|
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,
|
||||||
op: :update,
|
op: :update,
|
||||||
attribute: :description,
|
attribute: :description,
|
||||||
label: from_type_de_champ.libelle,
|
label: from_type_de_champ.libelle,
|
||||||
|
@ -210,6 +269,7 @@ class ProcedureRevision < ApplicationRecord
|
||||||
end
|
end
|
||||||
if from_type_de_champ.mandatory? != to_type_de_champ.mandatory?
|
if from_type_de_champ.mandatory? != to_type_de_champ.mandatory?
|
||||||
changes << {
|
changes << {
|
||||||
|
model: :type_de_champ,
|
||||||
op: :update,
|
op: :update,
|
||||||
attribute: :mandatory,
|
attribute: :mandatory,
|
||||||
label: from_type_de_champ.libelle,
|
label: from_type_de_champ.libelle,
|
||||||
|
@ -222,6 +282,7 @@ class ProcedureRevision < ApplicationRecord
|
||||||
if to_type_de_champ.drop_down_list?
|
if to_type_de_champ.drop_down_list?
|
||||||
if from_type_de_champ.drop_down_list_options != to_type_de_champ.drop_down_list_options
|
if from_type_de_champ.drop_down_list_options != to_type_de_champ.drop_down_list_options
|
||||||
changes << {
|
changes << {
|
||||||
|
model: :type_de_champ,
|
||||||
op: :update,
|
op: :update,
|
||||||
attribute: :drop_down_options,
|
attribute: :drop_down_options,
|
||||||
label: from_type_de_champ.libelle,
|
label: from_type_de_champ.libelle,
|
||||||
|
@ -234,6 +295,7 @@ class ProcedureRevision < ApplicationRecord
|
||||||
if to_type_de_champ.linked_drop_down_list?
|
if to_type_de_champ.linked_drop_down_list?
|
||||||
if from_type_de_champ.drop_down_secondary_libelle != to_type_de_champ.drop_down_secondary_libelle
|
if from_type_de_champ.drop_down_secondary_libelle != to_type_de_champ.drop_down_secondary_libelle
|
||||||
changes << {
|
changes << {
|
||||||
|
model: :type_de_champ,
|
||||||
op: :update,
|
op: :update,
|
||||||
attribute: :drop_down_secondary_libelle,
|
attribute: :drop_down_secondary_libelle,
|
||||||
label: from_type_de_champ.libelle,
|
label: from_type_de_champ.libelle,
|
||||||
|
@ -244,6 +306,7 @@ class ProcedureRevision < ApplicationRecord
|
||||||
end
|
end
|
||||||
if from_type_de_champ.drop_down_secondary_description != to_type_de_champ.drop_down_secondary_description
|
if from_type_de_champ.drop_down_secondary_description != to_type_de_champ.drop_down_secondary_description
|
||||||
changes << {
|
changes << {
|
||||||
|
model: :type_de_champ,
|
||||||
op: :update,
|
op: :update,
|
||||||
attribute: :drop_down_secondary_description,
|
attribute: :drop_down_secondary_description,
|
||||||
label: from_type_de_champ.libelle,
|
label: from_type_de_champ.libelle,
|
||||||
|
@ -255,6 +318,7 @@ class ProcedureRevision < ApplicationRecord
|
||||||
end
|
end
|
||||||
if from_type_de_champ.drop_down_other != to_type_de_champ.drop_down_other
|
if from_type_de_champ.drop_down_other != to_type_de_champ.drop_down_other
|
||||||
changes << {
|
changes << {
|
||||||
|
model: :type_de_champ,
|
||||||
op: :update,
|
op: :update,
|
||||||
attribute: :drop_down_other,
|
attribute: :drop_down_other,
|
||||||
label: from_type_de_champ.libelle,
|
label: from_type_de_champ.libelle,
|
||||||
|
@ -267,6 +331,7 @@ class ProcedureRevision < ApplicationRecord
|
||||||
elsif to_type_de_champ.carte?
|
elsif to_type_de_champ.carte?
|
||||||
if from_type_de_champ.carte_optional_layers != to_type_de_champ.carte_optional_layers
|
if from_type_de_champ.carte_optional_layers != to_type_de_champ.carte_optional_layers
|
||||||
changes << {
|
changes << {
|
||||||
|
model: :type_de_champ,
|
||||||
op: :update,
|
op: :update,
|
||||||
attribute: :carte_layers,
|
attribute: :carte_layers,
|
||||||
label: from_type_de_champ.libelle,
|
label: from_type_de_champ.libelle,
|
||||||
|
@ -279,6 +344,7 @@ class ProcedureRevision < ApplicationRecord
|
||||||
elsif to_type_de_champ.piece_justificative?
|
elsif to_type_de_champ.piece_justificative?
|
||||||
if from_type_de_champ.piece_justificative_template_checksum != to_type_de_champ.piece_justificative_template_checksum
|
if from_type_de_champ.piece_justificative_template_checksum != to_type_de_champ.piece_justificative_template_checksum
|
||||||
changes << {
|
changes << {
|
||||||
|
model: :type_de_champ,
|
||||||
op: :update,
|
op: :update,
|
||||||
attribute: :piece_justificative_template,
|
attribute: :piece_justificative_template,
|
||||||
label: from_type_de_champ.libelle,
|
label: from_type_de_champ.libelle,
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
- case change[:op]
|
||||||
|
- when :add
|
||||||
|
%li.mb-1= t(:add, scope: [:administrateurs, :revision_changes, :attestation_template])
|
||||||
|
- when :update
|
||||||
|
- case change[:attribute]
|
||||||
|
- when :title
|
||||||
|
%li.mb-1= t(:update_title, scope: [:administrateurs, :revision_changes, :attestation_template], to: change[:to])
|
||||||
|
- when :body
|
||||||
|
%li.mb-1= t(:update_body, scope: [:administrateurs, :revision_changes, :attestation_template])
|
||||||
|
- when :footer
|
||||||
|
%li.mb-1= t(:update_footer, scope: [:administrateurs, :revision_changes, :attestation_template])
|
||||||
|
- when :logo
|
||||||
|
%li.mb-1= t(:update_logo, scope: [:administrateurs, :revision_changes, :attestation_template], to: change[:to])
|
||||||
|
- when :signature
|
||||||
|
%li.mb-1= t(:update_signature, scope: [:administrateurs, :revision_changes, :attestation_template], to: change[:to])
|
|
@ -0,0 +1,56 @@
|
||||||
|
- postfix = change[:private] ? '_private' : ''
|
||||||
|
- case change[:op]
|
||||||
|
- when :add
|
||||||
|
%li.mb-1= t("add#{postfix}", label: change[:label], scope: [:administrateurs, :revision_changes])
|
||||||
|
- when :remove
|
||||||
|
%li.mb-1= t("remove#{postfix}", label: change[:label], scope: [:administrateurs, :revision_changes])
|
||||||
|
- when :update
|
||||||
|
- case change[:attribute]
|
||||||
|
- when :libelle
|
||||||
|
%li.mb-1= t("update_libelle#{postfix}", label: change[:label], to: change[:to], scope: [:administrateurs, :revision_changes])
|
||||||
|
- when :type_champ
|
||||||
|
%li.mb-1= t("update_type_champ#{postfix}", label: change[:label], to: t("activerecord.attributes.type_de_champ.type_champs.#{change[:to]}"), scope: [:administrateurs, :revision_changes])
|
||||||
|
- when :description
|
||||||
|
%li.mb-1= t("update_description#{postfix}", label: change[:label], to: change[:to], scope: [:administrateurs, :revision_changes])
|
||||||
|
- when :drop_down_secondary_libelle
|
||||||
|
%li.mb-1= t("update_drop_down_secondary_libelle#{postfix}", label: change[:label], to: change[:to], scope: [:administrateurs, :revision_changes])
|
||||||
|
- when :drop_down_secondary_description
|
||||||
|
%li.mb-1= t("update_drop_down_secondary_description#{postfix}", label: change[:label], to: change[:to], scope: [:administrateurs, :revision_changes])
|
||||||
|
- when :mandatory
|
||||||
|
- if change[:from] == false
|
||||||
|
-# i18n-tasks-use t('administrateurs.revision_changes.update_mandatory.enabled')
|
||||||
|
-# i18n-tasks-use t('administrateurs.revision_changes.update_mandatory_private.enabled')
|
||||||
|
%li.mb-1= t("administrateurs.revision_changes.update_mandatory#{postfix}.enabled", label: change[:label])
|
||||||
|
- else
|
||||||
|
-# i18n-tasks-use t('administrateurs.revision_changes.update_mandatory.disabled')
|
||||||
|
-# i18n-tasks-use t('administrateurs.revision_changes.update_mandatory_private.disabled')
|
||||||
|
%li.mb-1= t("administrateurs.revision_changes.update_mandatory#{postfix}.disabled", label: change[:label])
|
||||||
|
- when :piece_justificative_template
|
||||||
|
-# i18n-tasks-use t('administrateurs.revision_changes.update_piece_justificative_template')
|
||||||
|
-# i18n-tasks-use t('administrateurs.revision_changes.update_piece_justificative_template_private')
|
||||||
|
%li.mb-1= t("administrateurs.revision_changes.update_piece_justificative_template#{postfix}", label: change[:label])
|
||||||
|
- when :drop_down_options
|
||||||
|
- added = change[:to].sort - change[:from].sort
|
||||||
|
- removed = change[:from].sort - change[:to].sort
|
||||||
|
%li.mb-1
|
||||||
|
= t("update_drop_down_options#{postfix}", scope: [:administrateurs, :revision_changes], label: change[:label])
|
||||||
|
%ul
|
||||||
|
- if added.present?
|
||||||
|
%li= t(:add_option, scope: [:administrateurs, :revision_changes], items: added.map{ |term| "« #{term.strip} »" }.join(", "))
|
||||||
|
- if removed.present?
|
||||||
|
%li= t(:remove_option, scope: [:administrateurs, :revision_changes], items: removed.map{ |term| "« #{term.strip} »" }.join(", "))
|
||||||
|
- when :drop_down_other
|
||||||
|
- if change[:from] == false
|
||||||
|
%li.mb-1= t("administrateurs.revision_changes.update_drop_down_other#{postfix}.enabled", label: change[:label])
|
||||||
|
- else
|
||||||
|
%li.mb-1= t("administrateurs.revision_changes.update_drop_down_other#{postfix}.disabled", label: change[:label])
|
||||||
|
- when :carte_layers
|
||||||
|
- added = change[:to].sort - change[:from].sort
|
||||||
|
- removed = change[:from].sort - change[:to].sort
|
||||||
|
%li.mb-1
|
||||||
|
= t("update_carte_layers#{postfix}", scope: [:administrateurs, :revision_changes], label: change[:label])
|
||||||
|
%ul
|
||||||
|
- if added.present?
|
||||||
|
%li= t(:add_option, scope: [:administrateurs, :revision_changes], items: added.map{ |term| "« #{t(term, scope: [:administrateurs, :carte_layers])} »" }.join(", "))
|
||||||
|
- if removed.present?
|
||||||
|
%li= t(:remove_option, scope: [:administrateurs, :revision_changes], items: removed.map{ |term| "« #{t(term, scope: [:administrateurs, :carte_layers])} »" }.join(", "))
|
|
@ -1,61 +1,8 @@
|
||||||
%ul.revision-changes
|
%ul.revision-changes
|
||||||
- changes.each do |change|
|
- changes.filter { |change| change[:model] == :attestation_template }.each do |change|
|
||||||
- postfix = change[:private] ? '_private' : ''
|
= render partial: 'administrateurs/procedures/revision_change_attestation_template', locals: { change: change }
|
||||||
- case change[:op]
|
- changes.filter { |change| change[:model] == :type_de_champ }.each do |change|
|
||||||
- when :add
|
= render partial: 'administrateurs/procedures/revision_change_type_de_champ', locals: { change: change }
|
||||||
%li.mb-1= t("add#{postfix}", label: change[:label], scope: [:administrateurs, :revision_changes])
|
|
||||||
- when :remove
|
|
||||||
%li.mb-1= t("remove#{postfix}", label: change[:label], scope: [:administrateurs, :revision_changes])
|
|
||||||
- when :update
|
|
||||||
- case change[:attribute]
|
|
||||||
- when :libelle
|
|
||||||
%li.mb-1= t("update_libelle#{postfix}", label: change[:label], to: change[:to], scope: [:administrateurs, :revision_changes])
|
|
||||||
- when :type_champ
|
|
||||||
%li.mb-1= t("update_type_champ#{postfix}", label: change[:label], to: t("activerecord.attributes.type_de_champ.type_champs.#{change[:to]}"), scope: [:administrateurs, :revision_changes])
|
|
||||||
- when :description
|
|
||||||
%li.mb-1= t("update_description#{postfix}", label: change[:label], to: change[:to], scope: [:administrateurs, :revision_changes])
|
|
||||||
- when :drop_down_secondary_libelle
|
|
||||||
%li.mb-1= t("update_drop_down_secondary_libelle#{postfix}", label: change[:label], to: change[:to], scope: [:administrateurs, :revision_changes])
|
|
||||||
- when :drop_down_secondary_description
|
|
||||||
%li.mb-1= t("update_drop_down_secondary_description#{postfix}", label: change[:label], to: change[:to], scope: [:administrateurs, :revision_changes])
|
|
||||||
- when :mandatory
|
|
||||||
- if change[:from] == false
|
|
||||||
-# i18n-tasks-use t('administrateurs.revision_changes.update_mandatory.enabled')
|
|
||||||
-# i18n-tasks-use t('administrateurs.revision_changes.update_mandatory_private.enabled')
|
|
||||||
%li.mb-1= t("administrateurs.revision_changes.update_mandatory#{postfix}.enabled", label: change[:label])
|
|
||||||
- else
|
|
||||||
-# i18n-tasks-use t('administrateurs.revision_changes.update_mandatory.disabled')
|
|
||||||
-# i18n-tasks-use t('administrateurs.revision_changes.update_mandatory_private.disabled')
|
|
||||||
%li.mb-1= t("administrateurs.revision_changes.update_mandatory#{postfix}.disabled", label: change[:label])
|
|
||||||
- when :piece_justificative_template
|
|
||||||
-# i18n-tasks-use t('administrateurs.revision_changes.update_piece_justificative_template')
|
|
||||||
-# i18n-tasks-use t('administrateurs.revision_changes.update_piece_justificative_template_private')
|
|
||||||
%li.mb-1= t("administrateurs.revision_changes.update_piece_justificative_template#{postfix}", label: change[:label])
|
|
||||||
- when :drop_down_options
|
|
||||||
- added = change[:to].sort - change[:from].sort
|
|
||||||
- removed = change[:from].sort - change[:to].sort
|
|
||||||
%li.mb-1
|
|
||||||
= t("update_drop_down_options#{postfix}", scope: [:administrateurs, :revision_changes], label: change[:label])
|
|
||||||
%ul
|
|
||||||
- if added.present?
|
|
||||||
%li= t(:add_option, scope: [:administrateurs, :revision_changes], items: added.map{ |term| "« #{term.strip} »" }.join(", "))
|
|
||||||
- if removed.present?
|
|
||||||
%li= t(:remove_option, scope: [:administrateurs, :revision_changes], items: removed.map{ |term| "« #{term.strip} »" }.join(", "))
|
|
||||||
- when :drop_down_other
|
|
||||||
- if change[:from] == false
|
|
||||||
%li.mb-1= t("administrateurs.revision_changes.update_drop_down_other#{postfix}.enabled", label: change[:label])
|
|
||||||
- else
|
|
||||||
%li.mb-1= t("administrateurs.revision_changes.update_drop_down_other#{postfix}.disabled", label: change[:label])
|
|
||||||
- when :carte_layers
|
|
||||||
- added = change[:to].sort - change[:from].sort
|
|
||||||
- removed = change[:from].sort - change[:to].sort
|
|
||||||
%li.mb-1
|
|
||||||
= t("update_carte_layers#{postfix}", scope: [:administrateurs, :revision_changes], label: change[:label])
|
|
||||||
%ul
|
|
||||||
- if added.present?
|
|
||||||
%li= t(:add_option, scope: [:administrateurs, :revision_changes], items: added.map{ |term| "« #{t(term, scope: [:administrateurs, :carte_layers])} »" }.join(", "))
|
|
||||||
- if removed.present?
|
|
||||||
%li= t(:remove_option, scope: [:administrateurs, :revision_changes], items: removed.map{ |term| "« #{t(term, scope: [:administrateurs, :carte_layers])} »" }.join(", "))
|
|
||||||
- move_changes, move_private_changes = changes.filter { |change| change[:op] == :move }.partition { |change| !change[:private] }
|
- move_changes, move_private_changes = changes.filter { |change| change[:op] == :move }.partition { |change| !change[:private] }
|
||||||
- if move_changes.size != 0
|
- if move_changes.size != 0
|
||||||
%li.mb-1= t(:move, scope: [:administrateurs, :revision_changes], count: move_changes.size)
|
%li.mb-1= t(:move, scope: [:administrateurs, :revision_changes], count: move_changes.size)
|
||||||
|
|
|
@ -1,6 +1,13 @@
|
||||||
fr:
|
fr:
|
||||||
administrateurs:
|
administrateurs:
|
||||||
revision_changes:
|
revision_changes:
|
||||||
|
attestation_template:
|
||||||
|
add: Un model d’attestation à été ajouté
|
||||||
|
update_title: Le titre de l’attestation à été modifié. Le nouveau titre est « %{to} »
|
||||||
|
update_body: Le corps du document de l’attestation à été modifié
|
||||||
|
update_footer: Le pied de page de l’attestation à été modifié
|
||||||
|
update_logo: Le logo de l’attestation à été modifié. Le nouveau logo est « %{to} »
|
||||||
|
update_signature: La signature de l’attestation à été modifié. La nouvelle signature est « %{to} »
|
||||||
has_changes: Modifications en cours (appliqué à la prochaine publication)
|
has_changes: Modifications en cours (appliqué à la prochaine publication)
|
||||||
add: Le champ « %{label} » a été ajouté
|
add: Le champ « %{label} » a été ajouté
|
||||||
remove: Le champ « %{label} » a été supprimé
|
remove: Le champ « %{label} » a été supprimé
|
||||||
|
|
|
@ -172,6 +172,7 @@ describe ProcedureRevision do
|
||||||
expect(procedure.active_revision.different_from?(new_revision)).to be_truthy
|
expect(procedure.active_revision.different_from?(new_revision)).to be_truthy
|
||||||
expect(procedure.active_revision.compare(new_revision)).to eq([
|
expect(procedure.active_revision.compare(new_revision)).to eq([
|
||||||
{
|
{
|
||||||
|
model: :type_de_champ,
|
||||||
op: :add,
|
op: :add,
|
||||||
label: "Un champ text",
|
label: "Un champ text",
|
||||||
private: false,
|
private: false,
|
||||||
|
@ -182,6 +183,7 @@ describe ProcedureRevision do
|
||||||
new_revision.find_or_clone_type_de_champ(new_revision.types_de_champ.first.stable_id).update(libelle: 'modifier le libelle')
|
new_revision.find_or_clone_type_de_champ(new_revision.types_de_champ.first.stable_id).update(libelle: 'modifier le libelle')
|
||||||
expect(procedure.active_revision.compare(new_revision.reload)).to eq([
|
expect(procedure.active_revision.compare(new_revision.reload)).to eq([
|
||||||
{
|
{
|
||||||
|
model: :type_de_champ,
|
||||||
op: :update,
|
op: :update,
|
||||||
attribute: :libelle,
|
attribute: :libelle,
|
||||||
label: type_de_champ_first.libelle,
|
label: type_de_champ_first.libelle,
|
||||||
|
@ -191,6 +193,7 @@ describe ProcedureRevision do
|
||||||
stable_id: type_de_champ_first.stable_id
|
stable_id: type_de_champ_first.stable_id
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
model: :type_de_champ,
|
||||||
op: :add,
|
op: :add,
|
||||||
label: "Un champ text",
|
label: "Un champ text",
|
||||||
private: false,
|
private: false,
|
||||||
|
@ -202,6 +205,7 @@ describe ProcedureRevision do
|
||||||
new_revision.move_type_de_champ(new_revision.types_de_champ.second.stable_id, 2)
|
new_revision.move_type_de_champ(new_revision.types_de_champ.second.stable_id, 2)
|
||||||
expect(procedure.active_revision.compare(new_revision.reload)).to eq([
|
expect(procedure.active_revision.compare(new_revision.reload)).to eq([
|
||||||
{
|
{
|
||||||
|
model: :type_de_champ,
|
||||||
op: :update,
|
op: :update,
|
||||||
attribute: :libelle,
|
attribute: :libelle,
|
||||||
label: type_de_champ_first.libelle,
|
label: type_de_champ_first.libelle,
|
||||||
|
@ -211,12 +215,14 @@ describe ProcedureRevision do
|
||||||
stable_id: type_de_champ_first.stable_id
|
stable_id: type_de_champ_first.stable_id
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
model: :type_de_champ,
|
||||||
op: :add,
|
op: :add,
|
||||||
label: "Un champ text",
|
label: "Un champ text",
|
||||||
private: false,
|
private: false,
|
||||||
stable_id: new_type_de_champ.stable_id
|
stable_id: new_type_de_champ.stable_id
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
model: :type_de_champ,
|
||||||
op: :move,
|
op: :move,
|
||||||
label: type_de_champ_second.libelle,
|
label: type_de_champ_second.libelle,
|
||||||
private: false,
|
private: false,
|
||||||
|
@ -230,12 +236,14 @@ describe ProcedureRevision do
|
||||||
new_revision.remove_type_de_champ(new_revision.types_de_champ.first.stable_id)
|
new_revision.remove_type_de_champ(new_revision.types_de_champ.first.stable_id)
|
||||||
expect(procedure.active_revision.compare(new_revision.reload)).to eq([
|
expect(procedure.active_revision.compare(new_revision.reload)).to eq([
|
||||||
{
|
{
|
||||||
|
model: :type_de_champ,
|
||||||
op: :remove,
|
op: :remove,
|
||||||
label: type_de_champ_first.libelle,
|
label: type_de_champ_first.libelle,
|
||||||
private: false,
|
private: false,
|
||||||
stable_id: type_de_champ_first.stable_id
|
stable_id: type_de_champ_first.stable_id
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
model: :type_de_champ,
|
||||||
op: :add,
|
op: :add,
|
||||||
label: "Un champ text",
|
label: "Un champ text",
|
||||||
private: false,
|
private: false,
|
||||||
|
@ -247,18 +255,21 @@ describe ProcedureRevision do
|
||||||
new_revision.find_or_clone_type_de_champ(new_revision.types_de_champ.last.stable_id).update(mandatory: true)
|
new_revision.find_or_clone_type_de_champ(new_revision.types_de_champ.last.stable_id).update(mandatory: true)
|
||||||
expect(procedure.active_revision.compare(new_revision.reload)).to eq([
|
expect(procedure.active_revision.compare(new_revision.reload)).to eq([
|
||||||
{
|
{
|
||||||
|
model: :type_de_champ,
|
||||||
op: :remove,
|
op: :remove,
|
||||||
label: type_de_champ_first.libelle,
|
label: type_de_champ_first.libelle,
|
||||||
private: false,
|
private: false,
|
||||||
stable_id: type_de_champ_first.stable_id
|
stable_id: type_de_champ_first.stable_id
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
model: :type_de_champ,
|
||||||
op: :add,
|
op: :add,
|
||||||
label: "Un champ text",
|
label: "Un champ text",
|
||||||
private: false,
|
private: false,
|
||||||
stable_id: new_type_de_champ.stable_id
|
stable_id: new_type_de_champ.stable_id
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
model: :type_de_champ,
|
||||||
op: :update,
|
op: :update,
|
||||||
attribute: :description,
|
attribute: :description,
|
||||||
label: type_de_champ_second.libelle,
|
label: type_de_champ_second.libelle,
|
||||||
|
@ -268,6 +279,7 @@ describe ProcedureRevision do
|
||||||
stable_id: type_de_champ_second.stable_id
|
stable_id: type_de_champ_second.stable_id
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
model: :type_de_champ,
|
||||||
op: :update,
|
op: :update,
|
||||||
attribute: :mandatory,
|
attribute: :mandatory,
|
||||||
label: type_de_champ_second.libelle,
|
label: type_de_champ_second.libelle,
|
||||||
|
@ -282,18 +294,21 @@ describe ProcedureRevision do
|
||||||
new_revision.find_or_clone_type_de_champ(new_revision.types_de_champ.last.types_de_champ.first.stable_id).update(drop_down_options: ['one', 'two'])
|
new_revision.find_or_clone_type_de_champ(new_revision.types_de_champ.last.types_de_champ.first.stable_id).update(drop_down_options: ['one', 'two'])
|
||||||
expect(procedure.active_revision.compare(new_revision.reload)).to eq([
|
expect(procedure.active_revision.compare(new_revision.reload)).to eq([
|
||||||
{
|
{
|
||||||
|
model: :type_de_champ,
|
||||||
op: :remove,
|
op: :remove,
|
||||||
label: type_de_champ_first.libelle,
|
label: type_de_champ_first.libelle,
|
||||||
private: false,
|
private: false,
|
||||||
stable_id: type_de_champ_first.stable_id
|
stable_id: type_de_champ_first.stable_id
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
model: :type_de_champ,
|
||||||
op: :add,
|
op: :add,
|
||||||
label: "Un champ text",
|
label: "Un champ text",
|
||||||
private: false,
|
private: false,
|
||||||
stable_id: new_type_de_champ.stable_id
|
stable_id: new_type_de_champ.stable_id
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
model: :type_de_champ,
|
||||||
op: :update,
|
op: :update,
|
||||||
attribute: :description,
|
attribute: :description,
|
||||||
label: type_de_champ_second.libelle,
|
label: type_de_champ_second.libelle,
|
||||||
|
@ -303,6 +318,7 @@ describe ProcedureRevision do
|
||||||
stable_id: type_de_champ_second.stable_id
|
stable_id: type_de_champ_second.stable_id
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
model: :type_de_champ,
|
||||||
op: :update,
|
op: :update,
|
||||||
attribute: :mandatory,
|
attribute: :mandatory,
|
||||||
label: type_de_champ_second.libelle,
|
label: type_de_champ_second.libelle,
|
||||||
|
@ -312,6 +328,7 @@ describe ProcedureRevision do
|
||||||
stable_id: type_de_champ_second.stable_id
|
stable_id: type_de_champ_second.stable_id
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
model: :type_de_champ,
|
||||||
op: :update,
|
op: :update,
|
||||||
attribute: :type_champ,
|
attribute: :type_champ,
|
||||||
label: "sub type de champ",
|
label: "sub type de champ",
|
||||||
|
@ -321,6 +338,7 @@ describe ProcedureRevision do
|
||||||
stable_id: new_revision.types_de_champ.last.types_de_champ.first.stable_id
|
stable_id: new_revision.types_de_champ.last.types_de_champ.first.stable_id
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
model: :type_de_champ,
|
||||||
op: :update,
|
op: :update,
|
||||||
attribute: :drop_down_options,
|
attribute: :drop_down_options,
|
||||||
label: "sub type de champ",
|
label: "sub type de champ",
|
||||||
|
@ -335,18 +353,21 @@ describe ProcedureRevision do
|
||||||
new_revision.find_or_clone_type_de_champ(new_revision.types_de_champ.last.types_de_champ.first.stable_id).update(options: { cadastres: true, znieff: true })
|
new_revision.find_or_clone_type_de_champ(new_revision.types_de_champ.last.types_de_champ.first.stable_id).update(options: { cadastres: true, znieff: true })
|
||||||
expect(procedure.active_revision.compare(new_revision.reload)).to eq([
|
expect(procedure.active_revision.compare(new_revision.reload)).to eq([
|
||||||
{
|
{
|
||||||
|
model: :type_de_champ,
|
||||||
op: :remove,
|
op: :remove,
|
||||||
label: type_de_champ_first.libelle,
|
label: type_de_champ_first.libelle,
|
||||||
private: false,
|
private: false,
|
||||||
stable_id: type_de_champ_first.stable_id
|
stable_id: type_de_champ_first.stable_id
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
model: :type_de_champ,
|
||||||
op: :add,
|
op: :add,
|
||||||
label: "Un champ text",
|
label: "Un champ text",
|
||||||
private: false,
|
private: false,
|
||||||
stable_id: new_type_de_champ.stable_id
|
stable_id: new_type_de_champ.stable_id
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
model: :type_de_champ,
|
||||||
op: :update,
|
op: :update,
|
||||||
attribute: :description,
|
attribute: :description,
|
||||||
label: type_de_champ_second.libelle,
|
label: type_de_champ_second.libelle,
|
||||||
|
@ -356,6 +377,7 @@ describe ProcedureRevision do
|
||||||
stable_id: type_de_champ_second.stable_id
|
stable_id: type_de_champ_second.stable_id
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
model: :type_de_champ,
|
||||||
op: :update,
|
op: :update,
|
||||||
attribute: :mandatory,
|
attribute: :mandatory,
|
||||||
label: type_de_champ_second.libelle,
|
label: type_de_champ_second.libelle,
|
||||||
|
@ -365,6 +387,7 @@ describe ProcedureRevision do
|
||||||
stable_id: type_de_champ_second.stable_id
|
stable_id: type_de_champ_second.stable_id
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
model: :type_de_champ,
|
||||||
op: :update,
|
op: :update,
|
||||||
attribute: :type_champ,
|
attribute: :type_champ,
|
||||||
label: "sub type de champ",
|
label: "sub type de champ",
|
||||||
|
@ -374,6 +397,7 @@ describe ProcedureRevision do
|
||||||
stable_id: new_revision.types_de_champ.last.types_de_champ.first.stable_id
|
stable_id: new_revision.types_de_champ.last.types_de_champ.first.stable_id
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
model: :type_de_champ,
|
||||||
op: :update,
|
op: :update,
|
||||||
attribute: :carte_layers,
|
attribute: :carte_layers,
|
||||||
label: "sub type de champ",
|
label: "sub type de champ",
|
||||||
|
|
Loading…
Reference in a new issue