Module: Infold::ColumnDisplayDecorator

Included in:
CsvColumnDecorator, SearchResultColumnDecorator, ShowAssociationColumnDecorator, ShowFieldDecorator
Defined in:
app/decorators/infold/column_display_decorator.rb

Instance Method Summary collapse

Instance Method Details

#code_flash_display(ns_snake, prefix, detail: false, char: false) ⇒ Object



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

#serializer_attribute_nameObject



49
50
51
52
53
54
55
56
57
# File 'app/decorators/infold/column_display_decorator.rb', line 49

def serializer_attribute_name
  if model_column.present?
    if model_column.kind_enum?
      "#{model_column.name}_i18n"
    else
      model_column.name
    end
  end
end