Module: AnnotationsHelper

Defined in:
app/helpers/annotations_helper.rb

Overview

Helpers that wrap sets of annotations of different types.

Instance Method Summary collapse

Instance Method Details

#annotatable?(object) ⇒ Boolean

Returns true if object can carry annotations at all, i.e. responds to the has_? checks; check this before calling them on an object that may not be Data (e.g. a Composition).

Returns:

  • (Boolean) —

    true if object can carry annotations at all, i.e. responds to the has_? checks; check this before calling them on an object that may not be Data (e.g. a Composition)



8
9
10
# File 'app/helpers/annotations_helper.rb', line 8

def annotatable?(object)
  object.class < Shared::IsData::Annotation ? true : false
end

#annotation_id(object) ⇒ Object



71
72
73
# File 'app/helpers/annotations_helper.rb', line 71

def annotation_id(object)
  "annotation_anchor_#{object.metamorphosize.class.name}_#{object.id}"
end

#annotations_exist(object) ⇒ Object



60
61
62
63
64
65
66
67
68
69
# File 'app/helpers/annotations_helper.rb', line 60

def annotations_exist(object)
  return (object.has_citations? && object.citations.any?) ||
    (object.has_identifiers? && object.identifiers.visible(sessions_current_project_id).any?) ||
    (object.has_data_attributes? && object.data_attributes.any?) ||
    (object.has_notes? && object.notes.any?) ||
    (object.has_tags? && object.tags.load.any?) ||
    (object.has_alternate_values? && object.alternate_values.any?) ||
    (object.has_confidences? && object.confidences.any?) ||
    (object.has_attribution? && object.attribution)
end

#annotations_summary_tag(object) ⇒ String

Assumes the context is the object, not a multi-object summary

Returns:

  • (String)


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/annotations_helper.rb', line 35

def annotations_summary_tag(object)
  v = [confidence_list_tag(object),
       citation_list_tag(object),
       identifier_list_tag(object),
       data_attribute_list_tag(object),
       note_list_tag(object),
       tag_list_tag(object),
       alternate_values_list_tag(object),
       attribution_list_tag(object)
  ].compact

  tag.div(class: %w{item panel separate-bottom}) do
    tag.div(class: [:content]) do
      tag.div(class: ['information-panel']) do
        tag.h2('Annotations') +
          ( v.count > 0 ?  tag.div(v.join.html_safe, class: :annotations_summary_list, 'data-annotator-list-object-id' => object.id) : tag.em('None'))
      end
    end
  end

  # depictions
  # confidences
  # protocols
end

#klass_and_labels(klass_names) ⇒ Array

Returns of { ClassName => human name }.

Returns:

  • (Array) —

    of { ClassName => human name }



85
86
87
# File 'app/helpers/annotations_helper.rb', line 85

def klass_and_labels(klass_names)
  klass_names.index_with{|n| n.tableize.humanize}
end

#klass_annotations ⇒ Hash

Models name as key, annotator names as Array of values see /metadata/annotators.json

Returns:

  • (Hash)


15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'app/helpers/annotations_helper.rb', line 15

def klass_annotations
  j = {}
  ::Project::MANIFEST.sort.each do |m|
    k = m.safe_constantize
    if k.respond_to?(:available_annotation_types)
      j[k.name] = k.available_annotation_types
    end
  end

  # Community classes that can be referenced in Filters 
  # at minimum need to be here
  j.merge!(
    'Source' => Source.available_annotation_types
  )

  j
end

#radial_annotator(object, pulse = false, showCount = false) ⇒ Object



75
76
77
# File 'app/helpers/annotations_helper.rb', line 75

def radial_annotator(object, pulse = false, showCount = false)
  (:div, '', data: { 'global-id' => object.to_global_id.to_s, 'radial-annotator' => 'true', 'show-count' => showCount, 'pulse' => pulse })
end

#radial_annotator_otu(object, pulse = false, showCount = false) ⇒ Object



79
80
81
# File 'app/helpers/annotations_helper.rb', line 79

def radial_annotator_otu(object, pulse = false, showCount = false)
  (:div, '', data: { 'taxon-name-id' => object.id.to_s, 'otu-radial-annotator' => 'true' })
end