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
.with_attached_logo
.includes(:defaut_groupe_instructeur)
@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
.includes(:dossiers)
dossiers = current_instructeur.dossiers
.joins(groupe_instructeur: :procedure)
.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_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
@ -55,7 +59,7 @@ module Instructeurs
@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)
@statut = params[:statut]
@statut.blank? ? @statut = 'publiees' : @statut = params[:statut]
@statut.blank? ? @statut = 'en-cours' : @statut = params[:statut]
end
def show

View file

@ -7,17 +7,26 @@
%nav.tabs{ role: 'navigation', 'aria-label': t('views.users.dossiers.secondary_menu') }
%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('En test', 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.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(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_closes_count), instructeur_procedures_path(statut: 'archivees'), active: @statut == 'archivees', badge: number_with_html_delimiter(@procedures_closes_count))
.fr-container
- if @statut === "publiees"
- collection = @procedures_publiees
- if @statut === "en-cours"
= render Dsfr::CalloutComponent.new(title: nil) do |c|
- c.with_body do
= t(".procedure_en_cours_description")
- collection = @procedures_en_cours
- if @statut === "brouillons"
= render Dsfr::CalloutComponent.new(title: nil) do |c|
- c.with_body do
= t(".procedure_en_test_description")
- collection = @procedures_draft
- 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?

View file

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

View file

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

View file

@ -2,6 +2,9 @@ en:
instructeurs:
procedures:
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
followed: followed
processed: processed

View file

@ -2,6 +2,9 @@ fr:
instructeurs:
procedures:
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
followed: suivis
processed: traités

View file

@ -105,6 +105,8 @@ describe Instructeurs::ProceduresController, type: :controller do
context "with not draft state on multiple procedures" do
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) }
before do
@ -132,6 +134,13 @@ describe Instructeurs::ProceduresController, type: :controller do
state: Dossier.states.fetch(:sans_suite),
processed_at: 8.months.ago,
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
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_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)['suivis']).to eq(0 + 1) }
it { expect(assigns(:all_dossiers_counts)['traités']).to eq(2 + 1) }
it { expect(assigns(:all_dossiers_counts)['dossiers']).to eq(5 + 3) }
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 + 2 + 1) }
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(: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
context 'with not draft state on discarded procedure' do