Skip to content

Commit

Permalink
WIP: display holdings-level availablity status (if present) on item s…
Browse files Browse the repository at this point in the history
…how pages. Closes TD-1336.

- This change accommodates Duke records (post-Alma migration) where availability status is at holdings instead of item level
- Also suppresses display of the "status" label if the value is blank.
  • Loading branch information
seanaery committed Sep 9, 2024
1 parent 2009645 commit ab9ffd0
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 34 deletions.
3 changes: 2 additions & 1 deletion app/views/catalog/_items_section.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@
locals: { document: document,
loc_b: loc_b,
loc_n: loc_n,
loc_b_header_level: loc_b_header_level } %>
loc_b_header_level: loc_b_header_level,
holdings_data: item_data['holdings'] } %>
</div>

<% # --- HOLDINGS SUMMARIES WRAPPER --- %>
Expand Down
32 changes: 17 additions & 15 deletions app/views/catalog/_items_section_item.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,23 @@
</dl>
</div>
<div class="<%= status_wrapper_class(action: action_name) %> status-wrapper" <%= assign_item_id_as_id(item) %>>
<dl>
<dt><span class='status-badge badge badge-info'><%= t('trln_argon.show.badge.status') %></span></dt>
<dd>
<% available_class = item_availability_display(item) %>
<% due_date = item_due_date(item) %>
<span class="<%= available_class %>">
<%= render partial: 'items_section_item_status', locals: { document: document, loc_b: loc_b, loc_n: loc_n, item: item } %>
<% if !due_date.empty? %>
<span class='due-date'><%= due_date %></span>
<% end %>
</span>
</dd>
</dl>
</div>
<% if item['status'].present? %>
<div class="<%= status_wrapper_class(action: action_name) %> status-wrapper" <%= assign_item_id_as_id(item) %>>
<dl>
<dt><span class='status-badge badge badge-info'><%= t('trln_argon.show.badge.status') %></span></dt>
<dd>
<% available_class = item_availability_display(item) %>
<% due_date = item_due_date(item) %>
<span class="<%= available_class %>">
<%= render partial: 'items_section_item_status', locals: { document: document, loc_b: loc_b, loc_n: loc_n, item: item } %>
<% if !due_date.empty? %>
<span class='due-date'><%= due_date %></span>
<% end %>
</span>
</dd>
</dl>
</div>
<% end %>
<% if item_notes_display(item).present? %>
Expand Down
54 changes: 38 additions & 16 deletions app/views/catalog/_items_section_location.html.erb
Original file line number Diff line number Diff line change
@@ -1,21 +1,43 @@
<%= content_tag(loc_b_header_level) do %>
<% # --- display broad location --- %>
<% if loc_b.present? %>
<% broad_location_display = map_argon_code(document.record_owner, 'loc_b', loc_b) %>
<span class='location loc-broad loc_b__<%= loc_b %>'>
<%= broad_location_display %>
</span>
<% end %>

<% # --- display narrow location --- %>
<% if loc_n.present? %>
<% narrow_loc = map_argon_code(document.record_owner, 'loc_n', loc_n) %>
<% if narrow_loc.nil? %>
<% narrow_loc = loc_n %>
<div class="col flex-grow-1">
<%= content_tag(loc_b_header_level) do %>
<% # --- display broad location --- %>
<% if loc_b.present? %>
<% broad_location_display = map_argon_code(document.record_owner, 'loc_b', loc_b) %>
<span class='location loc-broad loc_b__<%= loc_b %>'>
<%= broad_location_display %>
</span>
<% end %>
<% # is loc_n different and not empty? %>
<% if narrow_loc != broad_location_display && narrow_loc != '' %>
<span class='location loc-narrow loc_n__<%= loc_n %>'> &mdash; <%= narrow_loc %></span>
<% # --- display narrow location --- %>
<% if loc_n.present? %>
<% narrow_loc = map_argon_code(document.record_owner, 'loc_n', loc_n) %>
<% if narrow_loc.nil? %>
<% narrow_loc = loc_n %>
<% end %>
<% # is loc_n different and not empty? %>
<% if narrow_loc != broad_location_display && narrow_loc != '' %>
<span class='location loc-narrow loc_n__<%= loc_n %>'> &mdash; <%= narrow_loc %></span>
<% end %>
<% end %>
<% end %>
</div>
<% location_holdings = holdings_data.first %>
<% holdings_availability = location_holdings.dig('status') %>
<% available_class = item_availability_display(location_holdings) %>
<% if holdings_availability.present? %>
<div class="<%= status_wrapper_class(action: action_name) %> status-wrapper">
<dl>
<dt>
<span class='status-badge badge badge-info'><%= t('trln_argon.show.badge.status') %></span>
</dt>
<dd>
<span class="<%= available_class %>">
<%= holdings_availability %>
</span>
</dd>
</dl>
</div>
<% end %>
4 changes: 2 additions & 2 deletions lib/trln_argon/view_helpers/items_section_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ def availability_class
end

def location_header_class
'location-header col-lg-12'
'location-header col d-lg-flex flex-grow-1 no-gutters'
end

def institution_location_header_class
Expand All @@ -45,7 +45,7 @@ def item_availability_display(item)
case item['status']
when /^available/i
'item-available'
when /^checked out/i, /\blost\b/i, /^missing/i
when /^checked out/i, /^unavailable/i, /\blost\b/i, /^missing/i
'item-not-available'
when /(?:in-)?library use only/i
'item-library-only'
Expand Down

0 comments on commit ab9ffd0

Please sign in to comment.