spree/spree-product-assembly

View on GitHub
app/views/spree/products/show/_parts.html.erb

Summary

Maintainability
Test Coverage
<% if @product.assemblies_parts.any? %>
  <div class="columns col-lg-12">
    <h6><%= Spree.t(:parts_included) %></h6>

    <% @product.variants_or_master.each do |variant| %>
      <ul id="products" class="inline product-listing list-unstyled assemblies_variant assemblies_for_variant_<%= variant.id %>" data-hook style='display:none;'>
        <% variant.parts_variants.includes(:part).each do |part_variant| %>
          <%- part = part_variant.part %>

          <li id="product_<%= part.product.id %>" class="columns three <%= cycle("alpha", "secondary", "", "omega secondary") %>" data-hook="products_list_item" itemscope itemtype="http://schema.org/Product">
            <div class="product-image">
              <%= link_to small_image(part.product, itemprop: "name"), part.product %>
            </div>
            <%= link_to truncate(part.product.name, length: 50), part.product, class: 'info', itemprop: "name", title: part.product.name %>

            <%- if !part.in_stock? && !part_variant.variant_selection_deferred? %>
              <%- if part.is_backorderable? %>
                <div class="on-backorder"><%= Spree.t(:backorderable) %></div>
              <%- else %>
                <div class="out-of-stock"><%= Spree.t(:out_of_stock) %></div>
              <%- end %>
            <%- end %>

            <%- if part_variant.variant_selection_deferred? %>
              <div class="variant-selection-deferred">
                <%- product = part.product %>
                <%= label_tag "options_selected_variants_#{part.id}", Spree.t(:variant) %>

                <%- opts = product.variants.map { |v| [v.options_text, v.id] } %>
                <%- opts_disabled = product.variants.each_with_object([]) { |v, o| o << v.id if !v.in_stock? && !v.is_backorderable? } %>

                <%= select_tag "options[selected_variants][#{part.id}]", options_for_select(opts, disabled: opts_disabled)%>
              </div>
            <%- end %>
          </li>
        <% end %>
      </ul>
    <% end %>
  </div>
<% end %>