jam-cloud/web/app/assets/javascripts/react-components/TestDriveSelectionScreen.js...

172 lines
5.5 KiB
CoffeeScript
Raw Permalink Normal View History

2016-05-05 02:20:38 +00:00
context = window
rest = context.JK.Rest()
logger = context.JK.logger
UserStore = context.UserStore
@TestDriveSelection = React.createClass({
mixins: [
Reflux.listenTo(AppStore, "onAppInit"),
Reflux.listenTo(UserStore, "onUserChanged")
]
onAppInit: (@app) ->
@app.bindScreen('jamclass/test-drive-selection',
{afterShow: @afterShow, beforeHide: @beforeHide, navName: 'TestDrive Selection'})
onUserChanged: (userState) ->
@setState({user: userState?.user})
beforeHide: (e) ->
afterShow: (e) ->
logger.debug("TestDriveSelection: afterShow", e.id)
parsed = @parseId(e.id)
id = parsed.id
if id? && id != 'none' && id != 'default'
@setState({teacherId: id, teacher: null})
else
@setState({teacherId: null, teacher: null})
rest.getUserDetail({
id: id,
show_teacher: true
}).done((response) => @userDetailDone(response)).fail(@app.ajaxError)
parseId: (id) ->
if !id?
{id: null}
else
{id: id}
userDetailDone: (response) ->
if response.id == @state.teacherId
@setState({teacher: response, isSelf: response.id == context.JK.currentUserId})
else
logger.debug("TestDriveSelection: ignoring teacher details", response.id, @state.teacherId)
getInitialState: () ->
{
user: null,
teacher: null,
teacherId: null,
}
packageSelect: (packageType, e) ->
e.preventDefault()
2016-05-16 16:39:20 +00:00
logger.debug("user selected test-drive-#{packageType}")
2016-05-05 02:20:38 +00:00
rest.updateUser({desired_package: "test-drive-#{packageType}"}).done((response) => @packageSelectedDone(response)).fail((jqXHR) => @packageSelectedFail(jqXHR))
packageSelectedFail: (jqXHR) ->
console.log("package selected fail: " + jqXHR.responseText)
@app.ajaxError(jqXHR)
packageSelectedDone:(response) ->
url = "/client#/jamclass/book-lesson/test-drive"
if @state.teacher?
url += '_' + @state.teacher.id
else
url = "/client#/jamclass/lesson-payment/test-drive"
window.location.href = url
avatar: (name = 'your choice', photo_url = '/assets/shared/avatar_generic.png') ->
`<div className="avatar-header">
<div className="avatar">
<img src={photo_url}/>
</div>
</div>`
render: () ->
teacher_name = @state.teacher?.name
photo_url = @state.teacher?.photo_url
if !photo_url?
photo_url = '/assets/shared/avatar_generic.png'
`<div className="content-body-scroller">
<Nav/>
<div className="selection-area">
<div className="test-drive-selection-wrapper select-4">
<div className="test-drive-selection">
<div className="td-header">MOST POPULAR</div>
<div className="td-content">
<div className="avatars">
{this.avatar(teacher_name, photo_url)}
{this.avatar()}
{this.avatar()}
{this.avatar()}
</div>
<div className="td-msg">
GET 4 LESSONS WITH 4 DIFFERENT TEACHERS FOR JUST $12.50 EACH
</div>
<div className="td-desc">
You wouldn't marry the first person you date - right? Choosing the right teacher is the most important
thing you can do to ensure success and become a better musician. Try 4 different teachers. Then pick the
one
who is best for YOU!
</div>
</div>
</div>
<a className="button-orange select-4 select-package" onClick={this.packageSelect.bind(this, '4')}>SELECT</a>
<div className="price-notice">Just $49.99!</div>
</div>
<div className="test-drive-selection-wrapper select-2">
<div className="test-drive-selection">
<div className="td-header">GREAT VALUE</div>
<div className="td-content">
<div className="avatars">
{this.avatar(teacher_name, photo_url)}
{this.avatar()}
</div>
<div className="td-msg">
GET 2 LESSONS<br/>FOR THE PRICE OF 1
</div>
<div className="td-desc">
Want to try more than one teacher, but 4 is too many for you? Try two lessons with two different
teachers for the price of one lesson.
A great value, and a good way to find an excellent teacher!
</div>
</div>
</div>
<a className="button-orange select-2 select-package" onClick={this.packageSelect.bind(this, '2')}>SELECT</a>
<div className="price-notice">Just $29.99!</div>
</div>
<div className="test-drive-selection-wrapper select-1">
<div className="test-drive-selection">
<div className="td-header">I'M SURE</div>
<div className="td-content">
<div className="avatars">
{this.avatar(teacher_name, photo_url)}
</div>
<div className="td-msg">
GET 1 HALF-PRICE LESSON<br/>TO GET STARTED
</div>
<div className="td-desc">
Are you confident you've found the best teacher for you? Then book your first lesson at a terrific
value, and get your first lesson scheduled to start learning more today!
</div>
</div>
</div>
<a className="button-orange select-1 select-package" onClick={this.packageSelect.bind(this, '1')}>SELECT</a>
<div className="price-notice">Just $14.99!</div>
</div>
<br className="clearall"/>
</div>
</div>`
})