Add pagination for gestionnaire dossier

Fix test for user pagination
This commit is contained in:
Xavier J 2015-11-26 15:47:31 +01:00
parent 2eb01bdf42
commit 37ea69ec51
13 changed files with 73 additions and 43 deletions

View file

@ -4,25 +4,30 @@
border-top: none
}
}
}
#onglets {
ul {
li {
margin-top: 11px;
li, li.active {
a {
margin-top: 12px;
height: 45px;
h5 {
margin-top: 4px;
margin-top: 5px;
}
}
}
#search {
margin-top: 0;
a {
height: auto;
margin-top: 0px;
height: 57px;
}
}
#search:not(.active) {
a:hover {
height: 56px;
background-color: transparent;
border: none;
padding: 11px 16px;

View file

@ -6,25 +6,33 @@ class Backoffice::DossiersController < ApplicationController
end
def a_traiter
@dossiers_a_traiter = Dossier.a_traiter(current_gestionnaire).decorate
@dossiers_a_traiter = Dossier.a_traiter(current_gestionnaire)
@dossiers_a_traiter = @dossiers_a_traiter.paginate(:page => params[:page], :per_page => 12).decorate
total_dossiers_per_state
end
def en_attente
@dossiers_en_attente = Dossier.en_attente(current_gestionnaire).decorate
@dossiers_en_attente = Dossier.en_attente(current_gestionnaire)
@dossiers_en_attente = @dossiers_en_attente.paginate(:page => params[:page], :per_page => 12).decorate
total_dossiers_per_state
end
def termine
@dossiers_termine = Dossier.termine(current_gestionnaire).decorate
@dossiers_termine = Dossier.termine(current_gestionnaire)
@dossiers_termine = @dossiers_termine.paginate(:page => params[:page], :per_page => 12).decorate
total_dossiers_per_state
end
def search
@search_terms = params[:search_terms]
@search_terms = params[:q]
@dossiers_search, @dossier = Dossier.search(current_gestionnaire, @search_terms)
@dossiers_search = @dossiers_search.decorate unless @dossiers_search.empty?
unless @dossiers_search.empty?
@dossiers_search = @dossiers_search.paginate(:page => params[:page], :per_page => 12).decorate
end
@dossier = @dossier.decorate unless @dossier.nil?
total_dossiers_per_state

View file

@ -1,25 +1,26 @@
%h1 Gestion des dossiers
%br
%ul.nav.nav-tabs
%li{class: "#{'active' unless @dossiers_a_traiter.nil? }"}
%a{:href => "#{url_for :backoffice_dossiers_a_traiter}"}
%h5.text-danger
= "À traiter (#{@dossiers_a_traiter_total})"
%li{class: "#{'active' unless @dossiers_en_attente.nil? }"}
%a{:href => "#{url_for :backoffice_dossiers_en_attente}"}
%h5.text-info
="En attente (#{@dossiers_en_attente_total})"
%li{class: "#{'active' unless @dossiers_termine.nil? }"}
%a{:href => "#{url_for :backoffice_dossiers_termine}"}
%h5.text-success
= "Terminé (#{@dossiers_termine_total})"
%li#search{class: "#{'active' unless @dossiers_search.nil?}", style:'float:right'}
%a
= form_tag(backoffice_dossiers_search_url, method: :post) do
.input-group{style:'width: 300px'}
= text_field_tag('search_terms', "#{@search_terms unless @search_terms.nil? }", id: 'search_terms', placeholder: "Rechercher un dossier ...", class:'form-control')
%span.input-group-btn
= button_tag('', id:'search_button', class:'btn btn-default') do
%i.fa.fa-search
#onglets
%ul.nav.nav-tabs
%li{class: "#{'active' unless @dossiers_a_traiter.nil? }"}
%a{:href => "#{url_for :backoffice_dossiers_a_traiter}"}
%h5.text-danger
= "À traiter (#{@dossiers_a_traiter_total})"
%li{class: "#{'active' unless @dossiers_en_attente.nil? }"}
%a{:href => "#{url_for :backoffice_dossiers_en_attente}"}
%h5.text-info
="En attente (#{@dossiers_en_attente_total})"
%li{class: "#{'active' unless @dossiers_termine.nil? }"}
%a{:href => "#{url_for :backoffice_dossiers_termine}"}
%h5.text-success
= "Terminé (#{@dossiers_termine_total})"
%li#search{class: "#{'active' unless @dossiers_search.nil?}", style:'float:right'}
%a
= form_tag(backoffice_dossiers_search_url, method: :get) do
.input-group{style:'width: 300px'}
= text_field_tag('q', "#{@search_terms unless @search_terms.nil? }", id: 'q', placeholder: "Rechercher un dossier ...", class:'form-control')
%span.input-group-btn
%button.btn.btn-default{ id:'search_button' }
%i.fa.fa-search
%br

View file

@ -15,3 +15,6 @@
= link_to(dossier.nom_projet, "/backoffice/dossiers/#{dossier.id}")
%td= dossier.state_fr
%td= dossier.last_update
.pagination
= will_paginate @dossiers_a_traiter, renderer: BootstrapPagination::Rails

View file

@ -15,3 +15,6 @@
= link_to(dossier.nom_projet, "/backoffice/dossiers/#{dossier.id}")
%td= dossier.state_fr
%td= dossier.last_update
.pagination
= will_paginate @dossiers_en_attente, renderer: BootstrapPagination::Rails

View file

@ -44,4 +44,7 @@
%td= dossier.entreprise.raison_sociale
%td= dossier.user.email
%td= dossier.etablissement.siret
%td{class: dossier.state_color_class}= dossier.state_fr
%td{class: dossier.state_color_class}= dossier.state_fr
.pagination
= will_paginate @dossiers_search, renderer: BootstrapPagination::Rails

View file

@ -15,3 +15,6 @@
= link_to(dossier.nom_projet, "/backoffice/dossiers/#{dossier.id}")
%td= dossier.state_fr
%td= dossier.last_update
.pagination
= will_paginate @dossiers_termine, renderer: BootstrapPagination::Rails

View file

@ -64,7 +64,7 @@ Rails.application.routes.draw do
get 'dossiers/a_traiter' => 'dossiers#a_traiter'
get 'dossiers/en_attente' => 'dossiers#en_attente'
get 'dossiers/termine' => 'dossiers#termine'
post 'dossiers/search' => 'dossiers#search'
get 'dossiers/search' => 'dossiers#search'
resources :dossiers do
post 'valid' => 'dossiers#valid'

View file

@ -14,7 +14,7 @@ feature 'search file on gestionnaire backoffice' do
before do
visit backoffice_dossiers_a_traiter_url
page.find_by_id(:search_terms).set terms
page.find_by_id(:q).set terms
page.find_by_id(:search_button).click
end
@ -28,7 +28,7 @@ feature 'search file on gestionnaire backoffice' do
let(:terms) { 'test' }
it 'terms stay in input after search' do
expect(page.find_by_id('search_terms').value).to eq(terms)
expect(page.find_by_id('q').value).to eq(terms)
end
context 'when terms input does not return result' do

View file

@ -8,7 +8,7 @@ describe 'backoffice/dossiers/a_traiter.html.haml', type: :view do
let!(:decorate_dossier) { create(:dossier, :with_user, state: 'initiated', procedure: procedure).decorate }
before do
assign(:dossiers_a_traiter, Dossier.a_traiter(gestionnaire).decorate)
assign(:dossiers_a_traiter, Dossier.a_traiter(gestionnaire).paginate(:page => 1, :per_page => 12).decorate)
render
end

View file

@ -8,7 +8,7 @@ describe 'backoffice/dossiers/en_attente.html.haml', type: :view do
let!(:decorate_dossier) { create(:dossier, :with_user, procedure: procedure, state: 'replied').decorate }
before do
assign(:dossiers_en_attente, Dossier.en_attente(gestionnaire).decorate)
assign(:dossiers_en_attente, Dossier.en_attente(gestionnaire).paginate(:page => 1, :per_page => 12).decorate)
render
end

View file

@ -8,7 +8,7 @@ describe 'backoffice/dossiers/termine.html.haml', type: :view do
let!(:decorate_dossier) { create(:dossier, :with_user, procedure: procedure, state: 'closed').decorate }
before do
assign(:dossiers_termine, Dossier.termine(gestionnaire).decorate)
assign(:dossiers_termine, Dossier.termine(gestionnaire).paginate(:page => 1, :per_page => 12).decorate)
render
end

View file

@ -3,14 +3,18 @@ require 'spec_helper'
describe 'users/dossiers/index.html.haml', type: :view do
describe 'list dossiers' do
let(:dossier1) { create(:dossier, :with_user).decorate }
let(:dossier2) { create(:dossier, :with_user).decorate }
let(:user) { create(:user) }
let!(:dossier1) { create(:dossier, user: user, state: 'initiated') }
let!(:dossier2) { create(:dossier, user: user, state: 'initiated') }
let(:dossiers) { user.dossiers.where("state NOT IN ('draft')").order(updated_at: 'DESC') }
before do
assign(:dossiers, [dossier1, dossier2])
assign(:dossiers, dossiers.paginate(:page => params[:page], :per_page => 12).decorate)
render
end
subject { rendered }
it { expect(subject).to have_content(dossier1.nom_projet) }
end
end