context = window @TestDrivePackageDialog = React.createClass({ mixins: [Reflux.listenTo(@AppStore, "onAppInit")] teacher: null beforeShow: (args) -> # d1 should be a teacher ID (vs a user ID that happens to be a teacher) logger.debug("TestDrivePackageDialog.beforeShow", args.d1) @setState({target: args.d1, page_data: window.page_data}) afterHide: () -> onAppInit: (@app) -> dialogBindings = { 'beforeShow': @beforeShow, 'afterHide': @afterHide }; @app.bindDialog('test-drive-package-dialog', dialogBindings); getInitialState: () -> { target: null, page_data: null } componentDidMount: () -> @root = $(@getDOMNode()) @dialog = @root.closest('.dialog') renderTeacher: (teacher) -> photo_url = '/assets/shared/avatar_generic.png' if teacher.photo_url? photo_url = teacher.photo_url `
{teacher.first_name}
{teacher.last_name}
` doCancel: (e) -> e.preventDefault() @app.layout.closeDialog('test-drive-package-dialog', true); selectTeachers: (e) -> e.preventDefault() # validate if @state.target == '2' checked = @root.find('input[type="checkbox"]:checked') if checked.length != 2 window.JK.Banner.showAlert('hold on there', 'Please select 2 teachers.') return if @state.target == '1' checked = @root.find('input[type="checkbox"]:checked') if checked.length != 1 window.JK.Banner.showAlert('hold on there', 'Please select 1 teacher.') return teachers = [] $.each(checked, (i, node) => ( $node = $(node) teacherId = $node.attr('data-teacher-id') for teacher in @state.page_data.package.teachers if teacher.id == teacherId teachers.push(teacher) break )) @dialog.data('result', {package_type: @state.target, teachers: teachers}) @app.layout.closeDialog('test-drive-package-dialog') render: () -> if @state.target == '2' help = `

Check the boxes under the 2 instructors you want to select for your TestDrive package. Then click the Select button below.

` else help = `

Check the box under the instructor you want to select for your TestDrive package. Then click the Select button below.

` teachers = [] if @state.page_data?.package?.teachers? for teacher in @state.page_data.package.teachers teachers.push(@renderTeacher(teacher)) teacherHolderClasses = {"teacher-holder" : true, "two": teachers.length == 2, "four": teachers.length == 4} dialogInnerClasses = {"dialog-inner": true, "two": teachers.length == 2, "four": teachers.length == 4} `

select instructors

{help}
{teachers}
CANCEL SELECT
` })