feat(groupe instructeur): add import - export partial in group page

This commit is contained in:
Eric Leroy-Terquem 2023-06-12 14:19:22 +02:00
parent 0d1754d715
commit 6bc15b8342
6 changed files with 21 additions and 20 deletions

View file

@ -2,8 +2,7 @@
%h1 Ajout de groupes d'instructeurs %h1 Ajout de groupes d'instructeurs
= render partial: 'administrateurs/groupe_instructeurs/import_export', = render partial: 'administrateurs/groupe_instructeurs/import_export',
locals: { procedure: @procedure, locals: { procedure: @procedure }
groupe_instructeurs: @groupe_instructeurs }
%section %section
= form_for :groupe_instructeur, = form_for :groupe_instructeur,

View file

@ -2,8 +2,7 @@
%h1 Gestion des instructeurs %h1 Gestion des instructeurs
= render partial: 'administrateurs/groupe_instructeurs/import_export', = render partial: 'administrateurs/groupe_instructeurs/import_export',
locals: { procedure: @procedure, locals: { procedure: @procedure }
groupe_instructeurs: @procedure.groupe_instructeurs }
= render partial: 'administrateurs/groupe_instructeurs/instructeurs', = render partial: 'administrateurs/groupe_instructeurs/instructeurs',
locals: { procedure: @procedure, locals: { procedure: @procedure,

View file

@ -4,7 +4,7 @@ class Procedure::OneGroupeManagementComponent < ApplicationComponent
def initialize(revision:, groupe_instructeur:) def initialize(revision:, groupe_instructeur:)
@revision = revision @revision = revision
@groupe_instructeur = groupe_instructeur @groupe_instructeur = groupe_instructeur
@procedure_id = revision.procedure_id @procedure = revision.procedure
end end
private private

View file

@ -1,8 +1,11 @@
%div{ id: dom_id(@groupe_instructeur, :routing) } %div{ id: dom_id(@groupe_instructeur, :routing) }
%h1 Paramètres du groupe %h1 Paramètres du groupe
= render partial: 'administrateurs/groupe_instructeurs/import_export',
locals: { procedure: @procedure }
= form_for @groupe_instructeur, = form_for @groupe_instructeur,
url: admin_procedure_groupe_instructeur_path(@procedure_id, @groupe_instructeur), url: admin_procedure_groupe_instructeur_path(@procedure, @groupe_instructeur),
method: :patch do |f| method: :patch do |f|
= f.label :label, 'Nom du groupe', class: 'fr-label fr-mb-1w' = f.label :label, 'Nom du groupe', class: 'fr-label fr-mb-1w'
.flex .flex
@ -10,7 +13,7 @@
= f.button 'Renommer', class: 'fr-btn fr-btn--secondary' = f.button 'Renommer', class: 'fr-btn fr-btn--secondary'
= form_for @groupe_instructeur, = form_for @groupe_instructeur,
url: admin_procedure_groupe_instructeur_update_state_path(@procedure_id, @groupe_instructeur), url: admin_procedure_groupe_instructeur_update_state_path(@procedure, @groupe_instructeur),
method: :patch, method: :patch,
data: { turbo: true, controller: 'autosubmit' } do |f| data: { turbo: true, controller: 'autosubmit' } do |f|
.fr-checkbox-group.fr-my-3w .fr-checkbox-group.fr-my-3w
@ -19,7 +22,7 @@
Groupe inactif Groupe inactif
%span.fr-hint-text Si cette option est activée, les usagers ne pourront plus sélectionner ce groupe dinstructeurs %span.fr-hint-text Si cette option est activée, les usagers ne pourront plus sélectionner ce groupe dinstructeurs
= form_tag admin_procedure_routing_rules_path(@procedure_id), = form_tag admin_procedure_routing_rules_path(@procedure),
method: :post, method: :post,
data: { controller: 'autosave' }, data: { controller: 'autosave' },
class: 'fr-mb-3w' do class: 'fr-mb-3w' do
@ -41,18 +44,18 @@
.fr-hint-text .fr-hint-text
%span Si vous ne trouvez pas l'option correspondant à votre groupe, veuillez l'ajouter dans le champ dédié au %span Si vous ne trouvez pas l'option correspondant à votre groupe, veuillez l'ajouter dans le champ dédié au
%span %span
= link_to 'routage', champs_admin_procedure_path(@procedure_id) = link_to 'routage', champs_admin_procedure_path(@procedure)
.flex.fr-btns-group--sm.fr-btns-group--inline.fr-btns-group--icon-right .flex.fr-btns-group--sm.fr-btns-group--inline.fr-btns-group--icon-right
- if @groupe_instructeur.can_delete? - if @groupe_instructeur.can_delete?
%p= t('.delete') %p= t('.delete')
= button_to admin_procedure_groupe_instructeur_path(@procedure_id, @groupe_instructeur), = button_to admin_procedure_groupe_instructeur_path(@procedure, @groupe_instructeur),
class: 'fr-btn fr-btn--tertiary fr-btn--icon-left fr-icon-delete-line', class: 'fr-btn fr-btn--tertiary fr-btn--icon-left fr-icon-delete-line',
method: :delete, method: :delete,
data: { confirm: t('.delete_confirmation', group_name: @groupe_instructeur.label) } do data: { confirm: t('.delete_confirmation', group_name: @groupe_instructeur.label) } do
Supprimer Supprimer
- else - else
= button_to reaffecter_dossiers_admin_procedure_groupe_instructeur_path(@procedure_id, @groupe_instructeur), = button_to reaffecter_dossiers_admin_procedure_groupe_instructeur_path(@procedure, @groupe_instructeur),
class: 'fr-btn fr-btn--tertiary fr-icon-folder-2-line', class: 'fr-btn fr-btn--tertiary fr-icon-folder-2-line',
title: t('.move_files_confirmation'), title: t('.move_files_confirmation'),
method: :get do method: :get do

View file

@ -1,4 +1,4 @@
- key = @procedure.groupe_instructeurs.one? ? 'instructeurs' : 'groupes' - key = procedure.groupe_instructeurs.one? ? 'instructeurs' : 'groupes'
%section.fr-accordion.fr-mb-3w %section.fr-accordion.fr-mb-3w
%h3.fr-accordion__title %h3.fr-accordion__title
%button.fr-accordion__btn{ "aria-controls" => "accordion-106", "aria-expanded" => "false" } %button.fr-accordion__btn{ "aria-controls" => "accordion-106", "aria-expanded" => "false" }
@ -10,7 +10,7 @@
= t(".csv_import.#{key}.notice_1_html", csv_max_size: number_to_human_size(csv_max_size)) = t(".csv_import.#{key}.notice_1_html", csv_max_size: number_to_human_size(csv_max_size))
%p.notice %p.notice
= t(".csv_import.#{key}.notice_2") = t(".csv_import.#{key}.notice_2")
= form_tag import_admin_procedure_groupe_instructeurs_path(@procedure), method: :post, multipart: true, class: "mt-4 form flex justify-between align-center" do = form_tag import_admin_procedure_groupe_instructeurs_path(procedure), method: :post, multipart: true, class: "mt-4 form flex justify-between align-center" do
= file_field_tag :csv_file, required: true, accept: 'text/csv', size: "1" = file_field_tag :csv_file, required: true, accept: 'text/csv', size: "1"
= submit_tag t('.csv_import.import_file'), class: 'fr-btn fr-btn--secondary', data: { disable_with: "Envoi...", confirm: t('.csv_import.import_file_alert') } = submit_tag t('.csv_import.import_file'), class: 'fr-btn fr-btn--secondary', data: { disable_with: "Envoi...", confirm: t('.csv_import.import_file_alert') }
- else - else
@ -18,11 +18,11 @@
= t(".csv_import.#{key}.title") = t(".csv_import.#{key}.title")
%p.notice %p.notice
= t('.csv_import.import_file_procedure_not_published') = t('.csv_import.import_file_procedure_not_published')
- if groupe_instructeurs.many? - if procedure.groupe_instructeurs.many?
.flex.justify-between.align-center.mt-4 .flex.justify-between.align-center.mt-4
%div %div
= t(".existing_groupe", count: groupe_instructeurs.total_count) = t(".existing_groupe", count: procedure.groupe_instructeurs.count)
= button_to "Exporter au format CSV", = button_to "Exporter au format CSV",
export_groupe_instructeurs_admin_procedure_groupe_instructeurs_path(@procedure, format: :csv), export_groupe_instructeurs_admin_procedure_groupe_instructeurs_path(procedure, format: :csv),
method: :get, method: :get,
class: 'fr-btn fr-btn--secondary' class: 'fr-btn fr-btn--secondary'

View file

@ -37,12 +37,12 @@ fr:
import_file_procedure_not_published: Limport par fichier CSV est disponible une fois la démarche publiée import_file_procedure_not_published: Limport par fichier CSV est disponible une fois la démarche publiée
groupes: groupes:
title: Import / Export en masse title: Import / Export en masse
notice_1_html: Pour limport, votre fichier csv doit comporter 2 colonnes (Groupe, Email) et être séparé par des virgules (<a href=/csv/fr/import-groupe-test.csv>exemple de fichier</a>). Le poids du fichier doit être inférieur %{csv_max_size}. notice_1_html: Pour limport, votre fichier csv doit comporter 2 colonnes (Groupe, Email) et être séparé par des virgules (<a href=/csv/fr/import-groupe-test.csv>exemple de fichier</a>). Le poids du fichier doit être inférieur à %{csv_max_size}.
notice_2: Limport nécrase pas les groupes existants. Il permet uniquement d'en ajouter. Pour supprimer un groupe, allez dans la page dédiée et cliquez sur le bouton « Supprimer ». notice_2: Limport nécrase pas les groupes et instructeurs existants. Il permet uniquement d'en ajouter.
instructeurs: instructeurs:
title: Import en masse title: Import en masse
notice_1_html: Pour limport, le fichier csv doit comporter 1 seule colonne (Email) avec une adresse email d'instructeur par ligne (<a href=/csv/import-instructeurs-test.csv>exemple de fichier</a>). Le poids du fichier doit être inférieur %{csv_max_size}. notice_1_html: Pour limport, le fichier csv doit comporter 1 seule colonne (Email) avec une adresse email dinstructeur par ligne (<a href=/csv/import-instructeurs-test.csv>exemple de fichier</a>). Le poids du fichier doit être inférieur à %{csv_max_size}.
notice_2: Limport nécrase pas les instructeurs existants. Il permet uniquement d'en ajouter. Pour supprimer un instructeur, cliquez sur le bouton « Retirer ». notice_2: Limport nécrase pas les instructeurs existants. Il permet uniquement d'en ajouter.
existing_groupe: existing_groupe:
one: "%{count} groupe existe" one: "%{count} groupe existe"
other: "%{count} groupes existent" other: "%{count} groupes existent"