jam-cloud/web/app/assets/javascripts/react-components/TeacherSetupBasics.js.jsx.c...

119 lines
4.2 KiB
CoffeeScript
Raw Permalink Normal View History

2015-08-08 20:01:22 +00:00
context = window
teacherActions = window.JK.Actions.Teacher
logger = context.JK.logger
rest = window.JK.Rest()
@TeacherSetupBasics = React.createClass({
mixins: [
@TeacherSetupMixin,
2015-08-08 20:01:22 +00:00
Reflux.listenTo(@AppStore,"onAppInit"),
Reflux.listenTo(TeacherStore, "onTeacherStateChanged")
]
getInitialState: () ->
{}
screenName: () ->
"basics"
2015-08-08 20:01:22 +00:00
onTeacherStateChanged: (changes) ->
2015-08-20 19:44:50 +00:00
$root = jQuery(this.getDOMNode())
unless this.handleErrors(changes)
2015-08-20 19:44:50 +00:00
teacher = changes.teacher
2015-12-29 16:59:37 +00:00
this.setState(teacher)
2015-08-08 20:01:22 +00:00
captureFormState: (changes) ->
$root = jQuery(this.getDOMNode())
this.setState({
2015-08-20 19:44:50 +00:00
});
handleListChange: (listName, selectedObjects)->
logger.debug("handleListChange:", listName, selectedObjects)
this.setState({
"#{listName}": selectedObjects
2015-08-08 20:01:22 +00:00
});
2016-01-04 23:25:29 +00:00
handleFieldChange: (fieldName, value)->
2016-01-07 11:12:11 +00:00
logger.debug("handleFieldChange:", fieldName, value)
2016-01-04 23:25:29 +00:00
this.setState({
"#{fieldName}": value
});
navDestination: (instructions) ->
navTo=null
2015-08-20 19:44:50 +00:00
if instructions?
if instructions.direction=="cancel"
navTo = @teacherSetupSource()
else if instructions.direction=="back"
navTo = @teacherSetupDestination("introduction")
else if instructions.direction=="next"
navTo = @teacherSetupDestination("experience")
navTo
2015-08-20 19:44:50 +00:00
handleNav: (e) ->
navTo = this.navDestination(e)
2016-01-07 11:12:11 +00:00
this.state.validate_basics = true
teacherActions.change.trigger(this.state, {navTo: navTo, instructions:e})
2015-08-08 20:01:22 +00:00
2015-12-29 16:59:37 +00:00
render: () ->
# Render the following:
# Instruments
# Subjects
# Genres
# Languages
# All lists will take a list of selected keys,
# and will otherwise self-render the available
2016-01-04 23:25:29 +00:00
`<div className="TeacherSetupBasics TeacherSetupComponent">
2015-12-28 16:43:14 +00:00
<div className="teacher-quarter-column">
<div className="teacher-field" name="instruments">
2015-12-28 16:43:14 +00:00
<h3>Instruments Taught:</h3>
<InstrumentCheckBoxList onItemChanged={this.handleListChange} selectedInstruments={this.state.instruments}/>
2015-08-08 20:01:22 +00:00
</div>
</div>
2015-12-28 16:43:14 +00:00
<div className="teacher-quarter-column">
<div className="teacher-field" name="subjects">
2015-12-28 16:43:14 +00:00
<h3>Music Subjects Taught:</h3>
<SubjectCheckBoxList onItemChanged={this.handleListChange} selectedSubjects={this.state.subjects}/>
2015-08-08 20:01:22 +00:00
</div>
</div>
2015-12-28 16:43:14 +00:00
<div className="teacher-quarter-column">
<div className="teacher-field" name="genres">
2015-12-28 16:43:14 +00:00
<h3>Genres Taught:</h3>
<GenreCheckBoxList onItemChanged={this.handleListChange} selectedGenres={this.state.genres}/>
2015-08-08 20:01:22 +00:00
</div>
</div>
2015-12-28 16:43:14 +00:00
<div className="teacher-quarter-column">
<div className="teacher-field" name="languages">
2015-12-28 16:43:14 +00:00
<h3>Languages Spoken:</h3>
<LanguageCheckBoxList onItemChanged={this.handleListChange} selectedLanguages={this.state.languages}/>
2015-08-08 20:01:22 +00:00
</div>
</div>
2016-01-07 11:12:11 +00:00
<br className="clearall"/>
2015-12-28 16:43:14 +00:00
<div className="teacher-half-column">
2016-01-07 11:12:11 +00:00
<div className="teacher-field" name="levels_taught">
2015-12-28 16:43:14 +00:00
<h3>Student Levels Taught:</h3>
<div className="student-levels">
2016-01-04 23:25:29 +00:00
<TeacherStudentLevel onChange={this.handleFieldChange} student="teaches_beginner" display="Beginner" level={this.state.teaches_beginner} />
<TeacherStudentLevel onChange={this.handleFieldChange} student="teaches_intermediate" display="Intermediate" level={this.state.teaches_intermediate} />
<TeacherStudentLevel onChange={this.handleFieldChange} student="teaches_advanced" display="Advanced" level={this.state.teaches_advanced} />
2015-12-28 16:43:14 +00:00
</div>
</div>
</div>
<div className="teacher-half-column">
2016-01-07 11:12:11 +00:00
<div className="teacher-field" name="ages_taught">
2015-12-28 16:43:14 +00:00
<h3>Student Ages Taught:</h3>
<div className="student-ages">
2016-01-07 11:12:11 +00:00
<AgeRangeList onItemChanged={this.handleFieldChange} objectName="teaches_age_lower" selectedAge={this.state.teaches_age_lower} />
2015-12-28 16:43:14 +00:00
<span className="age-to-age">to</span>
2016-01-07 11:12:11 +00:00
<AgeRangeList onItemChanged={this.handleFieldChange} objectName="teaches_age_upper" selectedAge={this.state.teaches_age_upper} />
2015-12-28 16:43:14 +00:00
</div>
</div>
</div>
<TeacherSetupNav handleNav={this.handleNav}></TeacherSetupNav>
</div>`
2015-08-08 20:01:22 +00:00
})