diff --git a/ruby/lib/jam_ruby/models/music_session_history.rb b/ruby/lib/jam_ruby/models/music_session_history.rb
index 553c03bac..8bdef9cd8 100644
--- a/ruby/lib/jam_ruby/models/music_session_history.rb
+++ b/ruby/lib/jam_ruby/models/music_session_history.rb
@@ -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
diff --git a/ruby/lib/jam_ruby/models/recording.rb b/ruby/lib/jam_ruby/models/recording.rb
index 313e64297..b22a7021c 100644
--- a/ruby/lib/jam_ruby/models/recording.rb
+++ b/ruby/lib/jam_ruby/models/recording.rb
@@ -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)
diff --git a/ruby/lib/jam_ruby/models/track.rb b/ruby/lib/jam_ruby/models/track.rb
index 0a14457d7..da2cc8cc3 100644
--- a/ruby/lib/jam_ruby/models/track.rb
+++ b/ruby/lib/jam_ruby/models/track.rb
@@ -7,7 +7,7 @@ module JamRuby
default_scope order('created_at ASC')
- attr_accessor :musician
+ attr_accessor :musician, :instrument_ids
SOUND = %w(mono stereo)
diff --git a/web/app/views/api_claimed_recordings/show.rabl b/web/app/views/api_claimed_recordings/show.rabl
index 683c1bed9..e6646003c 100644
--- a/web/app/views/api_claimed_recordings/show.rabl
+++ b/web/app/views/api_claimed_recordings/show.rabl
@@ -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
diff --git a/web/app/views/api_music_sessions/history_show.rabl b/web/app/views/api_music_sessions/history_show.rabl
index 841e427d5..af71bfe73 100644
--- a/web/app/views/api_music_sessions/history_show.rabl
+++ b/web/app/views/api_music_sessions/history_show.rabl
@@ -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?
diff --git a/web/app/views/music_sessions/show.html.erb b/web/app/views/music_sessions/show.html.erb
index 12705cbee..8b5e09c7b 100644
--- a/web/app/views/music_sessions/show.html.erb
+++ b/web/app/views/music_sessions/show.html.erb
@@ -85,7 +85,7 @@
- <%= render :partial => "shared/track_details", :locals => {:tracks => @music_session.tracks} %>
+ <%= render :partial => "shared/track_details", :locals => {:tracks => @music_session.grouped_tracks} %>
diff --git a/web/app/views/recordings/show.html.erb b/web/app/views/recordings/show.html.erb
index 229d6d275..b16b5de25 100644
--- a/web/app/views/recordings/show.html.erb
+++ b/web/app/views/recordings/show.html.erb
@@ -85,7 +85,7 @@
- <%= render :partial => "shared/track_details", :locals => {:tracks => @claimed_recording.recording.recorded_tracks} %>
+ <%= render :partial => "shared/track_details", :locals => {:tracks => @claimed_recording.recording.grouped_tracks} %>
diff --git a/web/app/views/shared/_track_details.html.erb b/web/app/views/shared/_track_details.html.erb
index 284a331d5..7840c43d2 100644
--- a/web/app/views/shared/_track_details.html.erb
+++ b/web/app/views/shared/_track_details.html.erb
@@ -1,31 +1,36 @@
-
-
|
+
+ <% unless track.musician.photo_url.blank? %>
+ <%= image_tag "#{track.musician.photo_url}", {:alt => ""} %>
+ <% else %>
+ <%= image_tag "shared/avatar_generic.png", {:alt => ""} %>
+ <% end %>
+
|
+
+ <%= track.musician.name %>
+ |
+
+
+ <% track.instrument_ids.each do |instrument| %>
+ <%= image_tag "content/icon_instrument_#{instrument.tr(" ", "_")}45.png", {:width => 32, :alt => "", :title => "#{instrument}"} %>
+ <% end %>
+
+ |
+ <% if index % 2 == 0 %>
+ + <% end %> <% if index % 2 > 0 %> |