Module: CollectingEventsHelper

Defined in:
app/helpers/collecting_events_helper.rb

Instance Method Summary collapse

Instance Method Details

#collecting_event_autocomplete_tag(collecting_event, join_string = '<br>') ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'app/helpers/collecting_events_helper.rb', line 14

def collecting_event_autocomplete_tag(collecting_event, join_string = '<br>')
  return nil if collecting_event.nil?
  [ collecting_event_identifiers_tag(collecting_event),
    collecting_event_geographic_names_tag(collecting_event),
    collecting_event_verbatim_locality_tag(collecting_event),
    collecting_event_dates_tag(collecting_event),
    collecting_event_collectors_tag(collecting_event),
    collecting_event_verbatim_coordinates_tag(collecting_event),
   # collecting_event_coordinates_tag(collecting_event), # this is very slow
    collecting_event_method_habitat_tag(collecting_event),
    collecting_event_uses_tag(collecting_event)
  ].compact.join(join_string).html_safe
end

#collecting_event_browse_next_by_identifier(collecting_event) ⇒ link_to

Returns this may not work for all identifier types, i.e. those with identifiers like `123.34` or `3434.33X` may not increment correctly.

Returns:

  • (link_to)

    this may not work for all identifier types, i.e. those with identifiers like `123.34` or `3434.33X` may not increment correctly



184
185
186
187
188
189
190
191
192
193
194
195
196
# File 'app/helpers/collecting_events_helper.rb', line 184

def collecting_event_browse_next_by_identifier(collecting_event)
  return nil if collecting_event.nil?
  o = collecting_event.next_by_identifier
  return (:div, 'None', 'class' => 'navigation-item disable') if o.nil?
  link_text = (:span, 'Next by id', 'class' => 'small-icon icon-right', 'data-icon' => 'arrow-right')
  link_to(
    link_text, browse_collecting_events_task_path(collecting_event_id: o.id),
    data: {
      arrow: :next,
      'no-turbolinks' => 'false',
      help: 'Sorts by identifier type, namespace, then an conversion of identifier into integer.  Will not work for all identifier types.'},
      class:'navigation-item')
end

#collecting_event_browse_previous_by_identifier(collecting_event) ⇒ link_to

Returns this may not work for all identifier types, i.e. those with identifiers like `123.34` or `3434.33X` may not increment correctly.

Returns:

  • (link_to)

    this may not work for all identifier types, i.e. those with identifiers like `123.34` or `3434.33X` may not increment correctly



168
169
170
171
172
173
174
175
176
177
178
179
180
# File 'app/helpers/collecting_events_helper.rb', line 168

def collecting_event_browse_previous_by_identifier(collecting_event)
  return nil if collecting_event.nil?
  o = collecting_event.previous_by_identifier
  return (:div, 'None', 'class' => 'navigation-item disable') if o.nil?
  link_text = (:span, 'Previous by id', 'class' => 'small-icon icon-left', 'data-icon' => 'arrow-left')
  link_to(
    link_text, browse_collecting_events_task_path(collecting_event_id: o.id),
    data: {
      arrow: :previous,
      'no-turbolinks' => 'true',
      help: 'Sorts by identifier type, namespace, then an conversion of identifier into integer.  Will not work for all identifier types.'},
      class: 'navigation-item')
end

#collecting_event_collectors_tag(collecting_event) ⇒ Object



66
67
68
69
70
71
72
73
74
75
76
# File 'app/helpers/collecting_events_helper.rb', line 66

def collecting_event_collectors_tag(collecting_event)
  return nil if collecting_event.nil? || (collecting_event.verbatim_collectors.blank? && !collecting_event.collectors.load.any?)
  a = ''

  a << (
    :span, Utilities::Strings.authorship_sentence(collecting_event.collectors.collect{|a| a.cached})
  ) if collecting_event.collectors.any?

  a << '&nbsp;'.html_safe + (:span,  collecting_event.verbatim_collectors, class: [:feedback, 'feedback-thin','feedback-secondary']) if collecting_event.verbatim_collectors
  a
