Dynamic display for champs on description and recapitulative page
This commit is contained in:
parent
3a4beadbd1
commit
591f52f654
9 changed files with 81 additions and 33 deletions
|
@ -30,13 +30,14 @@ class Backoffice::DossiersController < ApplicationController
|
|||
@entreprise = @dossier.entreprise.decorate
|
||||
@etablissement = @dossier.etablissement
|
||||
@pieces_justificatives = @dossier.pieces_justificatives
|
||||
@commentaires = @dossier.commentaires.order(created_at: :desc)
|
||||
@commentaires = @dossier.ordered_commentaires
|
||||
@commentaires = @commentaires.all.decorate
|
||||
@commentaire_email = current_gestionnaire.email
|
||||
|
||||
@procedure = @dossier.procedure
|
||||
|
||||
@dossier = @dossier.decorate
|
||||
@champs = @dossier.ordered_champs
|
||||
rescue ActiveRecord::RecordNotFound
|
||||
flash.alert = t('errors.messages.dossier_not_found')
|
||||
redirect_to url_for(controller: '/backoffice')
|
||||
|
|
|
@ -4,7 +4,7 @@ class Users::DescriptionController < UsersController
|
|||
@dossier = @dossier.decorate
|
||||
|
||||
@procedure = @dossier.procedure
|
||||
@champs = @dossier.champs.joins(', types_de_champs').where('champs.type_de_champs_id = types_de_champs.id').order('order_place')
|
||||
@champs = @dossier.ordered_champs
|
||||
|
||||
rescue ActiveRecord::RecordNotFound
|
||||
flash.alert = t('errors.messages.dossier_not_found')
|
||||
|
|
|
@ -3,14 +3,12 @@ class Users::RecapitulatifController < UsersController
|
|||
@dossier = current_user_dossier
|
||||
@dossier = @dossier.decorate
|
||||
@procedure = @dossier.procedure
|
||||
@champs = @dossier.ordered_champs
|
||||
|
||||
# mettre dans le modele
|
||||
@commentaires = @dossier.commentaires.order(created_at: :desc)
|
||||
|
||||
@commentaires = @dossier.ordered_commentaires
|
||||
@commentaires = @commentaires.all.decorate
|
||||
|
||||
#TODO load user email
|
||||
@commentaire_email = 'user@email'
|
||||
@commentaire_email = current_user.email
|
||||
rescue ActiveRecord::RecordNotFound
|
||||
flash.alert = t('errors.messages.dossier_not_found')
|
||||
redirect_to url_for(root_path)
|
||||
|
|
|
@ -47,6 +47,14 @@ class Dossier < ActiveRecord::Base
|
|||
end
|
||||
end
|
||||
|
||||
def ordered_champs
|
||||
champs.joins(', types_de_champs').where('champs.type_de_champs_id = types_de_champs.id').order('order_place')
|
||||
end
|
||||
|
||||
def ordered_commentaires
|
||||
commentaires.order(created_at: :desc)
|
||||
end
|
||||
|
||||
def sous_domaine
|
||||
if Rails.env.production?
|
||||
'tps'
|
||||
|
|
|
@ -6,7 +6,6 @@
|
|||
%h3.text-info
|
||||
= @dossier.nom_projet
|
||||
|
||||
%br
|
||||
.description
|
||||
- begin
|
||||
- @dossier.description.split(/(?:\n\r?|\r\n?')/).each do |line|
|
||||
|
@ -14,10 +13,21 @@
|
|||
%br
|
||||
- rescue
|
||||
=''
|
||||
|
||||
.col-lg-6.col-md-6
|
||||
=render partial: '/dossiers/pieces_justificatives'
|
||||
|
||||
%br
|
||||
-unless @champs.nil?
|
||||
.row
|
||||
.col-lg-12.col-md-12
|
||||
%table.table#liste_champs
|
||||
-@champs.each do |champ|
|
||||
%tr
|
||||
%th.col-md-3.col-lg-3
|
||||
=champ.libelle
|
||||
%td
|
||||
=champ.value
|
||||
|
||||
%div.row{style: 'text-align:right'}
|
||||
-unless gestionnaire_signed_in?
|
||||
-if !@dossier.validated? && !@dossier.submitted? && !@dossier.closed?
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
%h2 Description de votre projet
|
||||
%br
|
||||
|
||||
-#TODO use form_for
|
||||
= form_tag(url_for({controller: :description, action: :create, dossier_id: @dossier.id}), class: 'form-inline', method: 'POST', multipart: true) do
|
||||
%div
|
||||
.row
|
||||
|
@ -14,26 +15,27 @@
|
|||
%h4 Description de votre projet *
|
||||
= text_area_tag :description, @dossier.description, rows: '6', placeholder: 'Description du projet', class: 'form-control'
|
||||
|
||||
#liste_champs.row
|
||||
#liste_champs
|
||||
-unless @champs.nil?
|
||||
-@champs.each do |champ|
|
||||
%div{class: "type_champs-#{champ.type_champs}"}
|
||||
%h4
|
||||
= champ.libelle
|
||||
.row
|
||||
%div{class: "type_champs-#{champ.type_champs}"}
|
||||
%h4
|
||||
= champ.libelle
|
||||
|
||||
-if champ.type_champs == 'textarea'
|
||||
%textarea.form-control{name:"champs['#{champ.id}']",
|
||||
placeholder: champ.libelle,
|
||||
id: "champs_#{champ.id}"}
|
||||
=champ.value
|
||||
-else
|
||||
%input.form-control{name:"champs['#{champ.id}']",
|
||||
value: champ.value,
|
||||
placeholder: champ.libelle,
|
||||
id: "champs_#{champ.id}",
|
||||
type:"#{champ.type_champs}",
|
||||
'data-provide' => ('datepicker' if champ.type_champs == 'datetime'),
|
||||
'data-date-format' => ('dd/mm/yyyy' if champ.type_champs == 'datetime')}
|
||||
-if champ.type_champs == 'textarea'
|
||||
%textarea.form-control{name:"champs['#{champ.id}']",
|
||||
placeholder: champ.libelle,
|
||||
id: "champs_#{champ.id}"}
|
||||
=champ.value
|
||||
-else
|
||||
%input.form-control{name:"champs['#{champ.id}']",
|
||||
placeholder: champ.libelle,
|
||||
id: "champs_#{champ.id}",
|
||||
value: champ.value,
|
||||
type:"#{champ.type_champs}",
|
||||
'data-provide' => ('datepicker' if champ.type_champs == 'datetime'),
|
||||
'data-date-format' => ('dd/mm/yyyy' if champ.type_champs == 'datetime')}
|
||||
|
||||
%br
|
||||
%h3 Documents administratifs
|
||||
|
|
|
@ -3,9 +3,9 @@
|
|||
%h2
|
||||
='Récapitulatif'
|
||||
|
||||
%div.col-md-8.col-lg-8
|
||||
%div.col-md-7.col-lg-7
|
||||
|
||||
%div.col-md-2.col-lg-2
|
||||
%div.col-md-3.col-lg-3
|
||||
%h2#dossier_id{:class => 'text-info', :style => 'text-align:right; margin-bottom:15px'}
|
||||
= "Dossier n°#{@dossier.id}"
|
||||
|
||||
|
|
|
@ -1,14 +1,22 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe 'dossiers/_infos_dossier.html.haml', type: :view do
|
||||
let(:dossier) { create(:dossier, :with_entreprise, :with_procedure) }
|
||||
|
||||
let(:maj_infos) { 'Mettre à jour les informations' }
|
||||
let(:proposer) { 'Soumettre mon dossier' }
|
||||
let(:dossier) { create(:dossier, :with_entreprise, :with_procedure, :with_user) }
|
||||
|
||||
before do
|
||||
assign(:dossier, dossier.decorate)
|
||||
assign(:commentaires, dossier.commentaires)
|
||||
assign(:champs, dossier.ordered_champs)
|
||||
assign(:procedure, dossier.procedure)
|
||||
render
|
||||
end
|
||||
|
||||
describe 'every champs are present on the page' do
|
||||
let(:champs) { dossier.champs }
|
||||
|
||||
it { expect(rendered).to have_content(champs.first.libelle) }
|
||||
it { expect(rendered).to have_content(champs.first.value) }
|
||||
|
||||
it { expect(rendered).to have_content(champs.last.libelle) }
|
||||
it { expect(rendered).to have_content(champs.last.value) }
|
||||
end
|
||||
end
|
||||
|
|
|
@ -8,6 +8,7 @@ describe 'users/description/show.html.haml', type: :view do
|
|||
before do
|
||||
assign(:dossier, dossier)
|
||||
assign(:procedure, dossier.procedure)
|
||||
assign(:champs, dossier.ordered_champs)
|
||||
end
|
||||
|
||||
context 'tous les attributs sont présents sur la page' do
|
||||
|
@ -85,6 +86,26 @@ describe 'users/description/show.html.haml', type: :view do
|
|||
end
|
||||
end
|
||||
|
||||
context 'Champs' do
|
||||
let(:champs) { dossier.champs }
|
||||
|
||||
before do
|
||||
render
|
||||
end
|
||||
|
||||
describe 'first champs' do
|
||||
subject { dossier.champs.first }
|
||||
it { expect(rendered).to have_css(".type_champs-#{subject.type_champs}") }
|
||||
it { expect(rendered).to have_css("#champs_#{subject.id}") }
|
||||
end
|
||||
|
||||
describe 'last champs' do
|
||||
subject { dossier.champs.last }
|
||||
it { expect(rendered).to have_css(".type_champs-#{subject.type_champs}") }
|
||||
it { expect(rendered).to have_css("#champs_#{subject.id}") }
|
||||
end
|
||||
end
|
||||
|
||||
context 'Pièces justificatives' do
|
||||
let(:all_type_pj_procedure_id) { dossier.procedure.type_de_piece_justificative_ids }
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue