VRFS-3359 : Validate end year greater or equal start year.

This commit is contained in:
Steven Miers 2015-08-31 14:56:25 -05:00
parent 69bb4e469a
commit 005ee8aabd
3 changed files with 43 additions and 30 deletions

View File

@ -4,11 +4,11 @@ logger = context.JK.logger
@TeacherExperienceEditableList = React.createClass({
componentDidUnmount: () ->
$root.off("submit", ".teacher-experience-teaching-form")
@root.off("submit", ".teacher-experience-teaching-form")
componentDidMount: () ->
$root = jQuery(this.getDOMNode())
$root.off("submit", ".teacher-experience-teaching-form").on("submit", ".teacher-experience-teaching-form", @addExperience)
@root = jQuery(this.getDOMNode())
@root.off("submit", ".teacher-experience-teaching-form").on("submit", ".teacher-experience-teaching-form", @addExperience)
formatListItem: (obj) ->
t = "#{obj.name}/#{obj.organization} (#{obj.start_year}"
@ -22,19 +22,31 @@ logger = context.JK.logger
this.props.listItems ||= []
this.props.listItems = _.sortBy(this.props.listItems, 'start_year')
addError: (k,v) ->
teacherField = @root#.find(".teacher-field[name='#{k}'] > td").first()
teacherField.prepend("<div class='error-text'>#{v.join()}</div>")
$("input", teacherField).addClass("input-error")
addExperience: (e) ->
e.preventDefault()
logger.debug("addExperience", this.props.listItems, this.props)
$form = e.target
this.props.listItems.push {
name: $("[name='title_input']", $form).val()
organization: $("[name='organization_input']", $form).val()
start_year: $("[name='start_year']", $form).val()
end_year: $("[name='end_year']", $form).val()
}
logger.debug("addExperience", this.props.listItems)
this.props.onItemChanged(this.props.experienceType, this.props.listItems)
$form.reset()
start_year = $("[name='start_year']", $form).val()
end_year = $("[name='end_year']", $form).val()
if this.props.showEndDate && start_year > end_year
this.addError("date", ["End year must be greater than start year"])
else
this.props.listItems.push {
name: $("[name='title_input']", $form).val()
organization: $("[name='organization_input']", $form).val()
start_year: start_year
end_year: end_year
}
logger.debug("addExperience", this.props.listItems)
this.props.onItemChanged(this.props.experienceType, this.props.listItems)
$form.reset()
false
render: () ->
@ -56,15 +68,15 @@ logger = context.JK.logger
`<div className="TeacherExperienceEditableList react-component">
<form className="teacher-experience-teaching-form">
<table className="form-table">
<tr className="teacher-field">
<tr className="teacher-field" name="title">
<td><label htmlFor="title-input">{titleLabel}:</label></td>
<td><input name="title_input" required="required"> </input></td>
</tr>
<tr className="teacher-field">
<tr className="teacher-field" name="organization">
<td><label htmlFor="organization-input">{orgLabel}:</label></td>
<td><input name="organization_input" required="required"> </input></td>
</tr>
<tr className="teacher-field">
<tr className="teacher-field" name="date">
<td><label htmlFor="start-year">{dtLabel}:</label></td>
<td>
<div className="inline-fields">

View File

@ -71,10 +71,10 @@ rest = window.JK.Rest()
<div className="teacher-third-column">
<label className="sub-caption">EDUCATION:</label>
<TeacherExperienceEditableList
showEndDate="true"
experienceType="education"
onItemChanged={this.handleListChange}
<TeacherExperienceEditableList
showEndDate="true"
experienceType="education"
onItemChanged={this.handleListChange}
titleLabel="Degree/Cert"
orgLabel="School"
listItems={this.state.experiences_education}/>
@ -82,11 +82,11 @@ rest = window.JK.Rest()
<div className="teacher-third-column">
<label className="sub-caption">AWARDS:</label>
<TeacherExperienceEditableList
experienceType="award"
onItemChanged={this.handleListChange}
<TeacherExperienceEditableList
experienceType="award"
onItemChanged={this.handleListChange}
titleLabel="Award"
orgLabel="Organization"
orgLabel="Organization"
listItems={this.state.experiences_award}/>
</div>

View File

@ -7,7 +7,7 @@ teacherActions = window.JK.Actions.Teacher
screenBindings = {
'beforeShow': @beforeShow
}
@root = jQuery(this.getDOMNode())
@app.bindScreen("teachers/setup/#{@screenName()}", screenBindings)
beforeShow: (data) ->
@ -26,16 +26,17 @@ teacherActions = window.JK.Actions.Teacher
# @postmark = params.p
handleErrors: (changes) ->
$root = jQuery(this.getDOMNode())
$(".error-text", $root).remove()
$(".error-text", @root).remove()
if changes.errors?
for k,v of changes.errors
teacherField = $root.find(".teacher-field[name='#{k}']")
teacherField.append("<div class='error-text'>#{v.join()}</div>")
$("input", teacherField).addClass("input-error")
addError(k,v) for k,v of changes.errors
changes.errors?
addError: (k,v) ->
teacherField = @root.find(".teacher-field[name='#{k}']")
teacherField.append("<div class='error-text'>#{v.join()}</div>")
$("input", teacherField).addClass("input-error")
getParams:() =>
params = {}
q = window.location.href.split("?")[1]