amelioration(usagers.dossiers.erreurs): ETQ usager, lorsque je soumets un dossier avec des erreurs, le format des erreurs est au format du DSFR
Update app/components/dossiers/errors_full_messages.rb Update app/components/dossiers/errors_full_messages/errors_full_messages.html.haml Co-authored-by: Colin Darie <colin@darie.eu>
This commit is contained in:
parent
6abd0f8db0
commit
d8220395c8
15 changed files with 128 additions and 93 deletions
26
app/components/dossiers/errors_full_messages_component.rb
Normal file
26
app/components/dossiers/errors_full_messages_component.rb
Normal file
|
@ -0,0 +1,26 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class Dossiers::ErrorsFullMessagesComponent < ApplicationComponent
|
||||
ErrorDescriptor = Data.define(:anchor, :label, :error_message)
|
||||
|
||||
def initialize(dossier:, errors:)
|
||||
@dossier = dossier
|
||||
@errors = errors
|
||||
end
|
||||
|
||||
def dedup_and_partitioned_errors
|
||||
formated_errors = @errors.to_enum # ActiveModel::Errors.to_a is an alias to full_messages, we don't want that
|
||||
.to_a # but enum.to_a gives back an array
|
||||
.uniq { |error| [error.inner_error.base] } # dedup cumulated errors from dossier.champs, dossier.champs_public, dossier.champs_private which run the validator one time per association
|
||||
.map { |error| to_error_descriptor(error.message, error.inner_error.base) }
|
||||
yield(Array(formated_errors[0..2]), Array(formated_errors[3..]))
|
||||
end
|
||||
|
||||
def to_error_descriptor(str_error, model)
|
||||
ErrorDescriptor.new("##{model.labelledby_id}", model.libelle.truncate(200), str_error)
|
||||
end
|
||||
|
||||
def render?
|
||||
!@errors.empty?
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue