NewDesign: procedure show only header
This commit is contained in:
parent
0528b83fcc
commit
b48af51ee9
7 changed files with 231 additions and 13 deletions
75
app/assets/stylesheets/new_design/procedures_show.scss
Normal file
75
app/assets/stylesheets/new_design/procedures_show.scss
Normal file
|
@ -0,0 +1,75 @@
|
|||
@import "colors";
|
||||
@import "common";
|
||||
@import "constants";
|
||||
|
||||
#procedure-show {
|
||||
.header {
|
||||
background-color: $light-grey;
|
||||
padding-top: $default-padding;
|
||||
|
||||
.container {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.procedure-logo {
|
||||
margin-right: $default-padding;
|
||||
}
|
||||
|
||||
h1 {
|
||||
color: $black;
|
||||
font-size: 22px;
|
||||
margin-bottom: 2 * $default-padding;
|
||||
}
|
||||
|
||||
.dossiers-categories {
|
||||
li {
|
||||
display: inline-block;
|
||||
height: 56px;
|
||||
width: 130px;
|
||||
line-height: 17px;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
font-size: 14px;
|
||||
|
||||
a {
|
||||
color: $black;
|
||||
}
|
||||
|
||||
&::before,
|
||||
&:last-child::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
height: 36px;
|
||||
width: 1px;
|
||||
background-color: $border-grey;
|
||||
margin-right: $default-padding;
|
||||
}
|
||||
|
||||
&::before {
|
||||
left: 0px;
|
||||
}
|
||||
|
||||
&:last-child::after {
|
||||
right: 0px;
|
||||
top: 0px;
|
||||
margin-right: 0px;
|
||||
}
|
||||
|
||||
&.active {
|
||||
border-bottom: 2px solid $blue;
|
||||
|
||||
a {
|
||||
color: $blue;
|
||||
}
|
||||
}
|
||||
|
||||
.dossiers-count {
|
||||
position: relative;
|
||||
display: block;
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -15,6 +15,26 @@ module NewGestionnaire
|
|||
@followed_dossiers_count_per_procedure = current_gestionnaire.followed_dossiers.where(procedure: @procedures).group(:procedure_id).count
|
||||
end
|
||||
|
||||
def show
|
||||
@procedure = procedure
|
||||
|
||||
@a_suivre_dossiers = procedure
|
||||
.dossiers
|
||||
.without_followers
|
||||
.en_cours
|
||||
|
||||
@followed_dossiers = current_gestionnaire
|
||||
.followed_dossiers
|
||||
.where(procedure: @procedure)
|
||||
.en_cours
|
||||
|
||||
@termines_dossiers = procedure.dossiers.termine
|
||||
|
||||
@all_state_dossiers = procedure.dossiers.all_state
|
||||
|
||||
@archived_dossiers = procedure.dossiers.archived
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def procedure
|
||||
|
|
|
@ -17,6 +17,7 @@ class Dossier < ActiveRecord::Base
|
|||
WAITING_FOR_USER = %w(replied)
|
||||
EN_CONSTRUCTION = %w(initiated updated replied)
|
||||
EN_INSTRUCTION = %w(received)
|
||||
EN_CONSTRUCTION_OU_INSTRUCTION = EN_CONSTRUCTION + EN_INSTRUCTION
|
||||
A_INSTRUIRE = %w(received)
|
||||
TERMINE = %w(closed refused without_continuation)
|
||||
|
||||
|
@ -43,16 +44,17 @@ class Dossier < ActiveRecord::Base
|
|||
belongs_to :user
|
||||
|
||||
default_scope { where(hidden_at: nil) }
|
||||
scope :state_brouillon, -> { where(state: BROUILLON) }
|
||||
scope :state_not_brouillon, -> { where.not(state: BROUILLON) }
|
||||
scope :state_nouveaux, -> { where(state: NOUVEAUX) }
|
||||
scope :state_ouvert, -> { where(state: OUVERT) }
|
||||
scope :state_waiting_for_gestionnaire, -> { where(state: WAITING_FOR_GESTIONNAIRE) }
|
||||
scope :state_waiting_for_user, -> { where(state: WAITING_FOR_USER) }
|
||||
scope :state_en_construction, -> { where(state: EN_CONSTRUCTION) }
|
||||
scope :state_en_instruction, -> { where(state: EN_INSTRUCTION) }
|
||||
scope :state_a_instruire, -> { where(state: A_INSTRUIRE) }
|
||||
scope :state_termine, -> { where(state: TERMINE) }
|
||||
scope :state_brouillon, -> { where(state: BROUILLON) }
|
||||
scope :state_not_brouillon, -> { where.not(state: BROUILLON) }
|
||||
scope :state_nouveaux, -> { where(state: NOUVEAUX) }
|
||||
scope :state_ouvert, -> { where(state: OUVERT) }
|
||||
scope :state_waiting_for_gestionnaire, -> { where(state: WAITING_FOR_GESTIONNAIRE) }
|
||||
scope :state_waiting_for_user, -> { where(state: WAITING_FOR_USER) }
|
||||
scope :state_en_construction, -> { where(state: EN_CONSTRUCTION) }
|
||||
scope :state_en_instruction, -> { where(state: EN_INSTRUCTION) }
|
||||
scope :state_en_construction_ou_instruction, -> { where(state: EN_CONSTRUCTION_OU_INSTRUCTION) }
|
||||
scope :state_a_instruire, -> { where(state: A_INSTRUIRE) }
|
||||
scope :state_termine, -> { where(state: TERMINE) }
|
||||
|
||||
scope :archived, -> { where(archived: true) }
|
||||
scope :not_archived, -> { where(archived: false) }
|
||||
|
@ -67,6 +69,8 @@ class Dossier < ActiveRecord::Base
|
|||
scope :a_instruire, -> { not_archived.state_a_instruire.order_by_updated_at(:asc) }
|
||||
scope :termine, -> { not_archived.state_termine.order_by_updated_at(:asc) }
|
||||
scope :downloadable, -> { state_not_brouillon.order_by_updated_at(:asc) }
|
||||
scope :en_cours, -> { not_archived.state_en_construction_ou_instruction.order_by_updated_at(:asc) }
|
||||
scope :without_followers, -> { includes(:follows).where(follows: { id: nil }) }
|
||||
|
||||
accepts_nested_attributes_for :individual
|
||||
|
||||
|
|
33
app/views/new_gestionnaire/procedures/show.html.haml
Normal file
33
app/views/new_gestionnaire/procedures/show.html.haml
Normal file
|
@ -0,0 +1,33 @@
|
|||
#procedure-show
|
||||
.header
|
||||
.container
|
||||
- if @procedure.logo.present?
|
||||
= image_tag @procedure.logo, height: 40, class: 'procedure-logo'
|
||||
|
||||
.right
|
||||
%h1= @procedure.libelle
|
||||
%ul.dossiers-categories
|
||||
%li{ class: (@statut == 'a-suivre') ? 'active' : nil }>
|
||||
= link_to(procedure_path(@procedure, statut: 'a-suivre')) do
|
||||
%span.dossiers-count= @a_suivre_dossiers.count
|
||||
à suivre
|
||||
|
||||
%li{ class: (@statut == 'suivis') ? 'active' : nil }>
|
||||
= link_to(procedure_path(@procedure, statut: 'suivis')) do
|
||||
%span.dossiers-count= @followed_dossiers.count
|
||||
= t('pluralize.followed', count: @followed_dossiers.count)
|
||||
|
||||
%li{ class: (@statut == 'traites') ? 'active' : nil }>
|
||||
= link_to(procedure_path(@procedure, statut: 'traites')) do
|
||||
%span.dossiers-count= @termines_dossiers.count
|
||||
= t('pluralize.processed', count: @termines_dossiers.count)
|
||||
|
||||
%li{ class: (@statut == 'tous') ? 'active' : nil }>
|
||||
= link_to(procedure_path(@procedure, statut: 'tous')) do
|
||||
%span.dossiers-count= @all_state_dossiers.count
|
||||
tous les dossiers
|
||||
|
||||
%li{ class: (@statut == 'archives') ? 'active' : nil }>
|
||||
= link_to(procedure_path(@procedure, statut: 'archives')) do
|
||||
%span.dossiers-count= @archived_dossiers.count
|
||||
= t('pluralize.archived', count: @archived_dossiers.count)
|
|
@ -285,3 +285,20 @@ fr:
|
|||
x_seconds:
|
||||
one: 1 seconde
|
||||
other: "%{count} secondes"
|
||||
pluralize:
|
||||
processed:
|
||||
zero: traité
|
||||
one: traité
|
||||
other: traités
|
||||
new:
|
||||
zero: nouveau
|
||||
one: nouveau
|
||||
other: nouveaux
|
||||
followed:
|
||||
zero: suivi
|
||||
one: suivi
|
||||
other: suivis
|
||||
archived:
|
||||
zero: archivé
|
||||
one: archivé
|
||||
other: archivés
|
||||
|
|
|
@ -238,9 +238,11 @@ Rails.application.routes.draw do
|
|||
end
|
||||
|
||||
scope module: 'new_gestionnaire' do
|
||||
resources :procedures, only: [:index] do
|
||||
resources :dossiers, only: [] do
|
||||
get 'attestation'
|
||||
resources :procedures, only: [:index, :show], param: :procedure_id do
|
||||
member do
|
||||
resources :dossiers, only: [] do
|
||||
get 'attestation'
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -118,4 +118,71 @@ describe NewGestionnaire::ProceduresController, type: :controller do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "#show" do
|
||||
let(:gestionnaire) { create(:gestionnaire) }
|
||||
let!(:procedure) { create(:procedure, gestionnaires: [gestionnaire]) }
|
||||
|
||||
context "when logged in" do
|
||||
before do
|
||||
sign_in(gestionnaire)
|
||||
get :show, params: { procedure_id: procedure.id }
|
||||
end
|
||||
|
||||
it { expect(response).to have_http_status(:ok) }
|
||||
it { expect(assigns(:procedure)).to eq(procedure) }
|
||||
|
||||
context 'with a new draft dossier' do
|
||||
let!(:draft_dossier) { create(:dossier, procedure: procedure, state: 'draft') }
|
||||
|
||||
it { expect(assigns(:a_suivre_dossiers)).to be_empty }
|
||||
it { expect(assigns(:followed_dossiers)).to be_empty }
|
||||
it { expect(assigns(:termines_dossiers)).to be_empty }
|
||||
it { expect(assigns(:all_state_dossiers)).to be_empty }
|
||||
it { expect(assigns(:archived_dossiers)).to be_empty }
|
||||
end
|
||||
|
||||
context 'with a new dossier without follower' do
|
||||
let!(:new_unfollow_dossier) { create(:dossier, procedure: procedure, state: 'received') }
|
||||
|
||||
it { expect(assigns(:a_suivre_dossiers)).to match([new_unfollow_dossier]) }
|
||||
it { expect(assigns(:followed_dossiers)).to be_empty }
|
||||
it { expect(assigns(:termines_dossiers)).to be_empty }
|
||||
it { expect(assigns(:all_state_dossiers)).to match([new_unfollow_dossier]) }
|
||||
it { expect(assigns(:archived_dossiers)).to be_empty }
|
||||
end
|
||||
|
||||
context 'with a new dossier with a follower' do
|
||||
let!(:new_followed_dossier) { create(:dossier, procedure: procedure, state: 'received') }
|
||||
|
||||
before { gestionnaire.followed_dossiers << new_followed_dossier }
|
||||
|
||||
it { expect(assigns(:a_suivre_dossiers)).to be_empty }
|
||||
it { expect(assigns(:followed_dossiers)).to match([new_followed_dossier]) }
|
||||
it { expect(assigns(:termines_dossiers)).to be_empty }
|
||||
it { expect(assigns(:all_state_dossiers)).to match([new_followed_dossier]) }
|
||||
it { expect(assigns(:archived_dossiers)).to be_empty }
|
||||
end
|
||||
|
||||
context 'with a termine dossier with a follower' do
|
||||
let!(:termine_dossier) { create(:dossier, procedure: procedure, state: 'closed') }
|
||||
|
||||
it { expect(assigns(:a_suivre_dossiers)).to be_empty }
|
||||
it { expect(assigns(:followed_dossiers)).to be_empty }
|
||||
it { expect(assigns(:termines_dossiers)).to match([termine_dossier]) }
|
||||
it { expect(assigns(:all_state_dossiers)).to match([termine_dossier]) }
|
||||
it { expect(assigns(:archived_dossiers)).to be_empty }
|
||||
end
|
||||
|
||||
context 'with an archived dossier' do
|
||||
let!(:archived_dossier) { create(:dossier, procedure: procedure, state: 'received', archived: true) }
|
||||
|
||||
it { expect(assigns(:a_suivre_dossiers)).to be_empty }
|
||||
it { expect(assigns(:followed_dossiers)).to be_empty }
|
||||
it { expect(assigns(:termines_dossiers)).to be_empty }
|
||||
it { expect(assigns(:all_state_dossiers)).to be_empty }
|
||||
it { expect(assigns(:archived_dossiers)).to match([archived_dossier]) }
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue