From 5970fae4fa3a5ccd0c27682a89fd76ae4b2c1c0a Mon Sep 17 00:00:00 2001 From: Seth Call Date: Tue, 5 May 2015 09:22:15 -0500 Subject: [PATCH] * VRFS-3188 - sort instrument appropriately --- web/Gemfile | 1 + .../javascripts/jam_track_screen.js.coffee | 19 ++++++++++++++++++- web/app/views/api_jam_tracks/show.rabl | 2 +- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/web/Gemfile b/web/Gemfile index 8aa825f40..a48fd5e57 100644 --- a/web/Gemfile +++ b/web/Gemfile @@ -99,6 +99,7 @@ group :development, :test do gem 'factory_girl_rails', '4.1.0' # in dev because in use by rake task gem 'database_cleaner', '1.3.0' #in dev because in use by rake task gem 'teaspoon' + gem 'teaspoon-jasmine' end group :unix do gem 'therubyracer' #, '0.11.0beta8' diff --git a/web/app/assets/javascripts/jam_track_screen.js.coffee b/web/app/assets/javascripts/jam_track_screen.js.coffee index 3a56a2572..df5e488ff 100644 --- a/web/app/assets/javascripts/jam_track_screen.js.coffee +++ b/web/app/assets/javascripts/jam_track_screen.js.coffee @@ -222,14 +222,31 @@ context.JK.JamTrackScreen=class JamTrackScreen @renderJamtracks(@currentData) false + computeWeight: (jam_track_track, instrument) => + weight = switch + when jam_track_track.track_type == 'Master' then 0 + when jam_track_track.instrument?.id == instrument then 1 + jam_track_track.position + else 10000 + jam_track_track.position + renderJamtracks:(data) => @currentData = data that = this + for jamtrack in data.jamtracks jamtrackExpanded = this.expanded==jamtrack.id trackRow = _.clone(jamtrack) trackRow.track_cnt = jamtrack.tracks.length - trackRow.tracks = [] + trackRow.tracks = [] + + # if an instrument is selected by the user, then re-order any jam tracks with a matching instrument to the top + instrument = @instrument.val() + if instrument? + jamtrack.tracks.sort((a, b) => + aWeight = @computeWeight(a, instrument) + bWeight = @computeWeight(b, instrument) + return aWeight - bWeight + ) + for track in jamtrack.tracks trackRow.tracks.push(track) if track.track_type=='Master' diff --git a/web/app/views/api_jam_tracks/show.rabl b/web/app/views/api_jam_tracks/show.rabl index e616306e2..028180632 100644 --- a/web/app/views/api_jam_tracks/show.rabl +++ b/web/app/views/api_jam_tracks/show.rabl @@ -15,7 +15,7 @@ node :purchased do |item| end child(:jam_track_tracks => :tracks) { - attributes :id, :part, :instrument, :track_type + attributes :id, :part, :instrument, :track_type, :position node do |track| {