diff --git a/web/app/assets/javascripts/jam_track_screen.js.coffee b/web/app/assets/javascripts/jam_track_screen.js.coffee index c2b699e84..f62125cd3 100644 --- a/web/app/assets/javascripts/jam_track_screen.js.coffee +++ b/web/app/assets/javascripts/jam_track_screen.js.coffee @@ -20,9 +20,8 @@ context.JK.JamTrackScreen=class JamTrackScreen @currentPage = 0 @next = null @currentQuery = this.defaultQuery() - @expanded = false - @expanded = [] - + @expanded = null + beforeShow:(data) => this.setFilterFromURL() this.refresh() @@ -174,18 +173,25 @@ context.JK.JamTrackScreen=class JamTrackScreen @screen.find('.jamtrack-detail-btn').on 'click', this.toggleExpanded # @screen.find('.jamtrack-preview').each (index, element) => # new JK.JamTrackPreview(data.app, $element, jamTrack, track, {master_shows_duration: true}) - + + rerenderJamtracks:() => + if @currentData? + @clearResults() + @renderJamtracks(@currentData) + false + renderJamtracks:(data) => + @currentData = data that = this for jamtrack in data.jamtracks - jamtrackExpanded = jamtrack.id in this.expanded + jamtrackExpanded = this.expanded==jamtrack.id counter = 0 - newTrack = $.extend(jamtrack) - newTrack.tracks = [] + trackRow = $.extend(jamtrack) + trackRow.tracks = [] + trackRow.trackCnt = jamtrack.tracks.count for track in jamtrack.tracks - continue if track.track_type=='Master' - if counter++ < 2 || jamtrackExpanded - newTrack.tracks.push(track) + if track.track_type != 'Master' + trackRow.tracks.push(track) if track.track_type=='Master' track.instrument_desc = "Master" else @@ -193,21 +199,30 @@ context.JK.JamTrackScreen=class JamTrackScreen if track.instrument? if track.instrument.id in instrument_logo_map inst = instrument_logo_map[track.instrument.id].asset - newTrack.instrument_desc = track.instrument.description - newTrack.instrument_url = inst + track.instrument_desc = track.instrument.description + track.instrument_url = inst if track.part != '' - newTrack.instrument_desc += ' (' + track.part + ')' + track.instrument_desc += ' (' + track.part + ')' options = - jamtrack: newTrack + jamtrack: trackRow expanded: jamtrackExpanded - + @logger.debug "Creating template with options", options @jamtrackItem = $(context._.template($('#template-jamtrack').html(), options, variable: 'data')) that.renderJamtrack(@jamtrackItem, jamtrack) this.registerEvents() + renderJamtrack:(jamtrackElement, jamTrack) => + @content.append jamtrackElement + + if this.expanded==jamTrack.id + for track in jamTrack.tracks + trackRow = jamtrackElement.find("[jamtrack-track-id='#{track.id}']") + previewElement = trackRow.find(".jamtrack-preview") + new JK.JamTrackPreview(@app, previewElement, jamTrack, track, {master_shows_duration: false}) + showJamtrackDescription:(e) => e.preventDefault() @description = $(e.target).parent('.detail-arrow').next() @@ -220,24 +235,14 @@ context.JK.JamTrackScreen=class JamTrackScreen e.preventDefault() this.logger.debug("toggleExpanded", e) jamtrackRecord = $(e.target).parents('.jamtrack-record') - this.logger.debug("jamtrackRecord", jamtrackRecord) jamTrackId = jamtrackRecord.attr("jamtrack-id") - if jamTrackId in this.expanded - this.expanded = this.expanded.filter (id) -> id isnt jamTrackId + this.logger.debug("jamtrackRecord", jamTrackId, jamtrackRecord) + if this.expanded==jamTrackId + this.expanded = null else - this.expanded.push jamTrackId - this.refresh - false + this.expanded = jamTrackId + this.rerenderJamtracks() - renderJamtrack:(jamtrackElement, jamTrack) => - @content.append jamtrackElement - - for track in jamTrack.tracks - trackRow = jamtrackElement.find("[jamtrack-track-id='#{track.id}']") - previewElement = trackRow.find(".jamtrack-preview") - new JK.JamTrackPreview(@app, previewElement, jamTrack, track, {master_shows_duration: true}) - - initialize:() => screenBindings = 'beforeShow': this.beforeShow