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

#annotation_id(object) ⇒ Object



63
64
65
# File 'app/helpers/annotations_helper.rb', line 63

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

#annotations_exist(object) ⇒ Object



52
53
54
55
56
57
58
59
60
61
# File 'app/helpers/annotations_helper.rb', line 52

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)


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

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 }



73
74
75
# File 'app/helpers/annotations_helper.rb', line 73

def klass_and_labels(klass_names)
  klass_names.collect{|n| [n, n.tableize.humanize]}.to_h
end

#klass_annotationsObject

Models name as key, annotator names as Array of values

see /metadata/annotators.json

Returns:

  • Hash



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'app/helpers/annotations_helper.rb', line 7

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



67
68
69
# File 'app/helpers/annotations_helper.rb', line 67

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