commit
7f789b1487
12 changed files with 82 additions and 48 deletions
|
@ -23,13 +23,13 @@ function destroy_action(){
|
||||||
}
|
}
|
||||||
|
|
||||||
function on_change_type_de_champ_select (){
|
function on_change_type_de_champ_select (){
|
||||||
|
|
||||||
$("select.form-control.type_champ").on('change', function(e){
|
$("select.form-control.type_champ").on('change', function(e){
|
||||||
|
|
||||||
parent = $(this).parent().parent();
|
parent = $(this).parent().parent();
|
||||||
|
|
||||||
parent.removeClass('header_section');
|
parent.removeClass('header_section');
|
||||||
parent.children(".drop_down_list").removeClass('show_inline');
|
parent.children(".drop_down_list").removeClass('show_inline');
|
||||||
|
$('.mandatory', parent).show();
|
||||||
|
|
||||||
switch(this.value){
|
switch(this.value){
|
||||||
case 'header_section':
|
case 'header_section':
|
||||||
|
@ -38,7 +38,9 @@ function on_change_type_de_champ_select (){
|
||||||
case 'drop_down_list':
|
case 'drop_down_list':
|
||||||
parent.children(".drop_down_list").addClass('show_inline');
|
parent.children(".drop_down_list").addClass('show_inline');
|
||||||
break;
|
break;
|
||||||
|
case 'explication':
|
||||||
|
$('.mandatory', parent).hide();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,6 +23,10 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
#liste_champ{
|
#liste_champ{
|
||||||
|
.form-inline {
|
||||||
|
margin-bottom: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
.show_inline {
|
.show_inline {
|
||||||
display: inline-block !important;
|
display: inline-block !important;
|
||||||
}
|
}
|
||||||
|
@ -30,4 +34,16 @@
|
||||||
.form-group.drop_down_list{
|
.form-group.drop_down_list{
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
.form-group {
|
||||||
|
vertical-align: top;
|
||||||
|
margin-right: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.description {
|
||||||
|
padding: 0;
|
||||||
|
textarea {
|
||||||
|
padding: 6px 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -3,11 +3,19 @@ class TypeDeChampDecorator < Draper::Decorator
|
||||||
delegate_all
|
delegate_all
|
||||||
|
|
||||||
def button_up params
|
def button_up params
|
||||||
h.link_to '', params[:url], class: up_classes, id: "btn_up_#{params[:index]}", remote: true, method: :post if display_up_button?(params[:index], params[:private])
|
h.link_to '', params[:url], class: up_classes,
|
||||||
|
id: "btn_up_#{params[:index]}",
|
||||||
|
remote: true,
|
||||||
|
method: :post,
|
||||||
|
style: display_up_button?(params[:index], params[:private]) ? '' : 'visibility: hidden;'
|
||||||
end
|
end
|
||||||
|
|
||||||
def button_down params
|
def button_down params
|
||||||
h.link_to '', params[:url], class: down_classes, id: "btn_down_#{params[:index]}", remote: true, method: :post if display_down_button?(params[:index], params[:private])
|
h.link_to '', params[:url], class: down_classes,
|
||||||
|
id: "btn_down_#{params[:index]}",
|
||||||
|
remote: true,
|
||||||
|
method: :post,
|
||||||
|
style: display_down_button?(params[:index], params[:private]) ? '' : 'visibility: hidden;'
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
|
@ -16,7 +16,8 @@ class TypeDeChamp < ActiveRecord::Base
|
||||||
regions: 'regions',
|
regions: 'regions',
|
||||||
departements: 'departements',
|
departements: 'departements',
|
||||||
engagement: 'engagement',
|
engagement: 'engagement',
|
||||||
header_section: 'header_section'
|
header_section: 'header_section',
|
||||||
|
explication: 'explication'
|
||||||
}
|
}
|
||||||
|
|
||||||
belongs_to :procedure
|
belongs_to :procedure
|
||||||
|
@ -29,7 +30,7 @@ class TypeDeChamp < ActiveRecord::Base
|
||||||
validates :libelle, presence: true, allow_blank: false, allow_nil: false
|
validates :libelle, presence: true, allow_blank: false, allow_nil: false
|
||||||
validates :type_champ, presence: true, allow_blank: false, allow_nil: false
|
validates :type_champ, presence: true, allow_blank: false, allow_nil: false
|
||||||
|
|
||||||
before_validation :change_header_section_mandatory
|
before_validation :check_mandatory
|
||||||
|
|
||||||
def self.type_de_champs_list_fr
|
def self.type_de_champs_list_fr
|
||||||
type_champs.map { |champ| [I18n.t("activerecord.attributes.type_de_champ.type_champs.#{champ.last}"), champ.first] }
|
type_champs.map { |champ| [I18n.t("activerecord.attributes.type_de_champ.type_champs.#{champ.last}"), champ.first] }
|
||||||
|
@ -39,8 +40,8 @@ class TypeDeChamp < ActiveRecord::Base
|
||||||
!(type_champ == 'textarea' || type_champ == 'header_section')
|
!(type_champ == 'textarea' || type_champ == 'header_section')
|
||||||
end
|
end
|
||||||
|
|
||||||
def change_header_section_mandatory
|
def check_mandatory
|
||||||
self.mandatory = false if self.type_champ == 'header_section'
|
self.mandatory = false if %w(header_section explication).include?(self.type_champ)
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,27 +1,29 @@
|
||||||
= f.fields_for @types_de_champ_facade.fields_for_var, types_de_champ, remote: true do |ff|
|
= f.fields_for @types_de_champ_facade.fields_for_var, types_de_champ, remote: true do |ff|
|
||||||
.form-inline{class:"#{ff.object.object.type_champ == 'header_section' ? 'header_section' : ''}"}
|
.form-inline{ class: (ff.object.object.type_champ == 'header_section' ? 'header_section' : '') }
|
||||||
.form-group.libelle
|
.form-group.libelle
|
||||||
%h4 Libellé
|
%h4 Libellé
|
||||||
= ff.text_field :libelle, class: 'form-control libelle', placeholder: 'Libellé'
|
= ff.text_field :libelle, class: 'form-control libelle', placeholder: 'Libellé'
|
||||||
|
|
||||||
.form-group.type
|
.form-group.type
|
||||||
%h4 Type
|
%h4 Type
|
||||||
= ff.select :type_champ, TypeDeChamp.type_de_champs_list_fr, {}, {class: 'form-control type_champ'}
|
= ff.select :type_champ, TypeDeChamp.type_de_champs_list_fr, {}, { class: 'form-control type_champ' }
|
||||||
|
|
||||||
.form-group.description
|
.form-group.description
|
||||||
%h4 Description
|
%h4 Description
|
||||||
= ff.text_area :description, class: 'form-control description', placeholder: 'Description', rows: 2
|
= ff.text_area :description, class: 'form-control description', placeholder: 'Description', rows: 3
|
||||||
|
|
||||||
.form-group.drop_down_list{class:"#{ff.object.object.type_champ == 'drop_down_list' ? 'show_inline' : ''}",style:'margin-right: 5px'}
|
.form-group.drop_down_list{ class: (ff.object.object.type_champ == 'drop_down_list' ? 'show_inline' : ''), style: 'margin-right: 5px' }
|
||||||
%h4 Liste déroulante
|
%h4 Liste déroulante
|
||||||
= ff.fields_for :drop_down_list_attributes, ff.object.object.drop_down_list do |fff|
|
= ff.fields_for :drop_down_list_attributes, ff.object.object.drop_down_list do |fff|
|
||||||
= fff.text_area :value, class: 'form-control drop_down_list', placeholder: "Ecrire une valeur par ligne.\nEcrire --valeur-- pour un séparateur.", rows: 3, cols: 30
|
= fff.text_area :value, class: 'form-control drop_down_list', placeholder: "Ecrire une valeur par ligne.\nEcrire --valeur-- pour un séparateur.", rows: 3, cols: 30
|
||||||
= fff.hidden_field :id
|
= fff.hidden_field :id
|
||||||
- unless ff.object.object.class == TypeDeChampPrivate
|
|
||||||
.form-group.mandatory
|
|
||||||
%h4 Obligatoire ?
|
- hide_mandatory = (ff.object.object.class == TypeDeChampPrivate || ff.object.object.type_champ == 'explication')
|
||||||
.center
|
.form-group.mandatory{ style: hide_mandatory ? 'visibility: hidden;' : '' }
|
||||||
= ff.check_box :mandatory, placeholder: 'Obligatoire ?'
|
%h4 Obligatoire ?
|
||||||
|
.center
|
||||||
|
= ff.check_box :mandatory, placeholder: 'Obligatoire ?'
|
||||||
|
|
||||||
.form-group
|
.form-group
|
||||||
= ff.hidden_field :order_place, value: ff.index
|
= ff.hidden_field :order_place, value: ff.index
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
%div.row
|
%div.row
|
||||||
.col-lg-12.col-md-12.col-sm-12.col-xs-12
|
.col-xs-12
|
||||||
- if @facade.procedure.for_individual?
|
- if @facade.procedure.for_individual?
|
||||||
.row.title-row
|
.row.title-row
|
||||||
%div.col-xs-4.split-hr
|
%div.col-xs-4.split-hr
|
||||||
|
@ -7,24 +7,25 @@
|
||||||
%div.col-xs-4.split-hr
|
%div.col-xs-4.split-hr
|
||||||
.row
|
.row
|
||||||
%div.col-xs-6.depositaire-label Civilité
|
%div.col-xs-6.depositaire-label Civilité
|
||||||
%div.col-md-1.col-lg-1.col-sm-1.col-xs-1.comments-off= "-"
|
%div.col-xs-1.comments-off= "-"
|
||||||
%div.col-xs-5.depositaire-info= @facade.individual.gender
|
%div.col-xs-5.depositaire-info= @facade.individual.gender
|
||||||
.row
|
.row
|
||||||
%div.col-xs-6.depositaire-label Nom
|
%div.col-xs-6.depositaire-label Nom
|
||||||
%div.col-md-1.col-lg-1.col-sm-1.col-xs-1.comments-off= "-"
|
%div.col-xs-1.comments-off= "-"
|
||||||
%div.col-xs-5.depositaire-info= @facade.individual.nom
|
%div.col-xs-5.depositaire-info= @facade.individual.nom
|
||||||
.row
|
.row
|
||||||
%div.col-xs-6.depositaire-label Prénom
|
%div.col-xs-6.depositaire-label Prénom
|
||||||
%div.col-md-1.col-lg-1.col-sm-1.col-xs-1.comments-off= "-"
|
%div.col-xs-1.comments-off= "-"
|
||||||
%div.col-xs-5.despositaire-info= @facade.individual.prenom
|
%div.col-xs-5.despositaire-info= @facade.individual.prenom
|
||||||
.row
|
.row
|
||||||
%div.col-xs-6.depositaire-label Date de naissance
|
%div.col-xs-6.depositaire-label Date de naissance
|
||||||
%div.col-md-1.col-lg-1.col-sm-1.col-xs-1.comments-off= "-"
|
%div.col-xs-1.comments-off= "-"
|
||||||
%div.col-xs-5.depositaire-info= @facade.individual.birthdate
|
%div.col-xs-5.depositaire-info= @facade.individual.birthdate
|
||||||
.row.margin-top-20
|
.row.margin-top-20
|
||||||
|
|
||||||
- unless @facade.champs.nil?
|
- unless @facade.champs.nil?
|
||||||
- @facade.champs.each do |champ|
|
- @facade.champs.each do |champ|
|
||||||
|
- next if champ.type_champ == 'explication'
|
||||||
- if champ.type_champ == 'header_section'
|
- if champ.type_champ == 'header_section'
|
||||||
.row.title-row.margin-top-40
|
.row.title-row.margin-top-40
|
||||||
%div.col-xs-3.split-hr
|
%div.col-xs-3.split-hr
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
.default_data_block.default_visible
|
.default_data_block.default_visible
|
||||||
%div.row.show-block.infos
|
.row.show-block.infos
|
||||||
%div.header
|
.header
|
||||||
%div.col-lg-12.col-md-12.col-sm-12.col-xs-12.title
|
.col-xs-12.title
|
||||||
%div.carret-right
|
.carret-right
|
||||||
%div.carret-down
|
.carret-down
|
||||||
=libelle
|
=libelle
|
||||||
%div.body
|
.body
|
||||||
= render partial: 'users/description/champs/render_list_champs', locals: {champs: champs, order_place: order_place}
|
= render partial: 'users/description/champs/render_list_champs', locals: {champs: champs, order_place: order_place}
|
||||||
|
|
|
@ -41,6 +41,8 @@
|
||||||
- elsif champ.type_champ == 'departements'
|
- elsif champ.type_champ == 'departements'
|
||||||
= render partial: 'users/description/champs/departements', locals: { champ: champ }
|
= render partial: 'users/description/champs/departements', locals: { champ: champ }
|
||||||
|
|
||||||
|
- elsif champ.type_champ == 'explication'
|
||||||
|
|
||||||
- else
|
- else
|
||||||
%input.form-control{name:"champs['#{ champ.id }']",
|
%input.form-control{name:"champs['#{ champ.id }']",
|
||||||
placeholder: champ.libelle,
|
placeholder: champ.libelle,
|
||||||
|
|
|
@ -21,4 +21,5 @@ fr:
|
||||||
regions: 'Régions'
|
regions: 'Régions'
|
||||||
departements: 'Départements'
|
departements: 'Départements'
|
||||||
engagement: 'Engagement'
|
engagement: 'Engagement'
|
||||||
header_section: 'Titre de section'
|
header_section: 'Titre de section'
|
||||||
|
explication: 'Explication'
|
||||||
|
|
|
@ -16,8 +16,8 @@ describe TypeDeChampDecorator do
|
||||||
subject { type_de_champ_0.decorate }
|
subject { type_de_champ_0.decorate }
|
||||||
let(:button_up) { type_de_champ_.decorate }
|
let(:button_up) { type_de_champ_.decorate }
|
||||||
|
|
||||||
it 'returns a button up' do
|
it 'hide a button up' do
|
||||||
expect(subject.button_up(params)).to be(nil)
|
expect(subject.button_up(params)).to include('visibility: hidden')
|
||||||
end
|
end
|
||||||
it 'returns a button down' do
|
it 'returns a button down' do
|
||||||
expect(subject.button_down(params)).to match(/fa-chevron-down/)
|
expect(subject.button_down(params)).to match(/fa-chevron-down/)
|
||||||
|
@ -45,11 +45,12 @@ describe TypeDeChampDecorator do
|
||||||
it 'returns a button up' do
|
it 'returns a button up' do
|
||||||
expect(subject.button_up(params)).to match(/fa-chevron-up/)
|
expect(subject.button_up(params)).to match(/fa-chevron-up/)
|
||||||
end
|
end
|
||||||
it 'returns a button down' do
|
|
||||||
expect(subject.button_down(params)).to be(nil)
|
it 'hide a button down' do
|
||||||
|
expect(subject.button_down(params)).to include('visibility: hidden')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -33,8 +33,8 @@ describe 'admin/types_de_champ/show.html.haml', type: :view do
|
||||||
end
|
end
|
||||||
context 'when there is only one field in database' do
|
context 'when there is only one field in database' do
|
||||||
let!(:type_de_champ_0) { create(:type_de_champ_public, procedure: procedure, order_place: 0) }
|
let!(:type_de_champ_0) { create(:type_de_champ_public, procedure: procedure, order_place: 0) }
|
||||||
it { expect(subject).not_to have_css('#btn_down_0') }
|
it { expect(subject).to have_css('#btn_down_0[style*="visibility: hidden"]') }
|
||||||
it { expect(subject).not_to have_css('#btn_up_0') }
|
it { expect(subject).to have_css('#btn_up_0[style*="visibility: hidden"]') }
|
||||||
it { expect(subject).not_to have_css('#btn_up_1') }
|
it { expect(subject).not_to have_css('#btn_up_1') }
|
||||||
it { expect(subject).not_to have_css('#btn_down_1') }
|
it { expect(subject).not_to have_css('#btn_down_1') }
|
||||||
end
|
end
|
||||||
|
@ -42,9 +42,9 @@ describe 'admin/types_de_champ/show.html.haml', type: :view do
|
||||||
let!(:type_de_champ_0) { create(:type_de_champ_public, procedure: procedure, order_place: 0) }
|
let!(:type_de_champ_0) { create(:type_de_champ_public, procedure: procedure, order_place: 0) }
|
||||||
let!(:type_de_champ_1) { create(:type_de_champ_public, procedure: procedure, order_place: 1) }
|
let!(:type_de_champ_1) { create(:type_de_champ_public, procedure: procedure, order_place: 1) }
|
||||||
it { expect(subject).to have_css('#btn_down_0') }
|
it { expect(subject).to have_css('#btn_down_0') }
|
||||||
it { expect(subject).not_to have_css('#btn_up_0') }
|
it { expect(subject).to have_css('#btn_up_0[style*="visibility: hidden"]') }
|
||||||
it { expect(subject).to have_css('#btn_up_1') }
|
it { expect(subject).to have_css('#btn_up_1') }
|
||||||
it { expect(subject).not_to have_css('#btn_down_1') }
|
it { expect(subject).to have_css('#btn_down_1[style*="visibility: hidden"]') }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -30,7 +30,7 @@ describe 'admin/types_de_champ/show.html.haml', type: :view do
|
||||||
|
|
||||||
describe 'mandatory checkbox' do
|
describe 'mandatory checkbox' do
|
||||||
it 'no mandatory checkbox are present' do
|
it 'no mandatory checkbox are present' do
|
||||||
expect(subject).not_to have_css('.form-group.mandatory')
|
expect(subject).to have_css('.form-group.mandatory[style*="visibility: hidden"]')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -41,8 +41,8 @@ describe 'admin/types_de_champ/show.html.haml', type: :view do
|
||||||
end
|
end
|
||||||
context 'when there is only one field in database' do
|
context 'when there is only one field in database' do
|
||||||
let!(:type_de_champ_0) { create(:type_de_champ_private, procedure: procedure, order_place: 0) }
|
let!(:type_de_champ_0) { create(:type_de_champ_private, procedure: procedure, order_place: 0) }
|
||||||
it { expect(subject).not_to have_css('#btn_down_0') }
|
it { expect(subject).to have_css('#btn_down_0[style*="visibility: hidden"]') }
|
||||||
it { expect(subject).not_to have_css('#btn_up_0') }
|
it { expect(subject).to have_css('#btn_up_0[style*="visibility: hidden"]') }
|
||||||
it { expect(subject).not_to have_css('#btn_up_1') }
|
it { expect(subject).not_to have_css('#btn_up_1') }
|
||||||
it { expect(subject).not_to have_css('#btn_down_1') }
|
it { expect(subject).not_to have_css('#btn_down_1') }
|
||||||
end
|
end
|
||||||
|
@ -50,10 +50,10 @@ describe 'admin/types_de_champ/show.html.haml', type: :view do
|
||||||
let!(:type_de_champ_0) { create(:type_de_champ_private, procedure: procedure, order_place: 0) }
|
let!(:type_de_champ_0) { create(:type_de_champ_private, procedure: procedure, order_place: 0) }
|
||||||
let!(:type_de_champ_1) { create(:type_de_champ_private, procedure: procedure, order_place: 1) }
|
let!(:type_de_champ_1) { create(:type_de_champ_private, procedure: procedure, order_place: 1) }
|
||||||
it { expect(subject).to have_css('#btn_down_0') }
|
it { expect(subject).to have_css('#btn_down_0') }
|
||||||
it { expect(subject).not_to have_css('#btn_up_0') }
|
it { expect(subject).to have_css('#btn_up_0[style*="visibility: hidden"]') }
|
||||||
it { expect(subject).to have_css('#btn_up_1') }
|
it { expect(subject).to have_css('#btn_up_1') }
|
||||||
it { expect(subject).not_to have_css('#btn_down_1') }
|
it { expect(subject).to have_css('#btn_down_1[style*="visibility: hidden"]') }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue