some layouts

This commit is contained in:
simon lehericey 2024-07-15 23:28:36 +02:00
parent 393db312c2
commit 57f698853f
No known key found for this signature in database
GPG key ID: CDE670D827C7B3C5
7 changed files with 113 additions and 77 deletions

View file

@ -150,4 +150,6 @@ module ApplicationHelper
.map { |word| word[0].upcase }
.join
end
def asterisk = render(EditableChamp::AsteriskMandatoryComponent.new)
end

View file

@ -0,0 +1,26 @@
.card.no-list
= hidden_field_tag("#{prefix}[stable_id]", item.stable_id)
.fr-checkbox-group{ data: { controller: 'hide-target' } }
- id = sanitize_to_id("#{prefix}_#{item.stable_id}_enabled")
= check_box_tag "#{prefix}[enabled]", true, item.enabled?, id:, data: { 'hide-target_target': 'source' }
= label_tag id, libelle, class: 'fr-label'
%div{ class: class_names('fr-hidden': !item.enabled?), data: { hide_target_target: 'toHide' } }
%div{ data: { controller: 'hide-target tiptap-to-template'} }
.fr-mt-2w{ data: { hide_target_target: 'toHide' } }
%span Nom du fichier :
%span{ data: { 'tiptap-to-template_target': 'output'} }= sanitize(item.template_string)
.fr-mt-2w
%button.fr-btn.fr-btn--tertiary.fr-btn--sm{ type: 'button', data: { 'hide-target_target': 'source' } } Renommer le fichier
.fr-mt-2w.fr-hidden{ data: { controller: 'tiptap', 'tiptap-attributes-value': { spellcheck: false }.to_json, hide_target_target: 'toHide' } }
%span Renommer le fichier :
.fr-mt-2w.tiptap-editor{ data: { tiptap_target: 'editor' } }
= hidden_field_tag "#{prefix}[template]", item.template_json, data: { tiptap_target: 'input' }, id: nil
.fr-mt-2w
%span.fr-text--sm Cliquez sur les étiquettes que vous souhaitez intégrer au nom du fichier
.fr-mt-2w= render TagsButtonListComponent.new(tags: { nil => @export_template.pj_tags })
= button_tag "Valider", type: 'button', class: 'fr-btn fr-mt-2w', data: { 'tiptap-to-template_target': 'trigger', 'hide-target_target': 'source'}

View file

@ -1,3 +1,5 @@
- procedure = @export_template.procedure
#export_template-edit.fr-my-4w
.fr-mb-6w
= render Dsfr::AlertComponent.new(state: :info, title: "Nouvel éditeur de modèle d'export", heading_level: 'h3') do |c|
@ -7,72 +9,62 @@
Essayez-le et donnez-nous votre avis
en nous envoyant un email à #{mail_to(CONTACT_EMAIL, subject: "Editeur de modèle d'export")}.
.fr-grid-row.fr-grid-row--gutters
.fr-col-12.fr-col-md-8
= form_with url: form_url, model: @export_template, local: true, data: { turbo: 'true', controller: 'autosubmit' } do |f|
.fr-grid-row.fr-grid-row--gutters
.fr-col-12.fr-col-md-8.fr-pr-4w
= form_with model: [:instructeur, procedure, export_template], data: { turbo: 'true', controller: 'autosubmit' } do |f|
%input.hidden{ type: 'submit', formaction: preview_instructeur_procedure_export_templates_path, data: { autosubmit_target: 'submitter' }, formnovalidate: 'true', formmethod: 'get' }
= render Dsfr::InputComponent.new(form: f, attribute: :name, input_type: :text_field)
= f.hidden_field :kind, value: 'zip'
- if groupe_instructeurs.many?
.fr-input-group
= render Dsfr::InputComponent.new(form: f, attribute: :name, input_type: :text_field)
.fr-input-group{ class: class_names('fr-hidden': groupe_instructeurs.one?) }
= f.label :groupe_instructeur_id, class: 'fr-label' do
= f.object.class.human_attribute_name(:groupe_instructeur_id)
= render EditableChamp::AsteriskMandatoryComponent.new
%span.fr-hint-text
Avec quel groupe instructeur souhaitez-vous partager ce modèle d'export ?
= "#{ExportTemplate.human_attribute_name('groupe_instructeur_id')} #{asterisk}"
%span.fr-hint-text Avec quel groupe instructeur souhaitez-vous partager ce modèle d'export ?
= f.collection_select :groupe_instructeur_id, groupe_instructeurs, :id, :label, {}, class: 'fr-select'
- else
= f.hidden_field :groupe_instructeur_id
= f.hidden_field :kind
.fr-input-group{ data: { controller: 'tiptap', 'tiptap-attributes-value': { spellcheck: false }.to_json } }
= f.label '[dossier_folder][template]', class: "fr-label" do
= "#{ExportTemplate.human_attribute_name('dossier_folder')} #{asterisk}"
%span.fr-hint-text Nom du répertoire contenant les différents fichiers à exporter
.tiptap-editor.fr-mt-1w{ data: { tiptap_target: 'editor' } }
= f.hidden_field "[dossier_folder][template]", data: { tiptap_target: 'input' }, value: export_template.dossier_folder.template_json
= f.hidden_field "[dossier_folder][enabled]", value: 'true'
.fr-mt-2w
%span.fr-text--sm Cliquez sur les étiquettes que vous souhaitez intégrer au nom du fichier
.fr-mt-2w= render TagsButtonListComponent.new(tags: { nil => export_template.tags })
.fr-input-group{ data: { controller: 'tiptap' } }
= f.label :tiptap_default_dossier_directory, class: "fr-label" do
= f.object.class.human_attribute_name(:tiptap_default_dossier_directory)
= render EditableChamp::AsteriskMandatoryComponent.new
%span.fr-hint-text
= t('activerecord.attributes.export_template.hints.tiptap_default_dossier_directory')
= render Dsfr::NoticeComponent.new(data_attributes: { class: 'fr-my-4w' }) do |c|
- c.with_title do
Sélectionnez les fichiers que vous souhaitez exporter
.tiptap-editor.fr-mt-1w{ data: { tiptap_target: 'editor' } }
= f.hidden_field :tiptap_default_dossier_directory, data: { tiptap_target: 'input' }
.fr-mt-2w= render TagsButtonListComponent.new(tags: { nil => @export_template.specific_tags })
%h3 Dossier au format PDF
= render partial: 'export_item',
locals: { item: export_template.export_pdf,
libelle: ExportTemplate.human_attribute_name(:export_pdf),
prefix: 'export_template[export_pdf]' }
.fr-input-group{ data: { controller: 'tiptap' } }
= f.label :tiptap_pdf_name, class: "fr-label" do
= f.object.class.human_attribute_name(:tiptap_pdf_name)
= render EditableChamp::AsteriskMandatoryComponent.new
%span.fr-hint-text
= t('activerecord.attributes.export_template.hints.tiptap_pdf_name')
.tiptap-editor.fr-mt-1w{ data: { tiptap_target: 'editor' } }
= f.hidden_field :tiptap_pdf_name, data: { tiptap_target: 'input' }
.fr-mt-2w= render TagsButtonListComponent.new(tags: { nil => @export_template.specific_tags })
%h3 Pièces justificatives
- procedure.exportables_pieces_jointes.each do |tdc|
- item = export_template.pj(tdc)
= render partial: 'export_item',
locals: { item:,
libelle: tdc.libelle,
prefix: 'export_template[pjs][]'}
- if @all_pj.any?
%h3 Pieces justificatives
.fixed-footer
.fr-container
%ul.fr-btns-group.fr-btns-group--inline-md
%li= f.button "Enregistrer", class: "fr-btn", data: { turbo: 'false' }
%li= link_to "Annuler", [:exports, :instructeur, procedure], class: "fr-btn fr-btn--secondary"
- if export_template.persisted?
%li
= link_to "Supprimer",
[:instructeur, procedure, export_template],
method: :delete,
data: { confirm: "Voulez-vous vraiment supprimer ce modèle ? Il sera supprimé pour tous les instructeurs du groupe"},
class: "fr-btn fr-btn--secondary"
.fr-highlight
%p.fr-text--sm
N'incluez pas les extensions de fichier (.pdf, .jpg, …) dans les noms de pièces jointes.
- @all_pj.each do |pj|
.fr-input-group{ data: { controller: 'tiptap' } }
= label_tag pj.libelle, nil, name: field_name(:export_template, "tiptap_pj_#{pj.stable_id}"), class: "fr-label"
.tiptap-editor.fr-mt-1w{ data: { tiptap_target: 'editor' } }
= hidden_field_tag field_name(:export_template, "tiptap_pj_#{pj.stable_id}"), "#{@export_template.content_for_pj(pj)}" , data: { tiptap_target: 'input' }
.fr-mt-2w= render TagsButtonListComponent.new(tags: { nil => @export_template.tags_for_pj })
.fixed-footer
.fr-container
%ul.fr-btns-group.fr-btns-group--inline-md
%li
%input.hidden{ type: 'submit', formaction: preview_instructeur_export_templates_path, data: { autosubmit_target: 'submitter' }, formnovalidate: 'true', formmethod: 'get' }
= f.button "Enregistrer", class: "fr-btn", data: { turbo: 'false' }
%li
= link_to "Annuler", instructeur_procedure_path(@procedure), class: "fr-btn fr-btn--secondary"
- if @export_template.persisted?
%li
= link_to "Supprimer", instructeur_export_template_path(@export_template, procedure_id: @procedure.id), method: :delete, data: { confirm: "Voulez-vous vraiment supprimer ce modèle ? Il sera supprimé pour tous les instructeurs du groupe"}, class: "fr-btn fr-btn--secondary"
- sample_dossier = @procedure.dossier_for_preview(current_instructeur)
- if sample_dossier
.fr-col-12.fr-col-md-4.fr-background-alt--blue-france
= render partial: 'preview', locals: { dossier: sample_dossier, export_template: @export_template, procedure: @procedure }
= render partial: 'preview', locals: { export_template: }

View file

@ -1,17 +1,33 @@
- procedure = export_template.procedure
- dossier = procedure.dossier_for_preview(current_instructeur)
#preview.export-template-preview.fr-p-2w.sticky--top
%h2.fr-h4 Aperçu
%ul.tree.fr-text--sm
%li #{DownloadableFileService::EXPORT_DIRNAME}/
%li
%ul
%li
%span#preview_default_dossier_directory #{export_template.tiptap_convert(dossier, "default_dossier_directory")}/
%ul
%li#preview_pdf_name #{export_template.tiptap_convert(dossier, "pdf_name")}.pdf
- procedure.exportables_pieces_jointes.each do |pj|
%li{ id: "preview_pj_#{pj.stable_id}" } #{export_template.tiptap_convert_pj(dossier, pj.stable_id)}-1.jpg
%ul
%li
%span messagerie/
%ul
%li un-autre-fichier.png
- if dossier.nil?
%p.fr-text--sm
Pour générer un aperçu fidèle avec tous les champs et les dates,
= link_to 'créez-vous un dossier', commencer_url(procedure.path), target: '_blank'
et acceptez-le : laperçu lutilisera.
- else
%ul.tree.fr-text--sm
%li
%span.fr-icon-folder-zip-line
#{DownloadableFileService::EXPORT_DIRNAME}/
%li
%ul
%li
%span.fr-icon-folder-line
#{export_template.dossier_folder.path(dossier)}/
%ul
- if export_template.export_pdf.enabled?
%li
%span.fr-icon-pdf-2-line
#{export_template.export_pdf.path(dossier)}.pdf
- procedure.exportables_pieces_jointes.each do |tdc|
- export_pj = export_template.pj(tdc)
- if export_pj.enabled?
%li
%span.fr-icon-file-image-line
#{export_pj.path(dossier)}-1.jpg

View file

@ -4,4 +4,4 @@
.fr-container
%h1 Mise à jour modèle d'export
= render partial: 'form', locals: { form_url: instructeur_export_template_path(@procedure, @export_template), groupe_instructeurs: @groupe_instructeurs }
= render partial: 'form', locals: { export_template: @export_template, groupe_instructeurs: @groupe_instructeurs }

View file

@ -3,4 +3,4 @@
[t('.title')]] }
.fr-container
%h1 Nouveau modèle d'export
= render partial: 'form', locals: { form_url: instructeur_export_templates_path, groupe_instructeurs: @groupe_instructeurs }
= render partial: 'form', locals: { export_template: @export_template, groupe_instructeurs: @groupe_instructeurs }

View file

@ -38,9 +38,9 @@
%tbody
- @export_templates.each do |export_template|
%tr
%td= link_to export_template.name, edit_instructeur_export_template_path(export_template, procedure_id: @procedure.id)
%td= link_to export_template.name, [:edit, :instructeur, @procedure, export_template]
%td= export_template.groupe_instructeur.label if @procedure.groupe_instructeurs.many?
%p
= link_to new_instructeur_export_template_path(procedure_id: params[:procedure_id]), class: 'fr-btn fr-btn--secondary fr-btn--icon-left fr-icon-add-line' do
= link_to [:new, :instructeur, @procedure, :export_template], class: 'fr-btn fr-btn--secondary fr-btn--icon-left fr-icon-add-line' do
Ajouter un modèle d'export