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



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

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



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

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
101
102
# 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.uniq.join('&nbsp;&#8212;&nbsp;').html_safe
  a = ''
  a = tag.span(s) if s.present?

  if collecting_event.verbatim_date
    a << '&nbsp;'.html_safe + tag.span(collecting_event.verbatim_date, class: [
      :feedback, 'feedback-thin', 'feedback-secondary'])
  end
  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



161
162
163
# File 'app/helpers/collecting_events_helper.rb', line 161

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


109
110
111
112
# File 'app/helpers/collecting_events_helper.rb', line 109

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



128
129
130
# File 'app/helpers/collecting_events_helper.rb', line 128

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



200
201
# File 'app/helpers/collecting_events_helper.rb', line 200

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(',&nbsp;').html_safe)
end

#collecting_event_verbatim_locality_tag(collecting_event) ⇒ Object



104
105
106
107
# File 'app/helpers/collecting_events_helper.rb', line 104

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

#collecting_events_search_formObject



114
115
116
# File 'app/helpers/collecting_events_helper.rb', line 114

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



144
145
146
147
# File 'app/helpers/collecting_events_helper.rb', line 144

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



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

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


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

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



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

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