Basic setting playlist
This commit is contained in:
parent
4ade7fa77f
commit
9a79ae0527
|
@ -187,6 +187,25 @@ class window.Player
|
|||
if _session.getUser().lastfm_username
|
||||
_session.query '/lastfm/scrobble?r=' +Math.random(), track
|
||||
false
|
||||
|
||||
emptyPlaylist: ->
|
||||
$('.playlist li').remove()
|
||||
$('#jplayer').jPlayer 'clearMedia'
|
||||
$('.player .now-playing').text 'Add some music to playlist'
|
||||
$('.player .loaded, .player .played').width 0
|
||||
false
|
||||
|
||||
setPlaylist: (data) ->
|
||||
this.emptyPlaylist()
|
||||
tracks = []
|
||||
for item in data.playlist_items
|
||||
tracks.push
|
||||
id: item.track.id
|
||||
name: item.track.name
|
||||
artist: item.track.artists[0].name
|
||||
length: item.track.length
|
||||
this.addTracks tracks
|
||||
false
|
||||
|
||||
|
||||
# Player Controls
|
||||
|
@ -216,10 +235,7 @@ $('.repeat, .shuffle').live 'click', ->
|
|||
|
||||
$('.do_empty').live 'click', ->
|
||||
if confirm('Are you sure?')
|
||||
$('.playlist li').remove()
|
||||
$('#jplayer').jPlayer 'clearMedia'
|
||||
$('.player .now-playing').text 'Add some music to playlist'
|
||||
$('.player .loaded, .player .played').width 0
|
||||
_player.emptyPlaylist()
|
||||
false
|
||||
|
||||
# Playlist Actions
|
||||
|
@ -267,3 +283,11 @@ $('.s-add').live 'click', ->
|
|||
_player.addTracks [item]
|
||||
return false
|
||||
false
|
||||
|
||||
$('.set-playlist').live 'click', ->
|
||||
_search.showSpinner()
|
||||
$.get "/playlist/#{$(this).data('playlist-id')}", (playlist) ->
|
||||
_player.setPlaylist playlist
|
||||
_search.hideSpinner()
|
||||
false
|
||||
false
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
class PlaylistController < ApplicationController
|
||||
def data
|
||||
@playlist = Playlist.find_by_id(params[:id])
|
||||
render json: @playlist, include: { playlist_items: { include: { track: { include: { artists: {} }}}}}
|
||||
end
|
||||
end
|
|
@ -1,4 +1,5 @@
|
|||
class Playlist < ActiveRecord::Base
|
||||
belongs_to :user
|
||||
belongs_to :artist
|
||||
has_many :playlist_items
|
||||
end
|
||||
|
|
|
@ -3,6 +3,7 @@ class Artist < ActiveRecord::Base
|
|||
has_many :artist_links, :dependent => :destroy
|
||||
has_many :artist_aliases, :dependent => :destroy
|
||||
has_many :tracks, :through => :track_artists
|
||||
has_many :playlists
|
||||
|
||||
after_initialize :prepare_description
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@ class Track < ActiveRecord::Base
|
|||
belongs_to :album
|
||||
has_many :track_artists
|
||||
has_many :artists, :through => :track_artists
|
||||
@duration
|
||||
has_many :playlist_items
|
||||
|
||||
def duration
|
||||
if self.length
|
||||
|
|
|
@ -11,29 +11,31 @@
|
|||
%p= @artist.desc.html_safe unless @artist.desc.nil?
|
||||
- unless @artist.artist_links.empty?
|
||||
.service-icons
|
||||
%a.foreign-link{ :href => "http://last.fm/artist/#{@artist.name.gsub(" ", "+")}", :target => '_blank' }
|
||||
%a.foreign-link{ href: "http://last.fm/artist/#{@artist.name.gsub(" ", "+")}", target: '_blank' }
|
||||
= image_tag 'services/lastfm.ico'
|
||||
- @artist.artist_links.each do |service|
|
||||
- if ['wikipedia', 'microblog', 'official_homepage', 'social_network', 'youtube'].include?(service.service)
|
||||
%a.foreign-link{ :href => service.url, :target => '_blank' }
|
||||
%a.foreign-link{ href: service.url, target: '_blank' }
|
||||
= image_tag 'services/'+service.service+(service.service == 'official_homepage' ? '.png' : '.ico')
|
||||
|
||||
.row
|
||||
.span7.offset4
|
||||
%h3 Playlists
|
||||
%table.zebra-striped
|
||||
%tr
|
||||
%td
|
||||
%a{ href: "" } Last.fm TOP
|
||||
- unless @artist.playlists.empty?
|
||||
.row
|
||||
.span7.offset4
|
||||
%h3 Playlists
|
||||
%table.zebra-striped
|
||||
%tr
|
||||
- @artist.playlists.each do |playlist|
|
||||
%td
|
||||
%a.set-playlist{ href: "", 'data-playlist-id' => playlist.id }= playlist.name
|
||||
|
||||
- @artist.albums.each do |album|
|
||||
.row.album
|
||||
.span4.columns.art
|
||||
%img{ :src => album.pic_url }
|
||||
%img{ src: album.pic_url }
|
||||
.button-container
|
||||
%a.btn.add-album{ :'data-album-id' => album.id }= I18n.t 'player.add'
|
||||
%a.btn.add-album{ 'data-album-id' => album.id }= I18n.t 'player.add'
|
||||
.span7.columns.tracks
|
||||
%h3{ :'data-album-id' => album.id }
|
||||
%h3{ 'data-album-id' => album.id }
|
||||
= album.name
|
||||
%small= " ("+album.year.to_s+")"
|
||||
%table.zebra-striped.tracklist
|
||||
|
@ -42,4 +44,4 @@
|
|||
%td.song-title= track.name
|
||||
%td.song-duration
|
||||
.s-duration= (track.duration != '0:00' ? track.duration : ' '.html_safe)
|
||||
%span.label.success.s-add{ :'data-album-id' => album.id, :'data-id' => track.id }= I18n.t 'player.add_one'
|
||||
%span.label.success.s-add{ 'data-album-id' => album.id, 'data-id' => track.id }= I18n.t 'player.add_one'
|
||||
|
|
|
@ -15,6 +15,8 @@ Beathaven::Application.routes.draw do
|
|||
match 'track/update_length' => 'track#update_length'
|
||||
match 'track/report' => 'track#report_unavailable'
|
||||
|
||||
match 'playlist/(:id)' => 'playlist#data'
|
||||
|
||||
match 'settings' => 'user#settings'
|
||||
|
||||
match 'artist/autocomplete' => 'last_fm#autocomplete'
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
class AddArtistToPlaylists < ActiveRecord::Migration
|
||||
def change
|
||||
add_column :playlists, :artist_id, :integer
|
||||
end
|
||||
end
|
|
@ -11,7 +11,7 @@
|
|||
#
|
||||
# It's strongly recommended to check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(:version => 20111012064322) do
|
||||
ActiveRecord::Schema.define(:version => 20111126142207) do
|
||||
|
||||
create_table "album_formats", :force => true do |t|
|
||||
t.integer "album_id"
|
||||
|
@ -155,6 +155,7 @@ ActiveRecord::Schema.define(:version => 20111012064322) do
|
|||
t.string "name"
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
t.integer "artist_id"
|
||||
end
|
||||
|
||||
create_table "release_formats", :force => true do |t|
|
||||
|
|
Loading…
Reference in New Issue