VRFS-2998 : Fix runaway previews by only allowing one expanded item at a time.

This commit is contained in:
Steven Miers 2015-04-10 15:56:33 -05:00
parent d21a88a5de
commit 31a8729f71
1 changed files with 35 additions and 30 deletions

View File

@ -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