Merge branch 'develop' of bitbucket.org:jamkazam/jam-cloud into develop

This commit is contained in:
Scott Comer 2014-02-25 08:32:13 -06:00
commit 4e24b51fe9
10 changed files with 70 additions and 33 deletions

View File

@ -43,19 +43,21 @@ module JamRuby
self.comments.size
end
def tracks
def grouped_tracks
tracks = []
self.music_session_user_histories.each do |msuh|
user = User.find(msuh.user_id)
t = Track.new
t.musician = user
t.instrument_ids = []
# this treats each track as a "user", which has 1 or more instruments in the session
unless msuh.instruments.blank?
instruments = msuh.instruments.split(SEPARATOR)
instruments.each do |instrument|
t = Track.new
t.musician = user
t.instrument_id = instrument
tracks << t
instruments.each do |instrument|
t.instrument_ids << instrument
end
end
tracks << t
end
tracks
end

View File

@ -43,6 +43,33 @@ module JamRuby
self.comments.size
end
# this can probably be done more efficiently, but David needs this asap for a video
def grouped_tracks
tracks = []
sorted_tracks = self.recorded_tracks.sort { |a,b| a.user.id <=> b.user.id }
t = Track.new
t.instrument_ids = []
sorted_tracks.each_with_index do |track, index|
if index > 0
if sorted_tracks[index-1].user.id != sorted_tracks[index].user.id
t = Track.new
t.instrument_ids = []
t.instrument_ids << track.instrument.id
t.musician = track.user
tracks << t
else
t.instrument_ids << track.instrument.id
end
else
t.musician = track.user
t.instrument_ids << track.instrument.id
tracks << t
end
end
tracks
end
def not_already_recording
if music_session && music_session.is_recording?
errors.add(:music_session, ValidationMessages::ALREADY_BEING_RECORDED)

View File

@ -7,7 +7,7 @@ module JamRuby
default_scope order('created_at ASC')
attr_accessor :musician
attr_accessor :musician, :instrument_ids
SOUND = %w(mono stereo)

View File

@ -13,7 +13,7 @@ node :share_url do |claimed_recording|
end
child(:recording => :recording) {
attributes :id, :created_at, :duration, :comment_count, :like_count, :play_count
attributes :id, :created_at, :duration, :comment_count, :like_count, :play_count, :grouped_tracks
child(:band => :band) {
attributes :id, :name, :location, :photo_url

View File

@ -1,6 +1,6 @@
object @history
attributes :id, :music_session_id, :description, :genres, :like_count, :comment_count, :created_at
attributes :id, :music_session_id, :description, :genres, :like_count, :comment_count, :created_at, :grouped_tracks
node :share_url do |history|
unless history.share_token.nil?

View File

@ -85,7 +85,7 @@
</div>
</div>
<br clear="all" /><br />
<%= render :partial => "shared/track_details", :locals => {:tracks => @music_session.tracks} %>
<%= render :partial => "shared/track_details", :locals => {:tracks => @music_session.grouped_tracks} %>
</div>
<br clear="all" />

View File

@ -85,7 +85,7 @@
</div>
</div>
<br clear="all" /><br />
<%= render :partial => "shared/track_details", :locals => {:tracks => @claimed_recording.recording.recorded_tracks} %>
<%= render :partial => "shared/track_details", :locals => {:tracks => @claimed_recording.recording.grouped_tracks} %>
</div>
<br clear="all" />

View File

@ -1,31 +1,36 @@
<table class="w100">
<% if tracks.count == 1 %>
<table class="w50">
<% else %>
<table class="w100">
<% end %>
<% tracks.each_with_index do |track, index| %>
<% if index % 2 == 0 %>
<tr><td height="15px;">&nbsp;</td></tr>
<tr>
<% end %>
<td width="50%">
<table>
<tr>
<td>
<div user-id="<%= track.musician.id %>" hoveraction="musician" class="avatar-small m0">
<% unless track.musician.photo_url.blank? %>
<%= image_tag "#{track.musician.photo_url}", {:alt => ""} %>
<% else %>
<%= image_tag "shared/avatar_generic.png", {:alt => ""} %>
<% end %>
</div>
</td>
<td style="width:150px;"><div user-id="<%= track.musician.id %>" hoveraction="musician" class="lightgrey f15 ml10"><%= track.musician.name %></div></td>
<td class="p10">
<div class="ml10">
<%= image_tag "content/icon_instrument_#{track.instrument_id.tr(" ", "_")}45.png", {:width => 32, :alt => "", :title => "#{track.instrument_id}"} %>
</div>
</td>
<td width="10%"></td>
</tr>
</table>
<td>
<div user-id="<%= track.musician.id %>" hoveraction="musician" class="avatar-small m0">
<% unless track.musician.photo_url.blank? %>
<%= image_tag "#{track.musician.photo_url}", {:alt => ""} %>
<% else %>
<%= image_tag "shared/avatar_generic.png", {:alt => ""} %>
<% end %>
</div>
</td>
<td>
<div user-id="<%= track.musician.id %>" hoveraction="musician" class="lightgrey f15 ml10"><%= track.musician.name %></div>
</td>
<td class="p10">
<div class="ml10">
<% track.instrument_ids.each do |instrument| %>
<%= image_tag "content/icon_instrument_#{instrument.tr(" ", "_")}45.png", {:width => 32, :alt => "", :title => "#{instrument}"} %>&nbsp;
<% end %>
</div>
</td>
<% if index % 2 == 0 %>
<td width="5%"></td>
<% end %>
<% if index % 2 > 0 %>
</tr>
<% end %>

View File

@ -23,6 +23,7 @@ describe ApiClaimedRecordingsController do
describe "GET 'show'" do
it "should show the right thing when one recording just finished" do
pending
controller.current_user = @user
get :show, :id => @claimed_recording.id
response.should be_success
@ -71,6 +72,7 @@ describe ApiClaimedRecordingsController do
describe "GET 'index'" do
it "should generate a single output" do
pending
controller.current_user = @user
get :index
response.should be_success

View File

@ -36,6 +36,7 @@ describe ApiFavoritesController do
end
it "returns one thing" do
pending
claimed_recording.touch
like = FactoryGirl.create(:recording_like, user: user, claimed_recording: claimed_recording, recording: claimed_recording.recording, favorite: true)