Merge branch 'develop' of bitbucket.org:jamkazam/jam-cloud into develop

This commit is contained in:
Seth Call 2015-04-08 14:36:48 -05:00
commit 974049f204
10 changed files with 190 additions and 392 deletions

View File

@ -161,16 +161,21 @@ module JamRuby
query = query.where("original_artist=?", options[:artist])
end
if options[:group_artist]
query = query.select("original_artist, array_agg(jam_tracks.id) AS id, MIN(name) AS name, MIN(description) AS description, MIN(recording_type) AS recording_type, MIN(original_artist) AS original_artist, MIN(songwriter) AS songwriter, MIN(publisher) AS publisher, MIN(sales_region) AS sales_region, MIN(price) AS price, MIN(version) AS version, MIN(genre_id) AS genre_id")
query = query.group("original_artist")
query = query.order('jam_tracks.original_artist')
else
query = query.group("jam_tracks.id")
query = query.order('jam_tracks.name')
end
query = query.where("jam_tracks.status = ?", 'Production') unless user.admin
query = query.where("jam_tracks.genre_id = '#{options[:genre]}'") unless options[:genre].blank?
query = query.where("jam_track_tracks.instrument_id = '#{options[:instrument]}'") unless options[:instrument].blank?
query = query.where("jam_tracks.sales_region = '#{options[:availability]}'") unless options[:availability].blank?
query = query.group("jam_tracks.id")
query = query.order('jam_tracks.name')
query = query.where("jam_tracks.sales_region = '#{options[:availability]}'") unless options[:availability].blank?
if query.length == 0
[query, nil]

View File

@ -18,37 +18,28 @@ context.JK.AccountJamTracks = class AccountJamTracks
@screen = $('#account-jamtracks')
beforeShow:() =>
@logger.debug("beforeShow")
rest.getPurchasedJamTracks({})
.done(@populateJamTracks)
.fail(@app.ajaxError);
afterShow:() =>
@logger.debug("afterShow")
populateJamTracks:(data) =>
@logger.debug("populateJamTracks", data)
template = context._.template($('#template-account-jamtrack').html(), {jamtracks:data.jamtracks}, { variable: 'data' })
# template = context._.template($('#template-account-jamtrack').html(), {
# jamtracks: data.jamtracks
# current_user: @userId
# }, variable: 'data')
@logger.debug("TEMPLATE", template)
this.appendJamTracks template
@screen.find('.jamtrack-solo-session').on 'click', @soloSession
@screen.find('.jamtrack-group-session').on 'click', @groupSession
if (data.jamtracks? && data.jamtracks.length > 0)
@screen.find(".no-jamtracks-found").addClass("hidden")
@appendJamTracks context._.template($('#template-account-jamtrack').html(), {jamtracks:data.jamtracks}, { variable: 'data' })
@screen.find('.jamtrack-solo-session').on 'click', @soloSession
@screen.find('.jamtrack-group-session').on 'click', @groupSession
else
@screen.find(".no-jamtracks-found").removeClass("hidden")
appendJamTracks:(template) =>
$('#account-my-jamtracks table tbody').replaceWith template
soloSession:(e) =>
#context.location="client#/createSession"
@logger.debug "BLEH", e
jamRow = $(e.target).parents("tr")
@logger.debug "BLEH2", e, jamRow.data()
@createSession(jamRow.data(), true)
#@logger.debug "BLEH", $(this), $(this).data()
groupSession:(e) =>
#context.location="client#/createSession"
@ -59,7 +50,6 @@ context.JK.AccountJamTracks = class AccountJamTracks
tracks = context.JK.TrackHelpers.getUserTracks(context.jamClient)
if (context.JK.guardAgainstBrowser(@app))
@logger.debug("CRATING SESSION", sessionData.genre, solo)
data = {}
data.client_id = @app.clientId
#data.description = $('#description').val()

View File