end

#collecting_event_coordinates_tag(collecting_event) ⇒ Object

Slow, but accurate



79
80
81
82
83
# File 'app/helpers/collecting_events_helper.rb', line 79

def collecting_event_coordinates_tag(collecting_event)
  return nil if collecting_event.nil? || collecting_event.map_center_method.nil?
  c = collecting_event.map_center
  (:span, [c.x.round(4), c.y.round(4)].join('&nbsp;&#8212;&nbsp;').html_safe)
end

#collecting_event_dates_tag(collecting_event) ⇒ Object



91
92
93
94
95
96
97
98
99
100
# File 'app/helpers/collecting_events_helper.rb', line 91

def collecting_event_dates_tag(collecting_event)
  return nil if collecting_event.nil? || !collecting_event.has_some_date?
  s = collecting_event.date_range.join('&nbsp;&#8212;&nbsp;').html_safe
  a = ''
  a = (:span, s) if !s.blank?

  a << '&nbsp;'.html_safe + (:span, collecting_event.verbatim_date, class: [
    :feedback, 'feedback-thin', 'feedback-secondary' ]) if collecting_event.verbatim_date
    a.html_safe
end

#collecting_event_geographic_names_tag(collecting_event) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
# File 'app/helpers/collecting_events_helper.rb', line 49

def collecting_event_geographic_names_tag(collecting_event)
  return nil if collecting_event.nil?

  a = [collecting_event.cached_level0_geographic_name,
       collecting_event.cached_level1_geographic_name,
       collecting_event.cached_level2_geographic_name
  ].compact
  return nil if a.empty?

  (:span, a.join(': '))
end

#collecting_event_identifiers_tag(collecting_event) ⇒ Object

TODO: unify



38
39
40
41
42
43
44
45
46
47
# File 'app/helpers/collecting_events_helper.rb', line 38

def collecting_event_identifiers_tag(collecting_event)
  return nil if collecting_event.nil?
  if i = collecting_event.identifiers.load.first
    collecting_event.identifiers.collect{|j|
      (:span, j.cached, class: [ :feedback, 'feedback-thin', 'feedback-secondary' ])
    }.join
  else
    nil
  end
end

#collecting_event_label_tag(label_text) ⇒ HTML

Returns a pre tag formatting a label.

Returns:

  • (HTML)

    a pre tag formatting a label



159
160
161
# File 'app/helpers/collecting_events_helper.rb', line 159

def collecting_event_label_tag(label_text)
  (:pre, label_text, class: [:large_type, :word_break] ) # large_type needs to be larger
end


107
108
109
110
# File 'app/helpers/collecting_events_helper.rb', line 107

def collecting_event_link(collecting_event)
  return nil if collecting_event.nil?
  link_to(collecting_event_tag(collecting_event).html_safe, collecting_event)
end

#collecting_event_method_habitat_tag(collecting_event) ⇒ Object



61
62
63
64
# File 'app/helpers/collecting_events_helper.rb', line 61

def collecting_event_method_habitat_tag(collecting_event)
  return nil if collecting_event.nil? || (collecting_event.verbatim_method.blank? && collecting_event.verbatim_habitat.blank?)
  (:span, [collecting_event.verbatim_method, collecting_event.verbatim_habitat].compact.join('; '))
end

#collecting_event_namespace_select_tagString

Returns short string of use in autocomplete selects.

Returns:

  • (String)

    short string of use in autocomplete selects



126
127
128
# File 'app/helpers/collecting_events_helper.rb', line 126

def collecting_event_namespace_select_tag
  select_tag(:ce_namespace, options_for_select(Namespace.pluck(:short_name).uniq), prompt: 'Select a namespace')
end

#collecting_event_next_by_start_date(collecting_event) ⇒ Object



198
199
# File 'app/helpers/collecting_events_helper.rb', line 198

def collecting_event_next_by_start_date(collecting_event)
end

#collecting_event_tag(collecting_event) ⇒ Object



3
4
5
6
7
8
9
10
11
12
# File 'app/helpers/collecting_events_helper.rb', line 3

def collecting_event_tag(collecting_event)
  return nil if collecting_event.nil?
  if a = [ collecting_event.verbatim_label,
      collecting_event.print_label,
      collecting_event.document_label ].compact.first
    [ collecting_event_identifiers_tag(collecting_event), a].compact.join('&nbsp;').html_safe
  else
    collecting_event_autocomplete_tag(collecting_event, '; ').html_safe
  end
end

#collecting_event_uses_tag(collecting_event) ⇒ Object



28
29
30
31
32
33
34
35
# File 'app/helpers/collecting_events_helper.rb', line 28

def collecting_event_uses_tag(collecting_event)
  return nil if collecting_event.nil?
  if collecting_event.collection_objects.any?
    (:span, 'Uses: ' + collecting_event.collection_objects.count.to_s, class: [ :feedback, 'feedback-thin', 'feedback-secondary' ])
  else
    nil
  end
end

#collecting_event_verbatim_coordinates_tag(collecting_event) ⇒ Object

Fast, but limited



86
87
88
89
# File 'app/helpers/collecting_events_helper.rb', line 86

def collecting_event_verbatim_coordinates_tag(collecting_event)
  return nil if collecting_event.nil? || collecting_event.latitude.blank?
  (:span, [collecting_event.latitude, collecting_event.longitude].join(';').html_safe)
end

#collecting_event_verbatim_locality_tag(collecting_event) ⇒ Object



102
103
104
105
# File 'app/helpers/collecting_events_helper.rb', line 102

def collecting_event_verbatim_locality_tag(collecting_event)
  return nil unless !(collecting_event&.verbatim_locality&.blank?)
  (:span, collecting_event.verbatim_locality)
end

#collecting_events_search_formObject



112
113
114
# File 'app/helpers/collecting_events_helper.rb', line 112

def collecting_events_search_form
  render('/collecting_events/quick_search_form')
end

#date_range_tag(collecting_event) ⇒ String?

Returns summary of date data.

Returns:

  • (String, nil)

    summary of date data



142
143
144
145
# File 'app/helpers/collecting_events_helper.rb', line 142

def date_range_tag(collecting_event)
  return if collecting_event.nil?
  [collecting_event.start_date_string, collecting_event.end_date_string].compact.join(' - ')
end

#elevation_tag(collecting_event) ⇒ String?

Returns summary of elevation data.

Returns:

  • (String, nil)

    summary of elevation data



132
133
134
135
136
137
138
# File 'app/helpers/collecting_events_helper.rb', line 132

def elevation_tag(collecting_event)
  return nil if collecting_event.nil?
  [
    Utilities::Strings.nil_wrap(nil, [collecting_event.minimum_elevation, collecting_event.maximum_elevation].compact.join('-'), 'm'),
    Utilities::Strings.nil_wrap(' +/-', collecting_event.elevation_precision, nil)
  ].compact.join.html_safe
end


116
117
118
119
120
121
122
# File 'app/helpers/collecting_events_helper.rb', line 116

def next_without_georeference_for_google_maps_link(collecting_event)
  if n = collecting_event.next_without_georeference
    link_to('Skip to next CE without georeference', new_georeferences_google_map_path(georeference: {collecting_event_id: n.to_param}), id: :next_without_georeference)
  else
    nil
  end
end

#verbatim_gis_tag(collecting_event) ⇒ String?

Returns summary of verbatim gis related data.

Returns:

  • (String, nil)

    summary of verbatim gis related data



149
150
151
152
153
154
155
156
# File 'app/helpers/collecting_events_helper.rb', line 149

def verbatim_gis_tag(collecting_event)
  return if collecting_event.nil?
  [collecting_event.verbatim_latitude,
   collecting_event.verbatim_longitude,
   Utilities::Strings.nil_wrap(' (+/-', collecting_event.verbatim_geolocation_uncertainty, ')'),
   Utilities::Strings.nil_wrap(' [via ', collecting_event.verbatim_datum, ']'),
  ].compact.join(', ')
end