app/views/technicals/show.html.erb
<turbo-frame id="techmd">
<% if @techmd.failure? %>
<p>Technical Metadata connection failed: <%= @techmd.failure %></p>
<% elsif @techmd.value!.blank? %>
<p>Technical Metadata not available</p>
<% else %>
<ul class="file-list">
<% @techmd.value!.each do | file_techmd | %>
<li class="file">
<span class="label">File</span><%= file_techmd['filename'] %>
<ul class="metadata-list">
<% file_techmd.reject { |key| %w[filename druid dro_file_parts].include?(key) }.each do |file_techmd_key, file_techmd_value| # rubocop:disable Performance/CollectionLiteralInLoop %>
<li class="metadata">
<span class="label"><%= file_techmd_key %></span>
<% unless file_techmd_value.is_a?(Hash) %>
<%= file_techmd_value %>
<% else %>
<ul class="metadata-list">
<% file_techmd_value.each do |key, value| %>
<li class="metadata">
<span class="label"><%= key %></span><%= value %>
</li>
<% end %>
</ul>
<% end %>
</li>
<% end %>
<% unless file_techmd['dro_file_parts'].nil? %>
<li class="metadata">
<span class="label">File parts</span>
<ul class="file-list">
<% file_techmd['dro_file_parts'].each do | file_part_techmd | %>
<li class="file">
<span class="label">File part</span><%= file_part_techmd['part_id'] %>
<ul class="metadata-list">
<% file_part_techmd.reject { |key| ['part_id'].include?(key) }.each do |file_part_techmd_key, file_part_techmd_value| # rubocop:disable Performance/CollectionLiteralInLoop %>
<li class="metadata">
<span class="label"><%= file_part_techmd_key %></span>
<% unless file_part_techmd_value.is_a?(Hash) %>
<%= file_part_techmd_value %>
<% else %>
<ul class="metadata-list">
<% file_part_techmd_value.each do |key, value| %>
<li class="metadata">
<span class="label"><%= key %></span><%= value %>
</li>
<% end %>
</ul>
<% end %>
</li>
<% end %>
</ul>
</li>
<% end %>
</ul>
</li>
<% end %>
</ul>
</li>
<% end %>
</ul>
<% end %>
</turbo-frame>