From 69bb4e469aa7546d7dd2ebf465353fdedcac8d62 Mon Sep 17 00:00:00 2001 From: Steven Miers Date: Mon, 31 Aug 2015 13:12:36 -0500 Subject: [PATCH] VRFS-3359 : Teacher Experience List Component * Add field label properties to experience list component. Each of the three lists can set labels for title and organization. Date label is inferred from showEndDate property * Update usages of this list * Sort by start_date * List display uses available fields (e.g., date range when available) --- ...eacherExperienceEditableList.js.jsx.coffee | 41 ++++++++++++------- .../TeacherSetupExperience.js.jsx.coffee | 25 +++++++---- .../stores/TeacherStore.js.coffee | 9 +++- 3 files changed, 52 insertions(+), 23 deletions(-) diff --git a/web/app/assets/javascripts/react-components/TeacherExperienceEditableList.js.jsx.coffee b/web/app/assets/javascripts/react-components/TeacherExperienceEditableList.js.jsx.coffee index 650f79e89..5d2f56c0c 100644 --- a/web/app/assets/javascripts/react-components/TeacherExperienceEditableList.js.jsx.coffee +++ b/web/app/assets/javascripts/react-components/TeacherExperienceEditableList.js.jsx.coffee @@ -3,23 +3,24 @@ rest = window.JK.Rest() logger = context.JK.logger @TeacherExperienceEditableList = React.createClass({ - #instruments: [] componentDidUnmount: () -> - #@instruments = [] + $root.off("submit", ".teacher-experience-teaching-form") componentDidMount: () -> $root = jQuery(this.getDOMNode()) - #rest.getInstruments().done (instruments) => - #@instruments = instruments - - $root.off("submit", ".teacher-experience-teaching-form").on("submit", ".teacher-experience-teaching-form", @addExperience) + $root.off("submit", ".teacher-experience-teaching-form").on("submit", ".teacher-experience-teaching-form", @addExperience) formatListItem: (obj) -> - "#{obj.name}" + t = "#{obj.name}/#{obj.organization} (#{obj.start_year}" + t += "-#{obj.end_year}" if this.props.showEndDate + t += ")" - listItems: () -> - logger.debug("listItems", this.props.listItems) - this.props.listItems + getInitialProps: () -> + {listItems: []} + + sortListItems: () -> + this.props.listItems ||= [] + this.props.listItems = _.sortBy(this.props.listItems, 'start_year') addExperience: (e) -> e.preventDefault() @@ -41,23 +42,33 @@ logger = context.JK.logger if this.props.showEndDate endDate.push ` ` + dtLabel = "Start & End" + else + dtLabel = "Date" + titleLabel = this.props.titleLabel + orgLabel = this.props.orgLabel + + titleLabel ||= "Title" + orgLabel ||= "School/Org" + + listItems= _.sortBy(this.props.listItems, 'start_year') `
- + - + - + @@ -65,6 +76,6 @@ logger = context.JK.logger
- + {endDate}
- +
` }) \ No newline at end of file diff --git a/web/app/assets/javascripts/react-components/TeacherSetupExperience.js.jsx.coffee b/web/app/assets/javascripts/react-components/TeacherSetupExperience.js.jsx.coffee index 51800cf6c..37c94d387 100644 --- a/web/app/assets/javascripts/react-components/TeacherSetupExperience.js.jsx.coffee +++ b/web/app/assets/javascripts/react-components/TeacherSetupExperience.js.jsx.coffee @@ -11,7 +11,11 @@ rest = window.JK.Rest() ] getInitialState: () -> - {} + { + experiences_teaching: [] + experiences_education: [] + experiences_award: [] + } screenName: () -> "experience" @@ -59,10 +63,6 @@ rest = window.JK.Rest() #this.forceUpdate() render: () -> - logger.debug("RENDERING TeacherSetupExperience", this.props, this.state) - instrumentsTaughtCheckboxes = [] - #instrumentsTaughtCheckboxes.push(``) - `
@@ -71,12 +71,23 @@ rest = window.JK.Rest()
- +
- +
diff --git a/web/app/assets/javascripts/react-components/stores/TeacherStore.js.coffee b/web/app/assets/javascripts/react-components/stores/TeacherStore.js.coffee index da86d0e17..970a739b5 100644 --- a/web/app/assets/javascripts/react-components/stores/TeacherStore.js.coffee +++ b/web/app/assets/javascripts/react-components/stores/TeacherStore.js.coffee @@ -18,6 +18,13 @@ EVENTS = context.JK.EVENTS onAppInit: (app) -> @app = app + defaultTeacher: -> + { + experiences_teaching: [] + experiences_education: [] + experiences_award: [] + } + onLoadTeacher: (options) -> logger.debug("onLoadTeacher", options) if !options? @@ -30,7 +37,7 @@ EVENTS = context.JK.EVENTS .fail((jqXHR, textStatus, errorMessage) => logger.debug("FAILED",jqXHR, textStatus, errorMessage) if (jqXHR.status==404) - this.trigger({teacher: {}}) + this.trigger({teacher: this.defaultTeacher()}) else context.JK.app.ajaxError(jqXHR, textStatus, errorMessage) )