* VRFS-3647 - add search capability to jamtrack page, and VRFS-3676 - poke redeem users
This commit is contained in:
parent
d3d9a2db49
commit
0c5dbe2c68
|
|
@ -124,7 +124,7 @@ class JamRuby::AffiliatePartner < ActiveRecord::Base
|
|||
product_info = shopping_cart.product_info
|
||||
# subtract the total quantity from the freebie quantity, to see how much we should attribute to them
|
||||
real_quantity = product_info[:quantity].to_i - product_info[:marked_for_redeem].to_i
|
||||
{fee_in_cents: (1.99 * 100 * real_quantity * rate).round}
|
||||
{fee_in_cents: (1.99 * 100 * real_quantity * rate.to_f).round}
|
||||
else
|
||||
false
|
||||
end
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ MIX_MODES = context.JK.MIX_MODES
|
|||
logger: context.JK.logger
|
||||
|
||||
|
||||
|
||||
render: () ->
|
||||
|
||||
window.JamTrackSearchInput = '' unless window.JamTrackSearchInput? # can't pass null to react-select
|
||||
|
|
@ -16,7 +17,7 @@ MIX_MODES = context.JK.MIX_MODES
|
|||
searchValue = if @state.search == 'SEPARATOR' then '' else window.JamTrackSearchInput
|
||||
|
||||
`<Select
|
||||
placeholder="Search for JamTracks"
|
||||
placeholder={this.props.placeholder}
|
||||
name="search-field"
|
||||
asyncOptions={this.getOptions}
|
||||
autoload={false}
|
||||
|
|
@ -30,6 +31,8 @@ MIX_MODES = context.JK.MIX_MODES
|
|||
clearable={false}
|
||||
/>`
|
||||
|
||||
getDefaultProps: () ->
|
||||
{placeholder:'Search for JamTracks'}
|
||||
getInitialState: () ->
|
||||
({search: ''})
|
||||
|
||||
|
|
|
|||
|
|
@ -7,6 +7,8 @@ rest = context.JK.Rest()
|
|||
|
||||
mixins: [Reflux.listenTo(@AppStore,"onAppInit"), Reflux.listenTo(@UserStore, "onUserChanged")]
|
||||
|
||||
cookieName: 'jamtrack_play_search'
|
||||
|
||||
getInitialState: () ->
|
||||
{user: null, purchasedJamTracks: []}
|
||||
|
||||
|
|
@ -40,16 +42,21 @@ rest = context.JK.Rest()
|
|||
for x in [@state.purchasedJamTracks.length...(6 - @state.purchasedJamTracks.length )] by 1
|
||||
playJamTracks.push `<tr><td> </td></tr>`
|
||||
|
||||
if @state.user?.purchased_jamtracks_count > 20
|
||||
autocomplete = `<div className="my-autocomplete"><JamTrackAutoComplete placeholder="Search your JamTracks" onSearch={this.searchMyJamTracks} /><button onClick={this.searchMyJamTracksByString} className="search-by-string-btn button-orange ">SEARCH</button></div>`
|
||||
playableJamTracks =
|
||||
`<div className="purchased-jam-tracks">
|
||||
<table className="jamtable" cellspacing="0" cellpadding="0" border="0">
|
||||
<thead>
|
||||
<tr><th className="jamtrack-name" align="left">JAMTRACKS</th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{playJamTracks}
|
||||
</tbody>
|
||||
</table>
|
||||
`<div className="purchased-jam-tracks-holder">
|
||||
{autocomplete}
|
||||
<div className="purchased-jam-tracks">
|
||||
<table className="jamtable" cellspacing="0" cellpadding="0" border="0">
|
||||
<thead>
|
||||
<tr><th className="jamtrack-name" align="left">JAMTRACKS</th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{playJamTracks}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>`
|
||||
|
||||
`<div className="content-body-scroller">
|
||||
|
|
@ -111,6 +118,55 @@ rest = context.JK.Rest()
|
|||
componentDidMount: () ->
|
||||
$root = $(@getDOMNode())
|
||||
|
||||
doPurchasedSearch: (searchQuery) ->
|
||||
if !searchQuery?
|
||||
#searchQuery = $.cookie(@cookieName)
|
||||
|
||||
# and parse that cookie if defined
|
||||
if searchQuery
|
||||
try
|
||||
searchQuery = JSON.parse(searchQuery)
|
||||
catch e
|
||||
searchQuery = {searchType: 'user-input', searchData: ''}
|
||||
logger.error("unable to parse search query: " + e)
|
||||
|
||||
|
||||
# if still no query (after checking cookie and what was specified in function, then default to anything
|
||||
if !searchQuery?
|
||||
searchQuery = {searchType: 'user-input', searchData: ''}
|
||||
|
||||
query = {page:1, per_page:20}
|
||||
|
||||
if searchQuery && searchQuery.searchData && searchQuery.searchData.length > 0 && searchQuery.searchType && searchQuery.searchType.length > 0
|
||||
|
||||
if searchQuery.searchType == 'user-input'
|
||||
query.search = searchQuery.searchData
|
||||
else if searchQuery.searchType == 'artist-select'
|
||||
query.artist_search = searchQuery.searchData
|
||||
else if searchQuery.searchType == 'song-select'
|
||||
query.song_search = searchQuery.searchData
|
||||
|
||||
rest.getPurchasedJamTracks(query)
|
||||
.done((purchasedJamTracks) =>
|
||||
if @redeemedFlow
|
||||
setTimeout((() => @preparePlayJamTrackProd()), 200)
|
||||
@redeemedFlow = false
|
||||
@setState({purchasedJamTracks: purchasedJamTracks.jamtracks})
|
||||
)
|
||||
.fail((jqXHR, textStatus, errorMessage) =>
|
||||
@app.ajaxError(jqXHR, textStatus, errorMessage)
|
||||
)
|
||||
|
||||
searchMyJamTracks: (searchType, searchData) ->
|
||||
searchQuery = {searchType: searchType, searchData: searchData}
|
||||
#$.cookie(@cookieName, JSON.stringify(searchQuery))
|
||||
@doPurchasedSearch(searchQuery)
|
||||
|
||||
searchMyJamTracksByString: (e) ->
|
||||
e.preventDefault()
|
||||
|
||||
@doPurchasedSearch(searchType:'user-input',searchData: window.JamTrackSearchInput)
|
||||
|
||||
search: (searchType, searchData) ->
|
||||
context.JamTrackActions.requestSearch(searchType, searchData)
|
||||
|
||||
|
|
@ -160,16 +216,7 @@ rest = context.JK.Rest()
|
|||
onUser:(user) ->
|
||||
@setState({user: user})
|
||||
|
||||
rest.getPurchasedJamTracks({page:1, per_page:20})
|
||||
.done((purchasedJamTracks) =>
|
||||
if @redeemedFlow
|
||||
@preparePlayJamTrackProd()
|
||||
@redeemedFlow = false
|
||||
@setState({purchasedJamTracks: purchasedJamTracks.jamtracks})
|
||||
)
|
||||
.fail((jqXHR, textStatus, errorMessage) =>
|
||||
@app.ajaxError(jqXHR, textStatus, errorMessage);
|
||||
)
|
||||
@doPurchasedSearch()
|
||||
|
||||
# Get artist names and build links
|
||||
#@rest.getJamTrackArtists({group_artist: true, per_page:100})
|
||||
|
|
|
|||
|
|
@ -25,14 +25,22 @@
|
|||
|
||||
.autocompleter {
|
||||
width: calc(100% - 90px);
|
||||
margin-bottom: 20px;
|
||||
|
||||
display:inline-block;
|
||||
}
|
||||
.search-controls {
|
||||
.autocompleter {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
}
|
||||
.purchased-jam-tracks-holder {
|
||||
margin-top:20px;
|
||||
}
|
||||
|
||||
.purchased-jam-tracks {
|
||||
height:167px;
|
||||
overflow:auto;
|
||||
margin-top:20px;
|
||||
margin-top:10px;
|
||||
}
|
||||
|
||||
.jamtable {
|
||||
|
|
|
|||
Loading…
Reference in New Issue