Module: AnatomicalPartsHelper

Defined in:
app/helpers/anatomical_parts_helper.rb

Instance Method Summary collapse

Instance Method Details

#anatomical_part_autocomplete_tag(anatomical_part) ⇒ Object



23
24
25
# File 'app/helpers/anatomical_parts_helper.rb', line 23

def anatomical_part_autocomplete_tag(anatomical_part)
  anatomical_part_tag(anatomical_part)
end


86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'app/helpers/anatomical_parts_helper.rb', line 86

def anatomical_part_graph_label_for_related_object(obj)
  case obj.class.base_class.name
  when 'AnatomicalPart'
    'AnatomicalPart: ' + (short_label_for_anatomical_part(obj) || '(no label)')
  when 'CollectionObject'
    label_for_collection_object(obj)
  when 'Extract'
    'Extract: ' + (label_for_extract(obj) || '(no label)')
  when 'FieldOccurrence'
    label_for_field_occurrence(obj)
  when 'Otu'
    'Otu: ' + (label_for_otu(obj) || '(no label)')
  when 'Sequence'
    'Sequence: ' + (label_for_sequence(obj) || '(no label)')
  when 'Sound'
    'Sound: ' + (label_for_sound(obj) || '(no label)')
  end
end

#anatomical_part_ontology_autocomplete_label(ols_result, project_count: 0) ⇒ Object



74
75
76
77
78
79
80
81
82
83
84
# File 'app/helpers/anatomical_parts_helper.rb', line 74

def anatomical_part_ontology_autocomplete_label(ols_result, project_count: 0)
  label = anatomical_part_ontology_label(ols_result)

  if project_count > 0
    in_project_tag = (:span, 'In project', class: 'feedback feedback-primary feedback-thin')
    in_project_count_tag = (:span, project_count, class: 'feedback feedback-secondary feedback-thin')
    safe_join([label, ' ', in_project_tag, ' ', in_project_count_tag])
  else
    label
  end
end

#anatomical_part_ontology_label(ols_result) ⇒ Object



64
65
66
67
68
69
70
71
72
# File 'app/helpers/anatomical_parts_helper.rb', line 64

def anatomical_part_ontology_label(ols_result)
  r = ols_result

  description = r[:description].present? ? ": #{r[:description]}" : ''
  # We expect this to always be present and it usually is, but sometimes it
  # isn't.
  ontology_prefix = r[:ontology_prefix] ? "(#{r[:ontology_prefix]})" : ''
  "#{r[:label]} #{ontology_prefix}#{description}"
end

#anatomical_part_tag(anatomical_part, depth: 0) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'app/helpers/anatomical_parts_helper.rb', line 2

def anatomical_part_tag(anatomical_part, depth: 0)
  return nil if anatomical_part.nil?
  raise "AnatomicalPart origin chain exceeded maximum depth, possible cycle at id #{anatomical_part.id}" if depth > 100

  origin = anatomical_part.inbound_origin_relationship&.old_object
  origin_content = case origin&.class&.base_class&.name
  when 'Otu'
    otu_tag(origin)
  when 'CollectionObject'
    collection_object_tag(origin)
  when 'FieldOccurrence'
    field_occurrence_tag(origin)
  when 'AnatomicalPart'
    anatomical_part_tag(origin, depth: depth + 1)
  else
    otu_tag(anatomical_part.origin_otu)
  end

  (:span, safe_join([anatomical_part.cached, ': ', origin_content || '']))
end

#anatomical_parts_search_formObject



60
61
62
# File 'app/helpers/anatomical_parts_helper.rb', line 60

def anatomical_parts_search_form
  render('/anatomical_parts/quick_search_form')
end

#label_for_anatomical_part(anatomical_part, depth: 0) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'app/helpers/anatomical_parts_helper.rb', line 27

def label_for_anatomical_part(anatomical_part, depth: 0)
  return nil if anatomical_part.nil?
  raise "AnatomicalPart origin chain exceeded maximum depth, possible cycle at id #{anatomical_part.id}" if depth > 100

  origin = anatomical_part.inbound_origin_relationship&.old_object
  origin_label = case origin&.class&.base_class&.name
  when 'Otu'
    label_for_otu(origin)
  when 'CollectionObject'
    "#{label_for_collection_object(origin)} (#{label_for_otu(anatomical_part.origin_otu)})"
  when 'FieldOccurrence'
    "#{label_for_field_occurrence(origin)} (#{label_for_otu(anatomical_part.origin_otu)})"
  when 'AnatomicalPart'
    label_for_anatomical_part(origin, depth: depth + 1)
  else
    label_for_otu(anatomical_part.origin_otu)
  end

  "#{anatomical_part.cached}: #{origin_label}"
end

#label_for_anatomical_part_container(anatomical_part) ⇒ Object



54
55
56
57
58
# File 'app/helpers/anatomical_parts_helper.rb', line 54

def label_for_anatomical_part_container(anatomical_part)
  return nil if anatomical_part.nil?

  anatomical_part.cached
end

#short_label_for_anatomical_part(anatomical_part) ⇒ Object



48
49
50
51
52
# File 'app/helpers/anatomical_parts_helper.rb', line 48

def short_label_for_anatomical_part(anatomical_part)
  return nil if anatomical_part.nil?

  anatomical_part.cached
end