@@ -98,27 +98,30 @@ def access_type(metadata)
9898 access_right . first [ 'description' ]
9999 end
100100
101- # This method is not currently in use, but it may become useful later. Stakeholders need to see all available data
102- # for testing.
103- def issued_dates ( dates )
104- return_relevant_dates ( dates , 'Issued' )
101+ # For GDT records, a 'more information' section includes all fields that are currently mapped in
102+ # [transmogrifier](https://github.com/MITLibraries/transmogrifier/blob/main/transmogrifier/sources/json/aardvark.py).
103+ # Note: the publishers field is not yet available in TIMDEX API, but it should be added here once it is.
104+ def more_info_geo? ( metadata )
105+ relevant_fields = %w[ alternate_titles contributors dates format identifiers languages locations
106+ links notes provider rights ]
107+ metadata . keys . any? { |key | relevant_fields . include? key }
105108 end
106109
107- # This method is not currently in use, but it may become useful later. Stakeholders need to see all available data
108- # for testing.
109- def coverage_dates ( dates )
110- return_relevant_dates ( dates , 'Coverage' )
110+ def parse_nested_field ( field )
111+ # Don't continue if it's not a nested field.
112+ return unless field . is_a? ( Array ) && field . first . is_a? ( Hash )
113+
114+ # We don't care about display subfields with null values, our the contributors 'mitAffiliated' subfield.
115+ field . map do |subfield |
116+ subfield . reject { |key , value | key == 'mitAffiliated' || value . blank? }
117+ end . compact
111118 end
112119
113- # This method is likely to change post-MVP. Stakeholders need to see all available data for testing.
114- def more_info? ( metadata )
115- if metadata [ 'citation' ] || metadata [ 'dates' ] || metadata [ 'identifiers' ] || metadata [ 'languages' ] ||
116- metadata [ 'format' ] || metadata [ 'locations' ] || metadata [ 'notes' ] || metadata [ 'provider' ] ||
117- metadata [ 'publicationInformation' ]
118- true
119- else
120- false
121- end
120+ def render_subfield ( subfield )
121+ # Date ranges are handled differently than other subfields
122+ return ( "kind: #{ subfield [ 'kind' ] } ; range: " + date_range ( subfield [ 'range' ] ) ) if subfield [ 'range' ] . present?
123+
124+ subfield . map { |key , value | "#{ key } : #{ value } " } . join ( '; ' )
122125 end
123126
124127 def source_metadata_available? ( links )
@@ -131,17 +134,6 @@ def source_metadata_link(links)
131134 links . select { |link | link [ 'kind' ] == 'Download' && link [ 'text' ] == 'Source Metadata' } . first [ 'url' ]
132135 end
133136
134- # This method is not currently in use, but it may become useful later. Stakeholders need to see all available data
135- # for testing.
136- def places ( locations )
137- return if locations . blank?
138-
139- place_names = locations . select { |location | location [ 'kind' ] == 'Place Name' }
140- return if place_names . blank?
141-
142- place_names . map { |place | place [ 'value' ] }
143- end
144-
145137 private
146138
147139 def render_kind_value ( list )
@@ -167,21 +159,4 @@ def render_list(list)
167159
168160 "<ul>#{ render_list_items ( list ) } </ul>"
169161 end
170-
171- def return_relevant_dates ( dates , kind )
172- return if dates . blank? || dates &.none? { |date | date [ 'kind' ] == kind }
173-
174- relevant_dates = dates . select { |date | date [ 'kind' ] == kind }
175- relevant_dates &.map do |date |
176- if date [ 'range' ] . present?
177- if date [ 'range' ] [ 'lte' ] == date [ 'range' ] [ 'gte' ]
178- date [ 'range' ] [ 'lte' ]
179- else
180- "#{ date [ 'range' ] [ 'gte' ] } -#{ date [ 'range' ] [ 'lte' ] } "
181- end
182- else
183- date [ 'value' ]
184- end
185- end &.uniq &.join ( '; ' )
186- end
187162end
0 commit comments