3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
# File 'app/decorators/infold/column_display_decorator.rb', line 3
def code_flash_display(ns_snake, prefix, detail: false, char: false)
if model_column.is_foreign_key?
belongs_name = model_column.model_association.belongs_name
code = "#{belongs_name}_#{model_column.model_association.parent_model.label_column_name}"
association_app = App.find_by(model: model_column.model_association.parent_model)
if char || association_app&.app_view_show.blank?
"#{prefix}.#{code}"
else
"link_to #{prefix}.#{code}, #{ns_snake}_#{model_column.model_association.parent_model_name.underscore}_path(#{prefix}.#{belongs_name}, optional_window: true), data: { turbo_frame: 'modal_optional' } if #{prefix}.#{belongs_name}"
end
else
case model_column.kind.to_sym
when :enum
if model_column.method_for_enum.present?
wrap = detail ? ', wrap: true' : ''
char ? "#{prefix}.#{model_column.name}_i18n" :
"render #{ns_snake.camelize}::EnumBadgeComponent.new(#{prefix}.#{model_column.name}_i18n, #{prefix}.#{model_column.name}_color#{wrap})"
else
"#{prefix}.#{model_column.name}_i18n"
end
when :date, :datetime
"#{prefix}.#{model_column.name}_display"
when :number
model_column.delimited? || model_column.unit.present? ? "#{prefix}.#{model_column.name}_display" : "#{prefix}.#{model_column.name}"
when :boolean
char ? "#{prefix}.#{model_column.name}" :
"#{prefix}.#{model_column.name}_display"
else
code = model_column.unit.present? ? "#{prefix}.#{model_column.name}_display" : "#{prefix}.#{model_column.name}"
app = if is_a?(SearchResultColumn)
(app_view_index || app_view_modal).app
elsif is_a?(ShowAssociationColumn)
show_association.app_view.app
else
app_view.app
end
textarea = app.app_view_form&.form_columns&.any? { |fc| fc.model_column == model_column && fc.form_kind_textarea? }
if textarea && !char
"simple_format(h(#{code}), {}, wrapper_tag: 'div')"
else
code
end
end
end
end
|