sudara/alonetone

View on GitHub
app/views/playlists/_playlist.html.erb

Summary

Maintainability
Test Coverage
<%= link_to playlist_cover(@playlist, variant: :playlist_card),
  user_playlist_path(@playlist.user, @playlist), class: 'small_cover', data: { "playlist-target": "smallCover", "turbo-frame": "playlist-track" }, style: ('display:none;' unless @asset) %>
<h1 class="<%= 'cover' unless @asset %>">
  <%= @playlist.title %>
</h1>
<h2>
  <span class="by">by</span> <%= link_to @user.name, user_home_path(@user) %>   <% if authorized? %>
  <span class="parentheses">(</span> <%= link_to edit_user_playlist_path(@playlist.user, @playlist),
    class: 'edit_playlist', :title => 'edit this playlist' do %>
    edit
  <% end %> <span class="parentheses">)</span>
<% end %>
</h2>

<ul class="tracklist">
<% @playlist.tracks.each do |track| %>
  <li data-controller="playlist-track-playback"
    data-action="popstate@window->playlist-track-playback#popTrack
          big-play:connected@window->playlist-track-playback#connectBigPlay
          big-play:togglePlay@window->playlist-track-playback#togglePlay
          big-play:seek@window->playlist-track-playback#seek
      track:play->playlist-track-playback#play
      track:whilePlaying->playlist-track-playback#whilePlaying
      track:pause->playlist-track-playback#pause
      track:ended->playlist-track-playback#stop
      track:registerListen->playlist-track-playback#registerListen"
        data-stitches-track-id="<%= track.id %>"
    data-playlist-track-playback-track-id-value="<%= track.id %>"
    class="stitches_track <%= ' active' if first_active_track?(track, @asset) %>">

  <!-- Play button automagically plays AND changes to relevant track details  -->
  <%= link_to user_show_track_in_playlist_path(@user, @playlist, track.asset, format: :mp3),
    class: 'play_button stitches_play', data: { "playlist-track-playback-target": "play", "action": "playlist-track-playback#selectTrack", "turbo-frame": "playlist-track", "turbo-action": "advance" } do %>
    <i class="icon_play"></i>
  <% end %>

  <!-- Track title just switches track details-->
  <%= link_to user_show_track_in_playlist_path(@user, @playlist, track.asset),
     class: 'position_name_time', data: { 'playlist-track-playback-target': "loadTrack", "action": "playlist-track-playback#selectTrack", "turbo-frame": "playlist-track", "turbo-action": "advance" } do %>
    <span class="track_position">
      <%= "%02d" % track.position %>.
    </span>
    <span class="track_name">
      <%= track.name %>
    </span>
    <span class='time_text'><%= track.asset.length %></span>
  <% end %>
  </li>
<% end %>
</ul>

<div class="sidebar_downloads"
  data-playlist-target="sidebarDownloads"
  style="<%= 'display:none' unless @asset %>">
  <ul class="downloads_links">
  </ul>

  <ul class="external_links">
    <% [:link1, :link2, :link3].collect do |link| %>
      <% if valid_link = @playlist.send(link) %>
        <% if external_link_for(valid_link) %>
        <li>
          <%= external_link_for(valid_link) %>
        </li>
        <% end %>
      <% end %>
    <% end %>
  </ul>
</div>