change 'published' tabs by 'en cours' to highlight closed procedure with 'en cours' files

This commit is contained in:
Lisa Durand 2023-09-25 15:34:37 +02:00
parent 39368ab674
commit a4c79e953b
7 changed files with 75 additions and 33 deletions

View file

@ -12,18 +12,22 @@ module Instructeurs
.kept .kept
.with_attached_logo .with_attached_logo
.includes(:defaut_groupe_instructeur) .includes(:defaut_groupe_instructeur)
.includes(:dossiers)
@procedures = all_procedures.order(closed_at: :desc, unpublished_at: :desc, published_at: :desc, created_at: :desc)
@procedures_publiees = all_procedures.publiees.order(published_at: :desc).page(params[:page]).per(ITEMS_PER_PAGE)
@procedures_draft = all_procedures.brouillons.order(created_at: :desc).page(params[:page]).per(ITEMS_PER_PAGE)
@procedures_closed = all_procedures.closes.order(created_at: :desc).page(params[:page]).per(ITEMS_PER_PAGE)
@procedures_publiees_count = all_procedures.publiees.count
@procedures_draft_count = all_procedures.brouillons.count
@procedures_closed_count = all_procedures.closes.count
dossiers = current_instructeur.dossiers dossiers = current_instructeur.dossiers
.joins(groupe_instructeur: :procedure) .joins(groupe_instructeur: :procedure)
.where(procedures: { hidden_at: nil }) .where(procedures: { hidden_at: nil })
@procedures = all_procedures.order(closed_at: :desc, unpublished_at: :desc, published_at: :desc, created_at: :desc)
publiees_or_closes_with_dossiers_en_cours = all_procedures.publiees.or(all_procedures.closes.where(dossiers: { id: dossiers.en_cours.pluck(:id) }))
@procedures_en_cours = publiees_or_closes_with_dossiers_en_cours.order(published_at: :desc).page(params[:page]).per(ITEMS_PER_PAGE)
closes_with_no_dossier_en_cours = all_procedures.closes.excluding(all_procedures.closes.where(dossiers: { id: dossiers.en_cours.pluck(:id) }))
@procedures_closes = closes_with_no_dossier_en_cours.order(created_at: :desc).page(params[:page]).per(ITEMS_PER_PAGE)
@procedures_draft = all_procedures.brouillons.order(created_at: :desc).page(params[:page]).per(ITEMS_PER_PAGE)
@procedures_en_cours_count = publiees_or_closes_with_dossiers_en_cours.count
@procedures_draft_count = all_procedures.brouillons.count
@procedures_closes_count = closes_with_no_dossier_en_cours.count
@dossiers_count_per_procedure = dossiers.by_statut('tous').group('groupe_instructeurs.procedure_id').reorder(nil).count @dossiers_count_per_procedure = dossiers.by_statut('tous').group('groupe_instructeurs.procedure_id').reorder(nil).count
@dossiers_a_suivre_count_per_procedure = dossiers.by_statut('a-suivre').group('groupe_instructeurs.procedure_id').reorder(nil).count @dossiers_a_suivre_count_per_procedure = dossiers.by_statut('a-suivre').group('groupe_instructeurs.procedure_id').reorder(nil).count
@dossiers_archived_count_per_procedure = dossiers.by_statut('archives').group('groupe_instructeurs.procedure_id').count @dossiers_archived_count_per_procedure = dossiers.by_statut('archives').group('groupe_instructeurs.procedure_id').count
@ -55,7 +59,7 @@ module Instructeurs
@procedure_ids_en_cours_with_notifications = current_instructeur.procedure_ids_with_notifications(:en_cours) @procedure_ids_en_cours_with_notifications = current_instructeur.procedure_ids_with_notifications(:en_cours)
@procedure_ids_termines_with_notifications = current_instructeur.procedure_ids_with_notifications(:termine) @procedure_ids_termines_with_notifications = current_instructeur.procedure_ids_with_notifications(:termine)
@statut = params[:statut] @statut = params[:statut]
@statut.blank? ? @statut = 'publiees' : @statut = params[:statut] @statut.blank? ? @statut = 'en-cours' : @statut = params[:statut]
end end
def show def show

View file

@ -7,17 +7,26 @@
%nav.tabs{ role: 'navigation', 'aria-label': t('views.users.dossiers.secondary_menu') } %nav.tabs{ role: 'navigation', 'aria-label': t('views.users.dossiers.secondary_menu') }
%ul %ul
= tab_item(t('pluralize.published', count: @procedures_publiees_count), instructeur_procedures_path(statut: 'publiees'), active: @statut == 'publiees', badge: number_with_html_delimiter(@procedures_publiees_count)) = tab_item(t('pluralize.en_cours', count: @procedures_en_cours_count), instructeur_procedures_path(statut: 'en-cours'), active: @statut == 'en-cours', badge: number_with_html_delimiter(@procedures_en_cours_count))
= tab_item('En test', instructeur_procedures_path(statut: 'brouillons'), active: @statut == 'brouillons', badge: number_with_html_delimiter(@procedures_draft_count)) = tab_item(t('pluralize.en_test', count: @procedures_draft_count), instructeur_procedures_path(statut: 'brouillons'), active: @statut == 'brouillons', badge: number_with_html_delimiter(@procedures_draft_count))
= tab_item(t('pluralize.closed', count: @procedures_closed_count), instructeur_procedures_path(statut: 'archivees'), active: @statut == 'archivees', badge: number_with_html_delimiter(@procedures_closed_count)) = tab_item(t('pluralize.closed', count: @procedures_closes_count), instructeur_procedures_path(statut: 'archivees'), active: @statut == 'archivees', badge: number_with_html_delimiter(@procedures_closes_count))
.fr-container .fr-container
- if @statut === "publiees" - if @statut === "en-cours"
- collection = @procedures_publiees = render Dsfr::CalloutComponent.new(title: nil) do |c|
- c.with_body do
= t(".procedure_en_cours_description")
- collection = @procedures_en_cours
- if @statut === "brouillons" - if @statut === "brouillons"
= render Dsfr::CalloutComponent.new(title: nil) do |c|
- c.with_body do
= t(".procedure_en_test_description")
- collection = @procedures_draft - collection = @procedures_draft
- if @statut === "archivees" - if @statut === "archivees"
- collection = @procedures_closed = render Dsfr::CalloutComponent.new(title: nil) do |c|
- c.with_body do
= t(".procedure_close_description")
- collection = @procedures_closes
- if collection.present? - if collection.present?

View file

@ -733,6 +733,9 @@ en:
en_cours: en_cours:
one: in progress one: in progress
other: in progress other: in progress
en_test:
one: in testing
other: in testing
traites: traites:
one: finished one: finished
other: finished other: finished
@ -755,17 +758,17 @@ en:
one: "%{count} file found" one: "%{count} file found"
other: "%{count} files found" other: "%{count} files found"
published: published:
one: Published one: published
other: Published other: published
closed: closed:
one: Closed one: finished
other: Closed other: finished
draft: draft:
one: Draft one: draft
other: Drafts other: drafts
deleted: deleted:
one: Deleted one: deleted
other: Deleted other: deleted
administrateurs: administrateurs:
activate: activate:
new: new:

View file

@ -745,6 +745,9 @@ fr:
en_cours: en_cours:
one: en cours one: en cours
other: en cours other: en cours
en_test:
one: en test
other: en test
traites: traites:
one: traité one: traité
other: traités other: traités
@ -767,17 +770,17 @@ fr:
one: "%{count} dossier trouvé" one: "%{count} dossier trouvé"
other: "%{count} dossiers trouvés" other: "%{count} dossiers trouvés"
published: published:
one: Publiée one: publiée
other: Publiées other: publiées
closed: closed:
one: Close one: terminée
other: Closes other: terminées
draft: draft:
one: Brouillon one: brouillon
other: Brouillons other: brouillons
deleted: deleted:
one: Supprimée one: supprimée
other: Supprimées other: supprimées
procedures: procedures:
one: Démarche one: Démarche
other: Démarches other: Démarches

View file

@ -2,6 +2,9 @@ en:
instructeurs: instructeurs:
procedures: procedures:
index: index:
procedure_en_cours_description: The “in progress” tab groups published procedures as well as closed procedures that still have files to process.
procedure_en_test_description: The “in testing” tab groups unpublished procedures. Files submitted during the test phase will be automatically deleted when the procedure is modified or published.
procedure_close_description: The “finished” tab groups closed procedures with no more files to process.
to_follow: to follow to_follow: to follow
followed: followed followed: followed
processed: processed processed: processed

View file

@ -2,6 +2,9 @@ fr:
instructeurs: instructeurs:
procedures: procedures:
index: index:
procedure_en_cours_description: L'onglet « en cours » regroupe les démarches publiées ainsi que les démarches closes ayant encore des dossiers à traiter.
procedure_en_test_description: L'onglet « en test » regroupe les démarches qui ne sont pas encore publiées. Les dossiers déposés pendant la phase de test seront automatiquement supprimés lors de la modification ou de la publication de la démarche.
procedure_close_description: L'onglet « terminée » regroupe les démarches closes n'ayant plus de dossiers à traiter.
to_follow: à suivre to_follow: à suivre
followed: suivis followed: suivis
processed: traités processed: traités

View file

@ -105,6 +105,8 @@ describe Instructeurs::ProceduresController, type: :controller do
context "with not draft state on multiple procedures" do context "with not draft state on multiple procedures" do
let(:procedure2) { create(:procedure, :published, :expirable) } let(:procedure2) { create(:procedure, :published, :expirable) }
let(:procedure3) { create(:procedure, :closed, :expirable) }
let(:procedure4) { create(:procedure, :closed, :expirable) }
let(:state) { Dossier.states.fetch(:en_construction) } let(:state) { Dossier.states.fetch(:en_construction) }
before do before do
@ -132,6 +134,13 @@ describe Instructeurs::ProceduresController, type: :controller do
state: Dossier.states.fetch(:sans_suite), state: Dossier.states.fetch(:sans_suite),
processed_at: 8.months.ago, processed_at: 8.months.ago,
hidden_by_user_at: 1.day.ago) # counted as expirable because even if user remove it, instructeur see it hidden_by_user_at: 1.day.ago) # counted as expirable because even if user remove it, instructeur see it
instructeur.groupe_instructeurs << procedure3.defaut_groupe_instructeur
create(:dossier, :followed, procedure: procedure3, state: Dossier.states.fetch(:en_construction))
create(:dossier, procedure: procedure3, state: Dossier.states.fetch(:sans_suite))
instructeur.groupe_instructeurs << procedure4.defaut_groupe_instructeur
create(:dossier, procedure: procedure4, state: Dossier.states.fetch(:sans_suite))
subject subject
end end
@ -148,12 +157,20 @@ describe Instructeurs::ProceduresController, type: :controller do
it { expect(assigns(:dossiers_archived_count_per_procedure)[procedure2.id]).to eq(nil) } it { expect(assigns(:dossiers_archived_count_per_procedure)[procedure2.id]).to eq(nil) }
it { expect(assigns(:dossiers_termines_count_per_procedure)[procedure2.id]).to eq(1) } it { expect(assigns(:dossiers_termines_count_per_procedure)[procedure2.id]).to eq(1) }
it { expect(assigns(:dossiers_count_per_procedure)[procedure3.id]).to eq(2) }
it { expect(assigns(:all_dossiers_counts)['à suivre']).to eq(3 + 0) } it { expect(assigns(:all_dossiers_counts)['à suivre']).to eq(3 + 0) }
it { expect(assigns(:all_dossiers_counts)['suivis']).to eq(0 + 1) } it { expect(assigns(:all_dossiers_counts)['suivis']).to eq(0 + 1) }
it { expect(assigns(:all_dossiers_counts)['traités']).to eq(2 + 1) } it { expect(assigns(:all_dossiers_counts)['traités']).to eq(2 + 1 + 1 + 1) }
it { expect(assigns(:all_dossiers_counts)['dossiers']).to eq(5 + 3) } it { expect(assigns(:all_dossiers_counts)['dossiers']).to eq(5 + 3 + 2 + 1) }
it { expect(assigns(:all_dossiers_counts)['archivés']).to eq(1 + 0) } it { expect(assigns(:all_dossiers_counts)['archivés']).to eq(1 + 0) }
it { expect(assigns(:all_dossiers_counts)['expirant']).to eq(2 + 0) } it { expect(assigns(:all_dossiers_counts)['expirant']).to eq(2 + 0) }
it { expect(assigns(:procedures_en_cours)).to eq([procedure2, procedure, procedure3]) }
it { expect(assigns(:procedures_en_cours_count)).to eq(3) }
it { expect(assigns(:procedures_closes)).to eq([procedure4]) }
it { expect(assigns(:procedures_closes_count)).to eq(1) }
end end
context 'with not draft state on discarded procedure' do context 'with not draft state on discarded procedure' do