@ -20,8 +20,8 @@ context.JK.JamTrackScreen=class JamTrackScreen
@currentPage = 0
@next = null
@currentQuery = this.defaultQuery()
@expanded = false
@expanded = null
beforeShow:(data) =>
this.setFilterFromURL()
this.refresh()
@ -67,10 +67,10 @@ context.JK.JamTrackScreen=class JamTrackScreen
refresh:() =>
@currentQuery = this.buildQuery()
that = this
rest.getJamtracks(@currentQuery).done((response) ->
rest.getJamtracks(@currentQuery).done((response) =>
that.clearResults()
that.handleJamtrackResponse(response)
).fail (jqXHR) ->
).fail (jqXHR) =>
that.clearResults()
that.noMoreJamtracks.show()
that.app.notifyServerError jqXHR, 'Jamtrack Unavailable'
@ -118,7 +118,7 @@ context.JK.JamTrackScreen=class JamTrackScreen
# if we less results than asked for, end searching
@scroller.infinitescroll 'pause'
if @currentPage == 0 and response.jamtracks.length == 0
@content.append '<div class=\'no-jamtracks-msg\'>There\'s no jamtracks.</div>'
@content.append '<div class=\'no-jamtracks-msg\'>No JamTracks found.</div>'
if @currentPage > 0
@noMoreJamtracks.show()
# there are bugs with infinitescroll not removing the 'loading'.
@ -131,6 +131,7 @@ context.JK.JamTrackScreen=class JamTrackScreen
registerInfiniteScroll:() =>
that = this
@scroller.infinitescroll {
behavior: 'local'
navSelector: '#jamtrackScreen .btn-next-pager'
@ -143,10 +144,10 @@ context.JK.JamTrackScreen=class JamTrackScreen
loading:
msg: $('<div class="infinite-scroll-loader">Loading ...</div>')
img: '/assets/shared/spinner.gif'
path: (page) ->
'/api/jamtracks?' + $.param(this.buildQuery())
path: (page) =>
'/api/jamtracks?' + $.param(that.buildQuery())
}, (json, opts) ->
}, (json, opts) =>
this.handleJamtrackResponse(json)
@scroller.infinitescroll 'resume'
@ -156,7 +157,7 @@ context.JK.JamTrackScreen=class JamTrackScreen
addToCartJamtrack:(e) =>
e.preventDefault()
params = id: $(e.target).attr('data-jamtrack-id')
rest.addJamtrackToShoppingCart(params).done((response) ->
rest.addJamtrackToShoppingCart(params).done((response) =>
context.location = '/client#/shoppingCart'
).fail @app.ajaxError
@ -165,33 +166,61 @@ context.JK.JamTrackScreen=class JamTrackScreen
@app.layout.showDialog 'jamtrack-availability-dialog'
registerEvents:() =>
@screen.find('.jamtrack-detail-btn').on 'click', this.showJamtrackDescription
#@screen.find('.jamtrack-detail-btn').on 'click', this.showJamtrackDescription
@screen.find('.play-button').on 'click', this.playJamtrack
@screen.find('.jamtrack-add-cart').on 'click', this.addToCartJamtrack
@screen.find('.license-us-why').on 'click', this.licenseUSWhy
@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 = this.expanded==jamtrack.id
trackRow = _.clone(jamtrack)
trackRow.track_cnt = jamtrack.tracks.length
trackRow.tracks = []
for track in jamtrack.tracks
continue if track.track_type=='Master'
inst = '../assets/content/icon_instrument_default24.png'
if track.instrument.id in instrument_logo_map
inst = instrument_logo_map[track.instrument.id].asset
track.instrument_url = inst
track.instrument_desc = track.instrument.description
if track.part != ''
track.instrument_desc += ' (' + track.part + ')'
if track.track_type != 'Master'
trackRow.tracks.push(track)
if track.track_type=='Master'
track.instrument_desc = "Master"
else
inst = '../assets/content/icon_instrument_default24.png'
if track.instrument?
if track.instrument.id in instrument_logo_map
inst = instrument_logo_map[track.instrument.id].asset
track.instrument_desc = track.instrument.description
track.instrument_url = inst
if track.part != ''
track.instrument_desc += ' (' + track.part + ')'
options =
jamtrack: jamtrack
expanded: that.expanded
jamtrack: trackRow
expanded: jamtrackExpanded
@jamtrackItem = $(context._.template($('#template-jamtrack').html(), options, variable: 'data'))
that.renderJamtrack(@jamtrackItem)
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()
@ -200,13 +229,16 @@ context.JK.JamTrackScreen=class JamTrackScreen
else
@description.hide()
toggleExpanded:() =>
this.expanded = !this.expanded
this.refresh()
renderJamtrack:(jamtrack) =>
@content.append jamtrack
toggleExpanded:(e) =>
e.preventDefault()
jamtrackRecord = $(e.target).parents('.jamtrack-record')
jamTrackId = jamtrackRecord.attr("jamtrack-id")
if this.expanded==jamTrackId
this.expanded = null
else
this.expanded = jamTrackId
this.rerenderJamtracks()
initialize:() =>
screenBindings =
'beforeShow': this.beforeShow

View File

@ -1,243 +0,0 @@
$ = jQuery
context = window
context.JK ||= {}
context.JK.JamTrackScreen=class JamTrackScreen
LIMIT = 10
instrument_logo_map = context.JK.getInstrumentIconMap24()
constructor: (@app) ->
@logger = context.JK.logger
@screen = null
@content = null
@scroller = null
@genre = null
@artist = null
@instrument = null
@availability = null
@nextPager = null
@noMoreJamtracks = null
@currentPage = 0
@next = null
@currentQuery = this.defaultQuery()
@expanded = false
beforeShow:(data) =>
this.setFilterFromURL()
this.refresh()
afterShow:(data) =>
events:() =>
@genre.on 'change', this.search
@artist.on 'change', this.search
@instrument.on 'change', this.search
@availability.on 'change', this.search
clearResults:() =>
#$logger.debug("CLEARING CONTENT")
@currentPage = 0
@content.empty()
@noMoreJamtracks.hide()
@next = null
setFilterFromURL:() =>
# Grab parms from URL for artist, instrument, and availability
parms=this.getParams()
this.logger.debug("parms", parms)
if(parms.artist?)
@artist.val(parms.artist)
if(parms.instrument?)
@instrument.val(parms.instrument)
if(parms.availability?)
@availability.val(parms.availability)
window.history.replaceState({}, "", "/client#/jamtrack")
getParams:() =>
params = {}
q = window.location.href.split("?")[1]
if q?
q = q.split('#')[0]
raw_vars = q.split("&")
for v in raw_vars
[key, val] = v.split("=")
params[key] = decodeURIComponent(val)
params
refresh:() =>
@currentQuery = this.buildQuery()
that = this
rest.getJamtracks(@currentQuery).done((response) ->
that.clearResults()
that.handleJamtrackResponse(response)
).fail (jqXHR) ->
that.clearResults()
that.noMoreJamtracks.show()
that.app.notifyServerError jqXHR, 'Jamtrack Unavailable'
search:() =>
this.refresh()
false
defaultQuery:() =>
query =
per_page: LIMIT
page: @currentPage+1
if @next
query.since = @next
query
buildQuery:() =>
@currentQuery = this.defaultQuery()
# genre filter
# var genres = @screen.find('#jamtrack_genre').val()
# if (genres !== undefined) {
# @currentQuery.genre = genres
# }
# instrument filter
instrument = @instrument.val()
if instrument?
@currentQuery.instrument = instrument
# artist filter
art = @artist.val()
if art?
@currentQuery.artist = art
# availability filter
availability = @availability.val()
if availability?
@currentQuery.availability = availability
@currentQuery
handleJamtrackResponse:(response) =>
#logger.debug("Handling response", JSON.stringify(response))
@next = response.next
this.renderJamtracks(response)
if response.next == null
# if we less results than asked for, end searching
@scroller.infinitescroll 'pause'
if @currentPage == 0 and response.jamtracks.length == 0
@content.append '<div class=\'no-jamtracks-msg\'>There\'s no jamtracks.</div>'
if @currentPage > 0
@noMoreJamtracks.show()
# there are bugs with infinitescroll not removing the 'loading'.
# it's most noticeable at the end of the list, so whack all such entries
$('.infinite-scroll-loader').remove()
else
@currentPage++
this.buildQuery()
this.registerInfiniteScroll()
registerInfiniteScroll:() =>
@scroller.infinitescroll {
behavior: 'local'
navSelector: '#jamtrackScreen .btn-next-pager'
nextSelector: '#jamtrackScreen .btn-next-pager'
binder: @scroller
dataType: 'json'
appendCallback: false
prefill: false
bufferPx: 100
loading:
msg: $('<div class="infinite-scroll-loader">Loading ...</div>')
img: '/assets/shared/spinner.gif'
path: (page) ->
'/api/jamtracks?' + $.param(this.buildQuery())
}, (json, opts) ->
this.handleJamtrackResponse(json)
@scroller.infinitescroll 'resume'
playJamtrack:(e) =>
e.preventDefault()
addToCartJamtrack:(e) =>
e.preventDefault()
params = id: $(e.target).attr('data-jamtrack-id')
rest.addJamtrackToShoppingCart(params).done((response) ->
context.location = '/client#/shoppingCart'
).fail @app.ajaxError
licenseUSWhy:(e) =>
e.preventDefault()
@app.layout.showDialog 'jamtrack-availability-dialog'
registerEvents:() =>
@screen.find('.jamtrack-detail-btn').on 'click', this.showJamtrackDescription
@screen.find('.play-button').on 'click', this.playJamtrack
@screen.find('.jamtrack-add-cart').on 'click', this.addToCartJamtrack
@screen.find('.license-us-why').on 'click', this.licenseUSWhy
@screen.find('.jamtrack-detail-btn').on 'click', this.toggleExpanded
renderJamtracks:(data) =>
that = this
for jamtrack in data.jamtracks
for track in jamtrack.tracks
continue if track.track_type=='Master'
inst = '../assets/content/icon_instrument_default24.png'
if track.instrument.id in instrument_logo_map
inst = instrument_logo_map[track.instrument.id].asset
track.instrument_url = inst
track.instrument_desc = track.instrument.description
if track.part != ''
track.instrument_desc += ' (' + track.part + ')'
options =
jamtrack: jamtrack
expanded: that.expanded
@jamtrackItem = $(context._.template($('#template-jamtrack').html(), options, variable: 'data'))
that.renderJamtrack(@jamtrackItem)
this.registerEvents()
showJamtrackDescription:(e) =>
e.preventDefault()
@description = $(e.target).parent('.detail-arrow').next()
if @description.css('display') == 'none'
@description.show()
else
@description.hide()
toggleExpanded:() =>
this.expanded = !this.expanded
this.refresh()
renderJamtrack:(jamtrack) =>
@content.append jamtrack
initialize:() =>
screenBindings =
'beforeShow': this.beforeShow
'afterShow': this.afterShow
@app.bindScreen 'jamtrack', screenBindings
@screen = $('#jamtrack-find-form')
@scroller = @screen.find('.content-body-scroller')
@content = @screen.find('.jamtrack-content')
@genre = @screen.find('#jamtrack_genre')
@artist = @screen.find('#jamtrack_artist')
@instrument = @screen.find('#jamtrack_instrument')
@availability = @screen.find('#jamtrack_availability')
@nextPager = @screen.find('a.btn-next-pager')
@noMoreJamtracks = @screen.find('.end-of-jamtrack-list')
if @screen.length == 0
throw new Error('@screen must be specified')
if @scroller.length == 0
throw new Error('@scroller must be specified')
if @content.length == 0
throw new Error('@content must be specified')
if @noMoreJamtracks.length == 0
throw new Error('@noMoreJamtracks must be specified')
#if(@genre.length == 0) throw new Error("@genre must be specified")
if @artist.length == 0
throw new Error('@artist must be specified')
if @instrument.length == 0
throw new Error('@instrument must be specified')
if @availability.length == 0
throw new Error('@availability must be specified')
this.events()

View File

@ -1,17 +1,40 @@
@import 'common';
#jamtrackLanding {
ul {
li {
margin: 1px 4px 1px 4em;
font-size:9px;
font-family: verdana;
.two-column-list-container {
-moz-column-count: 2;
-moz-column-gap: 20px;
-webkit-column-count: 2;
-webkit-column-gap: 20px;
column-count: 2;
column-gap: 20px;
margin-left: 0px;
ul {
list-style-type: none;
li {
margin: 1px 4px 1px 0px;
font-size:11px;
}
}
}
ul {
li {
margin: 1px 4px 1px 4px;
font-size:11px;
}
}
.browse-header {
padding: 4px 0 4px 0;
}
.list-columns {
padding: 4px;
h2 {
font-size: 16pt;
font-weight:300;
font-weight:600;
font-style: bolder;
font-family: verdana;
text-transform: lowercase;
@ -23,24 +46,26 @@
padding: 3px;
@include border-radius(7px);
background-color:$ColorScreenPrimary;
color: white !important;
text-align: center;
vertical-align: center;
}
.what, .howto {
margin-bottom: 2em;
}
p {
font-size: 12pt !important;
font-weight: normal;
line-height: 16px;
color: #dddddd;
* {
font-size: 10pt !important;
font-weight: normal;
line-height: 16px;
}
}
font-family: arial;
font-size: 11pt;
font-weight: 200;
line-height: 17px;
color: #cccccc;
}
}
.details {
margin-bottom: 4px !important;
}
.about {
@include border_box_sizing;
float: left;
@ -90,13 +115,13 @@
}
.jamtrack-record {
border-bottom: 1px solid black;
//border-bottom: 1px solid black;
text-align: left;
}
.jamtrack-detail {
width: 35%;
@include border_box_sizing;
float: left;
width: 30%;
padding: 10px 0px;
.detail-label {
@ -127,22 +152,21 @@
.jamtrack-description {
display: none;
}
}
.jamtrack-detail-btn {
cursor: pointer;
margin-top: 7px;
margin-right: 5px;
padding-top: 5px;
vertical-align: bottom;
}
.jamtrack-detail-btn {
cursor: pointer;
margin-top: 7px;
margin-right: 5px;
padding-top: 5px;
vertical-align: bottom;
}
.jamtrack-tracks {
@include border_box_sizing;
float: left;
width: 50%;
padding: 10px 0px;
width: 35%;
padding: 10px 0px;
.tracks-caption {
margin-top: 5px;
margin-bottom: 10px;
@ -163,14 +187,17 @@
margin-left: 10px;
}
}
.jamtrack-track {
margin-left: 7px;
}
.jamtrack-action {
@include border_box_sizing;
float: left;
width: 20%;
padding: 10px 0px;
width: 35%;
// padding: 0px 0px;
text-align: center;
// vertical-align: top;
.play-button {
margin-top: 5px;
}

View File

@ -22,7 +22,12 @@
th ORIGINAL ARTIST
th ACTIONS
tbody
tr.no-jamtracks-found.hidden
td colspan="3"
| You don't currently own any JamTracks.
a.orange href="/client#/jamtracks" Browse JamTracks Now
.right
a.button-orange href="/client#/jamtracks" JAMTRACKS
a.button-grey href="javascript:history.go(-1)" BACK
script#template-account-jamtrack type='text/template'

View File

@ -9,30 +9,24 @@
=render(:partial => "web_filter", :locals => {:search_type => Search::PARAM_JAMTRACK})
.filter-body
.content-body-scroller
.profile-wrapper
.jamtrack-content
.profile-wrapper
table.generaltable
thead
tr
th JAMTRACK
th TRACKS INCLUDED/PREVIEW
th SHOP
tbody.jamtrack-content
a.btn-next-pager href="/api/jamtracks?page=1" Next
.end-of-jamtrack-list.end-of-list="No more Jamtracks"
script#template-jamtrack type='text/template'
.jamtrack-record jamtrack-id="{{data.jamtrack.id}}"
.top_bar
.jamtrack-detail.jamtrack-header JAMTRACK
.jamtrack-tracks.jamtrack-header TRACKS INCLUDED/PREVIEW
.jamtrack-action.jamtrack-header SHOP
.jamtrack-detail
tr.jamtrack-record jamtrack-id="{{data.jamtrack.id}}"
td.jamtrack-detail
.detail-label
| Title:
.detail-value
| {{data.jamtrack.name}}
/ .clearall.detail-label
/ | Type:
/ .detail-value
/ | {{data.jamtrack.recording_type}}
/ .clearall.detail-label
/ | Original Artist:
/ .detail-value
/ | {{data.jamtrack.original_artist}}
.clearall.detail-label
| Original Artist:
.detail-value
@ -55,46 +49,27 @@ script#template-jamtrack type='text/template'
.detail-value
| {{data.jamtrack.description}}
="{% } %}"
/ / / .clearall.detail-label
/ | Copyright:
/ .copyright-value
/ ="{% if (data.jamtrack.licensor !=null) { %}"
/ | {{data.jamtrack.licensor.name}}
/ ="{% }; %}"
/ .clearall.jamtrack-description
/ .detail-label
/ | Description
/ .detail-value
/ | {{data.jamtrack.description}}
/ .clearall
.jamtrack-tracks
/ .tracks-caption
/ | Tracks in This Recording:
="{% counter = 0 %}"
="{% _.each(data.jamtrack.tracks, function(track) { %}"
="{% if(track.track_type == JK.MASTER_TRACK) return; %}"
.track-instrument href="{{track.url_44}}"
.instrument-image
img src="/assets/shared/play_button.png" width=24 height=24
.instrument-image
img src="{{track.instrument_url}}" width=24 height=24
.instrument-desc
| {{track.instrument_desc}}
.clearall
="{% }); %}"
td.jamtrack-tracks
.detail-arrow
.jamtrack-detail-btn
.jamtrack-detail-btn.orange
="{% if (data.expanded) { %}"
| hide tracks
=image_tag("up_arrow.png")
| hide tracks ({{data.jamtrack.tracks.length}})
a.details-arrow.arrow-up-orange
="{% } else { %}"
| preview all tracks
=image_tag("down_arrow.png")
| show tracks ({{data.jamtrack.tracks.length}})
a.details-arrow.arrow-down-orange
="{% } %}"
.jamtrack-action
="{% if (data.expanded) { %}"
="{% _.each(data.jamtrack.tracks, function(track) { %}"
.jamtrack-track jamtrack-track-id="{{track.id}}"
/ .instrument-desc
/ | {{track.instrument_desc}}
/.track-instrument
.jamtrack-preview
.clearall
="{% }); %}"
="{% } %}"
td.jamtrack-action
/ a.play-button href="#" data-jamtrack-id="{{data.jamtrack.id}}"
/ =image_tag "shared/play_button.png"
.jamtrack-price
@ -108,7 +83,6 @@ script#template-jamtrack type='text/template'
="{% }; %}"
="{% if (data.jamtrack.sales_region==JK.AVAILABILITY_US) { %}"
.jamtrack-license
| This JamTrack available only to US customers.
a.license-us-why href="#", why?
| This JamTrack available only to US customers. &nbsp;&nbsp;&nbsp;&nbsp;
a.license-us-why.orange href="#" why?
="{% }; %}"
.clearall

View File

@ -8,7 +8,7 @@
.list-columns
.about
h2 what are jamtracks?
p.what
.what
.details JamTracks are the best way to play along with your favorite music! Unlike traditional backing tracks, JamTracks are professionally mastered, complete multitrack recordings, with fully isolated tracks for each and every part of the master mix. Used with the free JamKazam app & Internet service, you can:
ul
li Solo just the part you want to play in order to hear and learn it
@ -19,17 +19,17 @@
/ TODO: put in video thumbnail when available:
.browse
h2 my jamtracks
p.howto
.howto
.details
span="To play with your JamTracks, open a JamTrack while in a session in the JamKazam app. Or "
a href="client#/jamtrack" visit the JamTracks Section of your account.
.free-jamtrack.orange-fill
.free-jamtrack.orange-fill.details
| For a limited time, get one JamTrack free. Browse JamTracks below, add one to your shopping cart, and we'll make it free during the checkout process.
h2 browse jamtracks
.browse-header
span="browse by band "
| browse by band &nbsp;&nbsp;
a href="client#/jamtrack" or browse all jamtracks
.band-browse
.band-browse.two-column-list-container
ul#band_list
li#no_bands_found.hidden No bands found

View File

@ -212,10 +212,10 @@ SampleApp::Application.routes.draw do
match '/backing_tracks' => 'api_backing_tracks#index', :via => :get, :as => 'api_backing_tracks_list'
# Jamtracks
match '/jamtracks/purchased' => 'api_jam_tracks#purchased', :via => :get, :as => 'api_jam_tracks_purchased'
match '/jamtracks/:plan_code' => 'api_jam_tracks#show', :via => :get, :as => 'api_jam_tracks_show'
match '/jamtracks/band/:plan_code' => 'api_jam_tracks#show_with_artist_info', :via => :get, :as => 'api_jam_tracks_show_with_artist_info'
match '/jamtracks' => 'api_jam_tracks#index', :via => :get, :as => 'api_jam_tracks_list'
match '/jamtracks/purchased' => 'api_jam_tracks#purchased', :via => :get, :as => 'api_jam_tracks_purchased'
match '/jamtracks/download/:id' => 'api_jam_tracks#download', :via => :get, :as => 'api_jam_tracks_download'
match '/jamtracks/played/:id' => 'api_jam_tracks#played', :via => :post, :as => 'api_jam_tracks_played'
match '/jamtracks/enqueue/:id' => 'api_jam_tracks#enqueue', :via => :post, :as => 'api_jam_tracks_enqueue'

View File

@ -49,15 +49,12 @@ describe "JamTrack Shopping", :js => true, :type => :feature, :capybara_feature
find('#jamtrack-availability-dialog #dialog-close-button').trigger(:click)
end
jamtrack.jam_track_tracks.each do |track|
jamtrack_record.find('.instrument-desc', "#{track.instrument.description} ( #{track.part} }")
end
if options[:added_cart]
jamtrack_record.find('a.jamtrack-add-cart-disabled', text: 'Already In Cart')
else
jamtrack_record.find('a.jamtrack-add-cart.button-orange', text: 'Add to Cart')
end
jamtrack_record
end
def not_find_jamtrack jamtrack
@ -144,5 +141,16 @@ describe "JamTrack Shopping", :js => true, :type => :feature, :capybara_feature
find('.shopping-sub-total', text: "Subtotal: $ #{jt_us.price + jt_ww.price}")
end
it "can expand" do
jamtrack = find_jamtrack(jt_us)
jamtrack.find('.jamtrack-detail-btn').trigger(:click)
jt_us.jam_track_tracks.each do |track|
jamtrack.find('.instrument-name', track.instrument.description)
jamtrack.find('.part', "(#{track.part}}")
end
end
end
end