From a5ab7af0f8236c383aed7e238e9726832e5a0663 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 20 Oct 2016 17:14:38 +0200 Subject: [PATCH] Add private champs in tab preference list --- app/models/preference_list_dossier.rb | 14 ++++++++++++- app/views/backoffice/dossiers/_list.html.haml | 4 +++- .../backoffice/dossiers/_pref_list.html.haml | 2 +- spec/models/preference_list_dossier_spec.rb | 20 ++++++++++++++++++- 4 files changed, 36 insertions(+), 4 deletions(-) diff --git a/app/models/preference_list_dossier.rb b/app/models/preference_list_dossier.rb index a1fd020ef..c09ed6682 100644 --- a/app/models/preference_list_dossier.rb +++ b/app/models/preference_list_dossier.rb @@ -23,7 +23,8 @@ class PreferenceListDossier < ActiveRecord::Base } columns = columns.merge({ - champs: columns_champs_procedure(procedure_id) + champs: columns_champs_procedure(procedure_id), + champs_private: columns_champs_private_procedure(procedure_id) }) unless procedure_id.nil? columns @@ -103,6 +104,17 @@ class PreferenceListDossier < ActiveRecord::Base end end + def self.columns_champs_private_procedure procedure_id + table = 'champs_private' + + Procedure.find(procedure_id).types_de_champ_private.inject({}) do |acc, type_de_champ| + acc = acc.merge({ + "type_de_champ_private_#{type_de_champ.id}" => create_column(type_de_champ.libelle, table, type_de_champ.id, 'value', 2) + }) if type_de_champ.field_for_list? + acc + end + end + def self.create_column libelle, table, attr, attr_decorate, bootstrap_lg { libelle: libelle, diff --git a/app/views/backoffice/dossiers/_list.html.haml b/app/views/backoffice/dossiers/_list.html.haml index 889371076..3b6793ef5 100644 --- a/app/views/backoffice/dossiers/_list.html.haml +++ b/app/views/backoffice/dossiers/_list.html.haml @@ -2,7 +2,7 @@ %thead - @dossiers_list_facade.preference_list_dossiers_filter.each do |preference| %th{class: "col-md-#{preference.bootstrap_lg} col-lg-#{preference.bootstrap_lg}"} - - if preference.table == 'champs' + - if preference.table.to_s.include? 'champs' = preference.libelle -else = smart_listing.sortable preference.libelle, preference.table_attr @@ -22,6 +22,8 @@ - value = dossier.decorate.public_send(preference.attr_decorate) - elsif preference.table == 'champs' - value = dossier.champs.find_by_type_de_champ_id(preference.attr).value + - elsif preference.table == 'champs_private' + - value = dossier.champs_private.find_by_type_de_champ_id(preference.attr).value - else - begin - value = dossier.public_send(preference.table).decorate.public_send(preference.attr_decorate) diff --git a/app/views/backoffice/dossiers/_pref_list.html.haml b/app/views/backoffice/dossiers/_pref_list.html.haml index 45825b606..b45576213 100644 --- a/app/views/backoffice/dossiers/_pref_list.html.haml +++ b/app/views/backoffice/dossiers/_pref_list.html.haml @@ -23,7 +23,7 @@ %table - PreferenceListDossier.available_columns_for(@dossiers_list_facade.procedure_id).each_with_index do |tables, index| - - if index%2 == 0 || tables.first == :champs + - if index%2 == 0 || tables.first.to_s.include?('champs') %tr %td.col-sm-5.col-md-5.col-lg-5{style: 'vertical-align: top', colspan: (tables.first == :champs ? 2 : 1)} diff --git a/spec/models/preference_list_dossier_spec.rb b/spec/models/preference_list_dossier_spec.rb index 095d1083d..3558dd699 100644 --- a/spec/models/preference_list_dossier_spec.rb +++ b/spec/models/preference_list_dossier_spec.rb @@ -296,7 +296,7 @@ describe PreferenceListDossier do end context 'when a procedure ID is pasted' do - let(:procedure) { (create :procedure, :with_type_de_champ) } + let(:procedure) { (create :procedure, :with_type_de_champ, :with_type_de_champ_private) } let(:procedure_id) { procedure.id } describe 'champs' do @@ -316,6 +316,24 @@ describe PreferenceListDossier do it { expect(subject[:filter]).to be_nil } end end + + describe 'champs private' do + subject { super()[:champs_private] } + + it { expect(subject.size).to eq 1 } + + describe 'first champs' do + subject { super()["type_de_champ_private_#{procedure.types_de_champ_private.first.id}"] } + + it { expect(subject[:libelle]).to eq 'Description' } + it { expect(subject[:table]).to eq 'champs_private' } + it { expect(subject[:attr]).to eq procedure.types_de_champ_private.first.id } + it { expect(subject[:attr_decorate]).to eq 'value' } + it { expect(subject[:bootstrap_lg]).to eq 2 } + it { expect(subject[:order]).to be_nil } + it { expect(subject[:filter]).to be_nil } + end + end end end end