Skip to content

Commit

Permalink
Merge pull request #159 from MITLibraries/gdt-253-even-more-info
Browse files Browse the repository at this point in the history
Render all possible fields in full record view
  • Loading branch information
jazairi authored Apr 4, 2024
2 parents b159656 + 742f5d9 commit 9cb4da5
Show file tree
Hide file tree
Showing 5 changed files with 154 additions and 190 deletions.
65 changes: 20 additions & 45 deletions app/helpers/record_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -98,27 +98,30 @@ def access_type(metadata)
access_right.first['description']
end

# This method is not currently in use, but it may become useful later. Stakeholders need to see all available data
# for testing.
def issued_dates(dates)
return_relevant_dates(dates, 'Issued')
# For GDT records, a 'more information' section includes all fields that are currently mapped in
# [transmogrifier](https://github.com/MITLibraries/transmogrifier/blob/main/transmogrifier/sources/json/aardvark.py).
# Note: the publishers field is not yet available in TIMDEX API, but it should be added here once it is.
def more_info_geo?(metadata)
relevant_fields = %w[alternate_titles contributors dates format identifiers languages locations
links notes provider rights]
metadata.keys.any? { |key| relevant_fields.include? key }
end

# This method is not currently in use, but it may become useful later. Stakeholders need to see all available data
# for testing.
def coverage_dates(dates)
return_relevant_dates(dates, 'Coverage')
def parse_nested_field(field)
# Don't continue if it's not a nested field.
return unless field.is_a?(Array) && field.first.is_a?(Hash)

# We don't care about display subfields with null values, our the contributors 'mitAffiliated' subfield.
field.map do |subfield|
subfield.reject { |key, value| key == 'mitAffiliated' || value.blank? }
end.compact
end

# This method is likely to change post-MVP. Stakeholders need to see all available data for testing.
def more_info?(metadata)
if metadata['citation'] || metadata['dates'] || metadata['identifiers'] || metadata['languages'] ||
metadata['format'] || metadata['locations'] || metadata['notes'] || metadata['provider'] ||
metadata['publicationInformation']
true
else
false
end
def render_subfield(subfield)
# Date ranges are handled differently than other subfields
return ("kind: #{subfield['kind']}; range: " + date_range(subfield['range'])) if subfield['range'].present?

subfield.map { |key, value| "#{key}: #{value}" }.join('; ')
end

def source_metadata_available?(links)
Expand All @@ -131,17 +134,6 @@ def source_metadata_link(links)
links.select { |link| link['kind'] == 'Download' && link['text'] == 'Source Metadata' }.first['url']
end

# This method is not currently in use, but it may become useful later. Stakeholders need to see all available data
# for testing.
def places(locations)
return if locations.blank?

place_names = locations.select { |location| location['kind'] == 'Place Name' }
return if place_names.blank?

place_names.map { |place| place['value'] }
end

private

def render_kind_value(list)
Expand All @@ -167,21 +159,4 @@ def render_list(list)

"<ul>#{render_list_items(list)}</ul>"
end

def return_relevant_dates(dates, kind)
return if dates.blank? || dates&.none? { |date| date['kind'] == kind }

relevant_dates = dates.select { |date| date['kind'] == kind }
relevant_dates&.map do |date|
if date['range'].present?
if date['range']['lte'] == date['range']['gte']
date['range']['lte']
else
"#{date['range']['gte']}-#{date['range']['lte']}"
end
else
date['value']
end
end&.uniq&.join('; ')
end
end
51 changes: 0 additions & 51 deletions app/views/record/_more_info.html.erb

This file was deleted.

97 changes: 97 additions & 0 deletions app/views/record/_more_info_geo.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
<h3 class="section-title">More information</h3>

<ul class="list-moreinfo">
<!-- Add publishers when the data is available -->

<% if metadata['alternateTitles'].present? %>
<li><strong>Alternate titles:</strong>
<ul>
<% parse_nested_field(metadata['alternateTitles']).each do |subfield| %>
<li><%= render_subfield(subfield) %></li>
<% end %>
</ul>
</li>
<% end %>

<% if metadata['dates'].present? %>
<li><strong>Dates:</strong>
<ul>
<% parse_nested_field(metadata['dates']).each do |subfield| %>
<li><%= render_subfield(subfield) %></li>
<% end %>
</ul>
</li>
<% end %>

<% if metadata['contributors'].present? %>
<li><strong>Contributors:</strong>
<ul>
<% parse_nested_field(metadata['contributors']).each do |subfield| %>
<li><%= render_subfield(subfield) %></li>
<% end %>
</ul>
</li>
<% end %>

<% if metadata['locations'].present? %>
<li><strong>Locations:</strong>
<ul>
<% parse_nested_field(metadata['locations']).each do |subfield| %>
<li><%= render_subfield(subfield) %></li>
<% end %>
</ul>
</li>
<% end %>

<% if metadata['notes'].present? %>
<li><strong>Notes:</strong>
<ul>
<% parse_nested_field(metadata['notes']).each do |subfield| %>
<li><%= render_subfield(subfield) %></li>
<% end %>
</ul>
</li>
<% end %>

<% if metadata['provider'].present? %>
<li><strong>Provider:</strong> <%= metadata['provider'] %></li>
<% end %>

<% if metadata['citation'].present? %>
<li><strong>Citation:</strong> <%= metadata['citation'] %></li>
<% end %>

<% if metadata['format'].present? %>
<li><strong>Format:</strong> <%= metadata['format'] %></li>
<% end %>

<% if metadata['languages'].present? %>
<li><strong>Languages:</strong>
<ul>
<% metadata['languages'].each do |language| %>
<li><%= language %></li>
<% end %>
</ul>
</li>
<% end %>

<% if metadata['links'].present? %>
<li><strong>Links:</strong>
<ul>
<% parse_nested_field(metadata['links']).each do |subfield| %>
<li><%= render_subfield(subfield) %></li>
<% end %>
</ul>
</li>
<% end %>

<% if metadata['rights'].present? %>
<li><strong>Rights:</strong>
<ul>
<% parse_nested_field(metadata['rights']).each do |subfield| %>
<li><%= render_subfield(subfield) %></li>
<% end %>
</ul>
</li>
<% end %>
</ul>
6 changes: 3 additions & 3 deletions app/views/record/_record_geo.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,13 @@
<h3 class="section-title">Subjects</h3>
<ul>
<% @record['subjects'].each do |subject| %>
<li><%= subject['value'].join(';' ) %></li>
<li><%= subject['value'].join('; ') %></li>
<% end %>
</ul>
<% end %>

<% if more_info?(@record) %>
<%= render partial: 'more_info', locals: { metadata: @record } %>
<% if more_info_geo?(@record) %>
<%= render partial: 'more_info_geo', locals: { metadata: @record } %>
<% end %>

<div class="record-access-links">
Expand Down
Loading

0 comments on commit 9cb4da5

Please sign in to comment.