move human_value_for_filter to filter_buttons_component
This commit is contained in:
parent
f50e63ea40
commit
c28087ba3b
3 changed files with 36 additions and 44 deletions
|
@ -42,6 +42,37 @@ class Instructeurs::FilterButtonsComponent < ApplicationComponent
|
||||||
end
|
end
|
||||||
|
|
||||||
def button_content(filter)
|
def button_content(filter)
|
||||||
"#{filter.column.label.truncate(50)} : #{@procedure_presentation.human_value_for_filter(filter)}"
|
"#{filter.label.truncate(50)} : #{human_value(filter)}"
|
||||||
|
end
|
||||||
|
|
||||||
|
def human_value(filter_column)
|
||||||
|
column, filter = filter_column.column, filter_column.filter
|
||||||
|
|
||||||
|
if column.type_de_champ?
|
||||||
|
find_type_de_champ(column.column).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.type == :date
|
||||||
|
helpers.try_parse_format_date(filter)
|
||||||
|
else
|
||||||
|
filter
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def find_type_de_champ(column)
|
||||||
|
stable_id = column.to_s.split('->').first
|
||||||
|
|
||||||
|
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
|
end
|
||||||
|
|
|
@ -113,6 +113,10 @@ module ApplicationHelper
|
||||||
datetime.present? ? I18n.l(datetime, format:) : ''
|
datetime.present? ? I18n.l(datetime, format:) : ''
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def try_parse_format_date(date)
|
||||||
|
date.then { Date.parse(_1) rescue nil }&.then { I18n.l(_1) }
|
||||||
|
end
|
||||||
|
|
||||||
def try_format_mois_effectif(etablissement)
|
def try_format_mois_effectif(etablissement)
|
||||||
if etablissement.entreprise_effectif_mois.present? && etablissement.entreprise_effectif_annee.present?
|
if etablissement.entreprise_effectif_mois.present? && etablissement.entreprise_effectif_annee.present?
|
||||||
[etablissement.entreprise_effectif_mois, etablissement.entreprise_effectif_annee].join('/')
|
[etablissement.entreprise_effectif_mois, etablissement.entreprise_effectif_annee].join('/')
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
class ProcedurePresentation < ApplicationRecord
|
class ProcedurePresentation < ApplicationRecord
|
||||||
TYPE_DE_CHAMP = 'type_de_champ'
|
|
||||||
|
|
||||||
belongs_to :assign_to, optional: false
|
belongs_to :assign_to, optional: false
|
||||||
has_many :exports, dependent: :destroy
|
has_many :exports, dependent: :destroy
|
||||||
|
|
||||||
|
@ -42,45 +40,4 @@ class ProcedurePresentation < ApplicationRecord
|
||||||
columns.concat(procedure.sva_svr_columns) if procedure.sva_svr_enabled?
|
columns.concat(procedure.sva_svr_columns) if procedure.sva_svr_enabled?
|
||||||
columns
|
columns
|
||||||
end
|
end
|
||||||
|
|
||||||
def human_value_for_filter(filtered_column)
|
|
||||||
if filtered_column.column.table == TYPE_DE_CHAMP
|
|
||||||
find_type_de_champ(filtered_column.column.column).dynamic_type.filter_to_human(filtered_column.filter)
|
|
||||||
elsif filtered_column.column.column == 'state'
|
|
||||||
if filtered_column.filter == 'pending_correction'
|
|
||||||
Dossier.human_attribute_name("pending_correction.for_instructeur")
|
|
||||||
else
|
|
||||||
Dossier.human_attribute_name("state.#{filtered_column.filter}")
|
|
||||||
end
|
|
||||||
elsif filtered_column.column.table == 'groupe_instructeur' && filtered_column.column.column == 'id'
|
|
||||||
instructeur.groupe_instructeurs
|
|
||||||
.find { _1.id == filtered_column.filter.to_i }&.label || filtered_column.filter
|
|
||||||
else
|
|
||||||
column = procedure.columns.find { _1.table == filtered_column.column.table && _1.column == filtered_column.column.column }
|
|
||||||
|
|
||||||
if column.type == :date
|
|
||||||
parsed_date = safe_parse_date(filtered_column.filter)
|
|
||||||
|
|
||||||
return parsed_date.present? ? I18n.l(parsed_date) : nil
|
|
||||||
end
|
|
||||||
|
|
||||||
filtered_column.filter
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def safe_parse_date(string)
|
|
||||||
Date.parse(string)
|
|
||||||
rescue Date::Error
|
|
||||||
nil
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
|
||||||
|
|
||||||
def find_type_de_champ(column)
|
|
||||||
TypeDeChamp
|
|
||||||
.joins(:revision_types_de_champ)
|
|
||||||
.where(revision_types_de_champ: { revision_id: procedure.revisions })
|
|
||||||
.order(created_at: :desc)
|
|
||||||
.find_by(stable_id: column)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue