Module: CoreDataGridHelper

Defined in:
app/helpers/core_data_grid_helper.rb

Instance Method Summary collapse

Instance Method Details

#data_grid_field_value(model, field_name) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'app/helpers/core_data_grid_helper.rb', line 33

def data_grid_field_value(model, field_name)
  value = model.respond_to?(field_name) ? model.send(field_name) : nil
  case value
  when BSON::ObjectId
    if field_name.eql?('_id')
      value.to_s
    else
      related_model = fetch_related_model(model, field_name.chomp('_id'))
      related_model.present? ? related_model.name : 'N/A'
    end
  when FalseClass
    'No'
  when TrueClass
    'Yes'
  when Mongoid::Boolean
    value ? 'Yes' : 'No'
  when Date, DateTime, Time
    current_member_user&.local_time(value, :medium) || value.to_s
  when Integer, Array
    value.to_s
  when String
    value
  else
    'N/S'
  end
end

#data_grid_item(title, content) ⇒ Object



17
18
19
20
21
22
# File 'app/helpers/core_data_grid_helper.rb', line 17

def data_grid_item(title, content)
  (:div, class: 'datagrid-item') do
    concat((:div, class: 'datagrid-title') { title })
    concat((:div, class: 'datagrid-content') { content })
  end
end

#data_grid_mask(title, secret_content) ⇒ Object



29
30
31
# File 'app/helpers/core_data_grid_helper.rb', line 29

def data_grid_mask(title, secret_content)
  data_grid_item(title, mask_value(secret_content))
end

#data_grid_tag(model, fields: [], except: [], &block) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
15
# File 'app/helpers/core_data_grid_helper.rb', line 2

def data_grid_tag(model, fields: [], except: [], &block)
  fields = model.class.allowed_param_names(except) + model.class::STANDARD_FIELDS if fields.blank?

  (:div, class: 'datagrid') do
    fields.sort.each do |field|
      next if %w[_id _type].include?(field)
      next unless model.respond_to?(field)
      next if model.send(field).blank?

      concat(data_grid_item(field, data_grid_field_value(model, field)))
    end
    concat(capture(&block)) if block_given?
  end
end

#data_grid_url(title, url) ⇒ Object



24
25
26
27
# File 'app/helpers/core_data_grid_helper.rb', line 24

def data_grid_url(title, url)
  url = (:a, href: url) { url }
  data_grid_item(title, url)
end