refactor(column): add label_for_value method
This commit is contained in:
parent
7f4622b697
commit
1335336d98
4 changed files with 16 additions and 30 deletions
|
@ -48,31 +48,10 @@ class Instructeurs::FilterButtonsComponent < ApplicationComponent
|
||||||
def human_value(filter_column)
|
def human_value(filter_column)
|
||||||
column, filter = filter_column.column, filter_column.filter
|
column, filter = filter_column.column, filter_column.filter
|
||||||
|
|
||||||
if column.type_de_champ?
|
if column.type == :date || column.type == :datetime
|
||||||
find_type_de_champ(column.stable_id).dynamic_type.filter_to_human(filter)
|
|
||||||
elsif column.dossier_state?
|
|
||||||
if filter == 'pending_correction'
|
|
||||||
Dossier.human_attribute_name("pending_correction.for_instructeur")
|
|
||||||
else
|
|
||||||
Dossier.human_attribute_name("state.#{filter}")
|
|
||||||
end
|
|
||||||
elsif column.groupe_instructeur?
|
|
||||||
current_instructeur.groupe_instructeurs
|
|
||||||
.find { _1.id == filter.to_i }&.label || filter
|
|
||||||
elsif column.dossier_labels?
|
|
||||||
Label.find(filter)&.name || filter
|
|
||||||
elsif column.type == :date
|
|
||||||
helpers.try_parse_format_date(filter)
|
helpers.try_parse_format_date(filter)
|
||||||
else
|
else
|
||||||
filter
|
column.label_for_value(filter)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def find_type_de_champ(stable_id)
|
|
||||||
TypeDeChamp
|
|
||||||
.joins(:revision_types_de_champ)
|
|
||||||
.where(revision_types_de_champ: { revision_id: @procedure_presentation.procedure.revisions })
|
|
||||||
.order(created_at: :desc)
|
|
||||||
.find_by(stable_id:)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -51,6 +51,16 @@ class Column
|
||||||
def dossier_column? = false
|
def dossier_column? = false
|
||||||
def champ_column? = false
|
def champ_column? = false
|
||||||
|
|
||||||
|
def label_for_value(value)
|
||||||
|
if options_for_select.present?
|
||||||
|
# options for select store ["trad", :enum_value]
|
||||||
|
options_for_select.to_h { |(label, value)| [value.to_s, label] }
|
||||||
|
.fetch(value.to_s, value.to_s)
|
||||||
|
else
|
||||||
|
value
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def column_id = "#{table}/#{column}"
|
def column_id = "#{table}/#{column}"
|
||||||
|
|
|
@ -44,9 +44,6 @@ class ExportedColumnFormatter
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.format_enum(column:, raw_value:)
|
def self.format_enum(column:, raw_value:)
|
||||||
# options for select store ["trad", :enum_value]
|
column.label_for_value(raw_value)
|
||||||
selected_option = column.options_for_select.find { _1[1].to_s == raw_value }
|
|
||||||
|
|
||||||
selected_option ? selected_option.first : raw_value
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -35,7 +35,7 @@ describe Instructeurs::FilterButtonsComponent, type: :component do
|
||||||
let(:filter) { to_filter(['État du dossier', "en_construction"]) }
|
let(:filter) { to_filter(['État du dossier', "en_construction"]) }
|
||||||
|
|
||||||
it 'should get i18n value' do
|
it 'should get i18n value' do
|
||||||
expect(page).to have_text("En construction")
|
expect(page).to have_text("En construction")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ describe Instructeurs::FilterButtonsComponent, type: :component do
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'should display all filters' do
|
it 'should display all filters' do
|
||||||
text = "État du dossier : En construction ou État du dossier : En instruction et Date de création : 15/06/2023"
|
text = "État du dossier : En construction ou État du dossier : En instruction et Date de création : 15/06/2023"
|
||||||
expect(page).to have_text(text)
|
expect(page).to have_text(text)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -78,7 +78,7 @@ describe Instructeurs::FilterButtonsComponent, type: :component do
|
||||||
expect(page.all('form').count).to eq(2)
|
expect(page.all('form').count).to eq(2)
|
||||||
|
|
||||||
del_en_construction = page.all('form').first
|
del_en_construction = page.all('form').first
|
||||||
expect(del_en_construction).to have_text('En construction')
|
expect(del_en_construction).to have_text('En construction')
|
||||||
expect(del_en_construction).to have_field('filters[]', with: '', type: 'hidden')
|
expect(del_en_construction).to have_field('filters[]', with: '', type: 'hidden')
|
||||||
expect(del_en_construction).to have_field('filters[][id]', with: column_id, type: 'hidden')
|
expect(del_en_construction).to have_field('filters[][id]', with: column_id, type: 'hidden')
|
||||||
expect(del_en_construction).to have_field('filters[][filter]', with: 'en_instruction', type: 'hidden')
|
expect(del_en_construction).to have_field('filters[][filter]', with: 'en_instruction', type: 'hidden')
|
||||||
|
|
Loading…
Reference in a new issue