roseweixel/lacquer-lover

View on GitHub
app/views/users/show.html.erb

Summary

Maintainability
Test Coverage
<div class="well">
    <legend id="top" style="font-size: 2.5em;">
        <%= image_tag @user.image || 'placeholder-avatar.png', size: '50x50' %> 
        <%= @user.name %>
        <span class="pull-right" style="font-size: .5em;">Lacquer Lover Since:<br><%= @user.created_at.to_date.strftime("%B %e, %Y") %> (<strong><%= time_ago_in_words(@user.created_at) %></strong> ago)</span>
    </legend>
    <div class="row" id="show"><i class="fa fa-caret-square-o-down pull-right" style="font-size: 20px; margin-top:-15px;" title="show dashboard"></i></div>
    <div class="user-dashboard">
        <% if (@user != current_user) && (!current_user.accepted_friends.include?(@user)) %>
            <%= link_to "Add Friend", new_friendship_path(friend_id: @user) %><br>
        <% end %>

        <div class="row">
            <!-- PUBLIC PROFILE -->
            <div class="col-sm-4" id="public-profile">
                <h3>Lacquers: <%= @user.lacquers.count %></h3>
                <h3>Friends: <%= @user.accepted_friends.count %></h3>
                <% if !@user.lacquers_added_by.empty? %>
                    <% if @user == current_user %>
                        <h3>Lacquers Added by You: <%= @user.lacquers_added_by.count %></h3>
                    <% else %>
                        <h3>Lacquers Added by <%= @user.first_name %>: <%= @user.lacquers_added_by.count %></h3>
                    <% end %>
                    <ul>
                    <% @user.lacquers_added_by.each do |lacquer| %>
                        <li><%= link_to lacquer.name, lacquer_path(lacquer) %> (<%= link_to lacquer.brand.name, brand_path(lacquer.brand) %>)</li>
                    <% end %>
                    </ul>
                <% end %>

                <% if @user.owned_transactions %>
                    <% if @user == current_user %>
                        <h3>Your Loan Count: 
                    <% else %>
                        <h3><%= @user.first_name %>’s Loan Count: 
                    <% end %>
                    <%= @user.owned_transactions.count %></h3>
                <% end %>

                <% if @user.requested_transactions %>
                    <% if @user == current_user %>
                        <h3>Your Borrow Count: 
                    <% else %>
                        <h3><%= @user.first_name %>’s Borrow Count: 
                    <% end %>
                    <%= @user.requested_transactions.count %></h3>
                <% end %>
            </div>
            <!-- END OF PUBLIC PROFILE -->

            <div class="col-sm-3">
          <% if @user == current_user || @user.accepted_friends.include?(current_user) %>
            <h3>Friends 
            <% if @user == current_user %>
                <%= link_to "Invite Friends!", new_invite_path, class: "btn btn-xs btn-primary grey-rounded", id:"new-invite-link" %>
                <a data-toggle="modal" data-target="#inviteModal" style="display: none;" id="hidden-invite-modal-link"></a>
                <span id="hidden_friend_count" style="display: none;">
                <%= render 'count', count: @user.accepted_friends.count %>
                </span>
            <% end %>
            </h3> 
            <div class="profile-section">
              <ul class='list-group' id="accepted-friends">
              <%= render 'friends', user: @user %>
              </ul>
            </div>
          <% end %>
          
          <h3>Favorites</h3>
          <div class="profile-section">
          <% if @user.favorited_lacquers.count > 0 %>
            <ul class="list-group fave">
            <% @user.favorited_lacquers.each do |favorite| %>
              <li class="fave" style="font-size: 20px;">
                <%= link_to favorite.name, lacquer_path(favorite) %>
              </li>
            <% end %>
            </ul>
          <% end %>
          </div>
        </div>


            <!-- BEGINNING OF YOUR ALERTS & FRIENDSHIPS (IF YOU ARE THE CURRENT USER) -->
            <% if @user == current_user %>
                <div id="live-notifications" class="col-sm-5">
                    <%= render 'live_notifications', user: @user %>
                </div>
            <% end %>

        </div>
        <div class="row" id="hide"><i class="fa fa-caret-square-o-up pull-right" style="font-size: 20px; margin-bottom:-15px;" title="hide dashboard"></i></div>
    </div>
</div>
<!-- END OF YOUR ALERTS (IF YOU ARE THE CURRENT USER) -->
    

<% if (@user == current_user) || (current_user.accepted_friends.include?(@user)) %>
    <section style="margin-top: 50px;">
    <!-- <div class="page-header"> -->
        <% if @user == current_user %>
            <legend style="font-size: 2em;">Your Lacquers</legend>
            <div class="page-header" style="margin-top: 0;">
            <h4><strong>Add a lacquer</strong></h4>
            <div class="dropdown">
              <select id="brand-selection" class="btn-default">
                <option value="hasnt-been-chosen">Choose your brand</option>
                <% Brand.order(:name).each do |brand| %>
                    <option value="<%= brand.name %>"><%= brand.name %></option>
                <% end %>
              </select>
            </div>

            <% Brand.all.each do |brand| %>
                <div class="lacquer-dropdown dropdown btn" id="<%= brand.abbreviation %>-dropdown">
                  <%= form_for @new_user_lacquer, :url => url_for(:controller => 'user_lacquers', :action => 'create'), remote: true do |f| %>
                      <%= f.hidden_field :user_id, value: current_user.id %>

                      <%= f.select(:lacquer_id, brand.lacquers.order(:name).collect {|p| [ p.name, p.id ] } + [ [ 'Other', 'new' ] ], {:prompt => "Select #{brand.name.indefinitize} lacquer"}, :class => "btn-default") %>

                      <div class="btn-group">
                        <button type="button" class="btn btn-default dropdown-toggle main-color-dropdown" data-toggle="dropdown" aria-expanded="false">
                            Select Colors <span class="caret"></span>
                          </button>
                             <ul class="dropdown-menu" role="menu" id="main-color-dropdown" style="padding: 10px;">
                             <div class="row" style="width: 255px;">
                             <%= f.collection_check_boxes :color_ids, Color.all.order(:name), :id, :name do |b| %>
                                 <div class="col-xs-6">
                                  <%= b.check_box %> <%= b.label %>
                              </div>
                            <% end %>
                            </div>
                        </ul>
                    </div>
                    <div class="btn-group">
                        <button type="button" class="btn btn-default dropdown-toggle main-finish-dropdown" data-toggle="dropdown" aria-expanded="false">
                            Select Finishes <span class="caret"></span>
                          </button>
                             <ul class="dropdown-menu" role="menu" id="main-finish-dropdown" style="padding: 10px;">
                             <div class="row" style="width: 335px;">
                        <%= f.collection_check_boxes :finish_ids, Finish.all.order(:description), :id, :description do |b| %>
                                <div class="col-xs-6">
                                  <%= b.check_box %> <%= b.label %>
                                  </div>
                            <% end %>
                            </div>
                        </ul>
         
                    </div>

                    <%= f.submit value: "add this lacquer", :class => "add-lacquer btn disabled" %>
                  <% end %>
                </div>
            <% end %>

            <!-- ADD "OTHER" LACQUER -->
            <% Brand.all.each do |brand| %>
                <% new_lacquer = brand.lacquers.new %>
            <div class="other-lacquer" id="<%= brand.abbreviation %>">
                <%= form_for new_lacquer, :url => url_for(:controller => 'lacquers', :action => 'create'), remote: true do |f| %>
                    <%= f.label :name %>
                    <%= f.text_field :name, placeholder: "lacquer name", :required => true %>

                <%= fields_for new_lacquer.user_lacquers.new do |user_lacquer_form| %>
                        <div class="btn-group">
                        <button type="button" class="btn btn-default dropdown-toggle color-dropdown" data-toggle="dropdown" aria-expanded="false">
                            Select Colors <span class="caret"></span>
                          </button>
                             <ul class="dropdown-menu" role="menu" id="color-dropdown" style="padding: 10px;">
                             <div class="row" style="width: 255px;">
                             <%= user_lacquer_form.collection_check_boxes :color_ids, Color.all.order(:name), :id, :name do |b| %>
                                 <div class="col-xs-6">
                                  <%= b.check_box %> <%= b.label %>
                              </div>
                            <% end %>
                            </div>
                        </ul>
                    </div>
                    <div class="btn-group">
                        <button type="button" class="btn btn-default dropdown-toggle finish-dropdown" data-toggle="dropdown" aria-expanded="false">
                            Select Finishes <span class="caret"></span>
                          </button>
                             <ul class="dropdown-menu" role="menu" id="finish-dropdown" style="padding: 10px;">
                             <div class="row" style="width: 335px;">
                        <%= user_lacquer_form.collection_check_boxes :finish_ids, Finish.all.order(:description), :id, :description do |b| %>
                                <div class="col-xs-6">
                                  <%= b.check_box %> <%= b.label %>
                                  </div>
                            <% end %>
                            </div>
                        </ul>
         
                    </div>
                    <div class="add-new-lacquer-to-collection">
                                 <%= user_lacquer_form.label "Add this lacquer to my collection." %>
                            <%= check_box_tag :user_id, current_user.id, required: true %>
                    <% end %>    
                    </div>
                    <%= f.hidden_field :brand_id, value: new_lacquer.brand_id %>
                    <%= f.hidden_field :user_added_by_id, value: current_user.id %>
                        <%= f.submit "Create Lacquer", class:"btn btn-primary" %>
                    <% end %>
                </div>
            <% end %>
            <!-- END OF ADD "OTHER" LACQUER -->
            </div>
        <!-- ***** END OF ADD OTHER LACQUERS ***** -->     

        <% else %>
            <legend style="font-size: 2em;"><%= @user.first_name %>'s Lacquers</legend>
        <% end %>
    <!-- </div> -->
    <div class="row well" id="filter-buttons" style="padding: 10px; margin: 5px 0; text-align: center;">
        <% brands = @user.lacquers.collect {|l| l.brand.name}.uniq %>
        <% colors = @user.lacquers.collect {|l| l.color_tags}.flatten.uniq %>
        <% finishes = @user.lacquers.collect {|l| l.finish_tags}.flatten.uniq %>
        <% attributes = {"brands" => brands, "colors" => colors, "finishes" => finishes} %>
        <!-- <div class="row" style="text-align:center;"> -->
        <% attributes.each do |attribute, items| %>
            <div class="<%=attribute%>-buttons col-xs-4">
            <% if !items.empty? %>
              <% items.each do |item| %>
                <%= link_to "#{item}", "#", :class => "btn btn-xs btn-default #{attribute} grey-rounded", :id => "#{item}", :style => "margin: 2px; max-width: 100%; white-space: normal;" %>
              <% end %>
            <% else %>
                <h6>No <%= attribute.singularize %> tags in <%= @user.first_name %>'s collection.</h6>
            <% end %>
          </div>
        <% end %>
        <!-- </div> -->
    </div>
    <div class="table-responsive">
    <table class="table table-striped table-hover" id="user-lacquer-collection">
        <thead>
            <tr class="selected color-selected finish-selected">
                <th>Swatch</th>
                <th>Brand</th>
                <th></th>
                <th>Name</th>
                <th>Colors</th>
                <th>Finishes</th>
                <% if @user == current_user %>
                    <th>Loanable?</th>
                    <!-- <th>Giftable?</th> -->
                    <th>On Loan?</th>
                    <th>Edit/Remove</th>
                <% else %>
                    <% if @user == current_user %>
                    <th>Loan Requests</th>
                    <% else %>
                    <th>Borrow/Buy</th>
                    <% end %>
                <% end %>
            </tr>
        </thead>
        <tbody>
        <% @user.user_lacquers.each do |user_lacquer| %>
          <tr class="user-lacquer-partial" lacquer-id="<%= user_lacquer.lacquer.id %>" user-lacquer-id="<%= user_lacquer.id %>" id="<%=user_lacquer.id%>">
          </tr>
        <% end %>
        </tbody>
    </table>
    </div>
    </section>
    
<p style="float: right; font-size: 2em;"><a href='#top'><i class="fa fa-caret-square-o-up fa-4" title="scroll up"></i></a></p>
<% end %>

<% if @user == current_user %>
    <%= link_to "Export collection as JSON", user_path( id: @user.id, format: :json ), class: "btn btn-xs btn-info" %>
<% end %>