VRFS-2998 : Fix runaway previews by only allowing one expanded item at a time.
This commit is contained in:
parent
d21a88a5de
commit
31a8729f71
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue