fix(turbo): rerender only top part of the header

This commit is contained in:
Paul Chavard 2023-02-27 16:06:11 +01:00
parent 636e6aa6cb
commit 7076d6d99e
5 changed files with 54 additions and 53 deletions

View file

@ -6,49 +6,8 @@
pour voir si l'opération est finie.
.sub-header
.container.turbo-header
.flex.fr-mb-3w
%div
%h1.fr-h2.fr-mb-1w
= "Dossier nº #{dossier.id}"
= status_badge(dossier.state, 'super')
= link_to dossier.procedure.libelle.truncate_words(10), instructeur_procedure_path(dossier.procedure), title: dossier.procedure.libelle, class: "fr-link"
= procedure_badge(dossier.procedure)
.header-actions.fr-ml-auto
= render partial: 'instructeurs/dossiers/header_actions', locals: { dossier: dossier }
= render(partial: 'instructeurs/dossiers/print_and_export_actions', locals: {dossier: dossier})
= render(partial: 'instructeurs/dossiers/expiration_banner', locals: {dossier: dossier})
- if dossier.user_deleted?
%p.fr-mb-1w
%small Lusager a supprimé son compte. Vous pouvez archiver puis supprimer le dossier.
.container
%nav.tabs
%ul
- notifications_summary = current_instructeur.notifications_for_dossier(dossier)
= dynamic_tab_item(t('views.instructeurs.dossiers.tab_steps.request'),
instructeur_dossier_path(dossier.procedure, dossier),
notification: notifications_summary[:demande])
= dynamic_tab_item(t('views.instructeurs.dossiers.tab_steps.private_annotations'),
annotations_privees_instructeur_dossier_path(dossier.procedure, dossier),
notification: notifications_summary[:annotations_privees])
= dynamic_tab_item(t('views.instructeurs.dossiers.tab_steps.external_opinion'),
avis_instructeur_dossier_path(dossier.procedure, dossier),
notification: notifications_summary[:avis])
= dynamic_tab_item(t('views.instructeurs.dossiers.tab_steps.messaging'),
messagerie_instructeur_dossier_path(dossier.procedure, dossier),
notification: notifications_summary[:messagerie])
= dynamic_tab_item(t('views.instructeurs.dossiers.tab_steps.involved_persons'),
personnes_impliquees_instructeur_dossier_path(dossier.procedure, dossier))
= render partial: 'instructeurs/dossiers/header_top', locals: { dossier: }
= render partial: 'instructeurs/dossiers/header_bottom', locals: { dossier: }
.container
.print-header

View file

@ -0,0 +1,23 @@
#header-bottom.container
%nav.tabs
%ul
- notifications_summary = current_instructeur.notifications_for_dossier(dossier)
= dynamic_tab_item(t('views.instructeurs.dossiers.tab_steps.request'),
instructeur_dossier_path(dossier.procedure, dossier),
notification: notifications_summary[:demande])
= dynamic_tab_item(t('views.instructeurs.dossiers.tab_steps.private_annotations'),
annotations_privees_instructeur_dossier_path(dossier.procedure, dossier),
notification: notifications_summary[:annotations_privees])
= dynamic_tab_item(t('views.instructeurs.dossiers.tab_steps.external_opinion'),
avis_instructeur_dossier_path(dossier.procedure, dossier),
notification: notifications_summary[:avis])
= dynamic_tab_item(t('views.instructeurs.dossiers.tab_steps.messaging'),
messagerie_instructeur_dossier_path(dossier.procedure, dossier),
notification: notifications_summary[:messagerie])
= dynamic_tab_item(t('views.instructeurs.dossiers.tab_steps.involved_persons'),
personnes_impliquees_instructeur_dossier_path(dossier.procedure, dossier))

View file

@ -0,0 +1,19 @@
#header-top.container
.flex.fr-mb-3w
%div
%h1.fr-h2.fr-mb-1w
= "Dossier nº #{dossier.id}"
= status_badge(dossier.state, 'super')
= link_to dossier.procedure.libelle.truncate_words(10), instructeur_procedure_path(dossier.procedure), title: dossier.procedure.libelle, class: "fr-link"
= procedure_badge(dossier.procedure)
.header-actions.fr-ml-auto
= render partial: 'instructeurs/dossiers/header_actions', locals: { dossier: }
= render partial: 'instructeurs/dossiers/print_and_export_actions', locals: { dossier: }
= render partial: 'instructeurs/dossiers/expiration_banner', locals: { dossier: }
- if dossier.user_deleted?
%p.fr-mb-1w
%small Lusager a supprimé son compte. Vous pouvez archiver puis supprimer le dossier.

View file

@ -1 +1 @@
= turbo_stream.update_all '.turbo-header', partial: 'header', locals: { dossier: @dossier }
= turbo_stream.replace 'header-top', partial: 'header_top', locals: { dossier: @dossier }

View file

@ -154,7 +154,7 @@ describe Instructeurs::DossiersController, type: :controller do
it { expect(dossier.reload.state).to eq(Dossier.states.fetch(:en_instruction)) }
it { expect(instructeur.follow?(dossier)).to be true }
it { expect(response).to have_http_status(:ok) }
it { expect(response.body).to include('.turbo-header') }
it { expect(response.body).to include('#header-top') }
context 'when the dossier has already been put en_instruction' do
let(:dossier) { create(:dossier, :en_instruction, procedure: procedure) }
@ -200,7 +200,7 @@ describe Instructeurs::DossiersController, type: :controller do
it { expect(dossier.reload.state).to eq(Dossier.states.fetch(:en_construction)) }
it { expect(response).to have_http_status(:ok) }
it { expect(response.body).to include('.turbo-header') }
it { expect(response.body).to include('#header-top') }
context 'when the dossier has already been put en_construction' do
let(:dossier) { create(:dossier, :en_construction, procedure: procedure) }
@ -236,7 +236,7 @@ describe Instructeurs::DossiersController, type: :controller do
context 'when the dossier is refuse' do
it { expect(dossier.reload.state).to eq(Dossier.states.fetch(:en_instruction)) }
it { expect(response).to have_http_status(:ok) }
it { expect(response.body).to include('.turbo-header') }
it { expect(response.body).to include('#header-top') }
end
context 'when the dossier has already been put en_instruction' do
@ -313,7 +313,7 @@ describe Instructeurs::DossiersController, type: :controller do
expect(dossier.justificatif_motivation).to be_attached
end
it { expect(subject.body).to include('.turbo-header') }
it { expect(subject.body).to include('#header-top') }
end
context 'with dossier in batch_operation' do
@ -353,7 +353,7 @@ describe Instructeurs::DossiersController, type: :controller do
subject
end
it { expect(subject.body).to include('.turbo-header') }
it { expect(subject.body).to include('#header-top') }
end
context 'with attachment' do
@ -367,7 +367,7 @@ describe Instructeurs::DossiersController, type: :controller do
expect(dossier.justificatif_motivation).to be_attached
end
it { expect(subject.body).to include('.turbo-header') }
it { expect(subject.body).to include('#header-top') }
end
end
@ -409,14 +409,14 @@ describe Instructeurs::DossiersController, type: :controller do
end
it 'The instructeur is sent back to the dossier page' do
expect(subject.body).to include('.turbo-header')
expect(subject.body).to include('#header-top')
end
context 'and the dossier has already an attestation' do
it 'should not crash' do
dossier.attestation = Attestation.new
dossier.save
expect(subject.body).to include('.turbo-header')
expect(subject.body).to include('#header-top')
end
end
end
@ -455,7 +455,7 @@ describe Instructeurs::DossiersController, type: :controller do
expect(dossier.justificatif_motivation).to be_attached
end
it { expect(subject.body).to include('.turbo-header') }
it { expect(subject.body).to include('#header-top') }
end
end