Module: RDBr::Web::RelatedValueHelpers

Included in:
Helpers
Defined in:
lib/rdbr/web/related_value_helpers.rb

Defined Under Namespace

Classes: RelatedValue

Instance Method Summary collapse

Instance Method Details

#display_column_name(column) ⇒ Object



18
19
20
21
22
# File 'lib/rdbr/web/related_value_helpers.rb', line 18

def display_column_name(column)
  return column.name unless relationship_column?(column)

  humanize_identifier(column.name.sub(/_id\z/i, '').sub(/Id\z/, ''))
end


8
9
10
11
12
# File 'lib/rdbr/web/related_value_helpers.rb', line 8

def load_related_values(namespace, relation, rows)
  settings.catalog.outgoing_relationships(namespace, relation).each_with_object({}) do |relationship, values|
    load_relationship_values(relationship, rows, values)
  end
end


14
15
16
# File 'lib/rdbr/web/related_value_helpers.rb', line 14

def related_value_for(column, value)
  @related_values&.fetch(related_value_key(column.name, value), nil)
end


24
25
26
27
28
29
30
31
# File 'lib/rdbr/web/related_value_helpers.rb', line 24

def related_value_url(value)
  primary_key = value.relation.primary_key
  if primary_key&.columns&.sort == value.key.keys.sort
    return record_url(value.namespace.name, value.relation.name, value.key, primary_key)
  end

  relation_url(value.namespace.name, value.relation.name, filter: equality_filters(value.key))
end


33
34
35
36
37
38
# File 'lib/rdbr/web/related_value_helpers.rb', line 33

def render_related_value(value, compact: true)
  title = "#{value.column.name}: #{value.raw_value}"
  text = display_text(value.label, limit: compact ? 160 : 500)
  %(<span class="related-value" title="#{Rack::Utils.escape_html(title)}">) \
    "#{Rack::Utils.escape_html(text)}</span>"
end