From fee62c225bed6d02e12fae39e47dd3aee9562ae5 Mon Sep 17 00:00:00 2001 From: Steven Miers Date: Wed, 12 Aug 2015 13:03:32 -0500 Subject: [PATCH] VRFS-3359 : Navigation and additional styling/markup. --- ...fee => TeacherProfileBasics.js.jsx.coffee} | 24 ++-- .../TeacherSetupBasics.js.jsx.coffee | 64 ++++++++--- .../TeacherSetupIntroduction.js.jsx.coffee | 107 ++++++++++++++++++ .../TeacherSetupNav.js.jsx.coffee | 7 +- .../actions/TeacherActions.js.coffee | 2 +- .../mixins/TeacherMixin.js.coffee | 14 --- .../mixins/TeacherProfileMixin.js.coffee | 25 ++++ .../mixins/TeacherSetupMixin.js.coffee | 62 ++++++++++ .../stores/TeacherStore.js.coffee | 88 +++++++------- .../stylesheets/client/teachers.css.scss | 19 ++++ web/app/views/clients/index.html.erb | 9 +- .../clients/teachers/_setup_basics.html.slim | 26 ----- .../teachers/_setup_experience.html.slim | 24 ---- .../clients/teachers/_setup_pricing.html.slim | 24 ---- .../teachers/{ => profile}/_about.html.slim | 0 .../teachers/profile/_basics.html.slim | 13 +++ .../clients/teachers/setup/_basics.html.slim | 13 +++ .../teachers/setup/_experience.html.slim | 13 +++ .../_introduction.html.slim} | 3 +- .../clients/teachers/setup/_pricing.html.slim | 13 +++ 20 files changed, 372 insertions(+), 178 deletions(-) rename web/app/assets/javascripts/react-components/{TeacherProfile.js.jsx.coffee => TeacherProfileBasics.js.jsx.coffee} (87%) create mode 100644 web/app/assets/javascripts/react-components/TeacherSetupIntroduction.js.jsx.coffee delete mode 100644 web/app/assets/javascripts/react-components/mixins/TeacherMixin.js.coffee create mode 100644 web/app/assets/javascripts/react-components/mixins/TeacherProfileMixin.js.coffee create mode 100644 web/app/assets/javascripts/react-components/mixins/TeacherSetupMixin.js.coffee delete mode 100644 web/app/views/clients/teachers/_setup_basics.html.slim delete mode 100644 web/app/views/clients/teachers/_setup_experience.html.slim delete mode 100644 web/app/views/clients/teachers/_setup_pricing.html.slim rename web/app/views/clients/teachers/{ => profile}/_about.html.slim (100%) create mode 100644 web/app/views/clients/teachers/profile/_basics.html.slim create mode 100644 web/app/views/clients/teachers/setup/_basics.html.slim create mode 100644 web/app/views/clients/teachers/setup/_experience.html.slim rename web/app/views/clients/teachers/{_setup_introduction.html.slim => setup/_introduction.html.slim} (95%) create mode 100644 web/app/views/clients/teachers/setup/_pricing.html.slim diff --git a/web/app/assets/javascripts/react-components/TeacherProfile.js.jsx.coffee b/web/app/assets/javascripts/react-components/TeacherProfileBasics.js.jsx.coffee similarity index 87% rename from web/app/assets/javascripts/react-components/TeacherProfile.js.jsx.coffee rename to web/app/assets/javascripts/react-components/TeacherProfileBasics.js.jsx.coffee index 3576b27a5..605ca2a3f 100644 --- a/web/app/assets/javascripts/react-components/TeacherProfile.js.jsx.coffee +++ b/web/app/assets/javascripts/react-components/TeacherProfileBasics.js.jsx.coffee @@ -3,29 +3,21 @@ teacherActions = window.JK.Actions.Teacher logger = context.JK.logger rest = window.JK.Rest() -@TeacherProfile = React.createClass({ +@TeacherProfileBasics = React.createClass({ mixins: [ - @TeacherMixin, + @TeacherProfileMixin, Reflux.listenTo(@AppStore,"onAppInit"), Reflux.listenTo(TeacherStore, "onTeacherStateChanged") ] setTeacherError: () -> + screenName: () -> + "basics" getInitialState: () -> {} - beforeShow: (data) -> - logger.debug("TeacherProfile beforeShow", data, data.d) - - - if data? && data.d? - @teacherId = data.d - teacherActions.load.trigger({teacher_id: @teacherId}) - else - teacherActions.load.trigger({}) - onTeacherStateChanged: (changes) -> $root = jQuery(this.getDOMNode()) logger.debug("onTeacherStateChanged", changes, changes.errors?, changes.errors) @@ -62,9 +54,9 @@ rest = window.JK.Rest() }); logger.debug("capturedFormState", this.state, changes) - handleSave: (e) -> - logger.debug("HANDLESAVE: ", this.state, this, e) - teacherActions.change.trigger(this.state) + handleNav: (e) -> + logger.debug("handleNav: ", this.state, this, e) + teacherActions.change.trigger(this.state, e) render: () -> logger.debug("RENDERING", this.props, this.state) @@ -92,7 +84,7 @@ rest = window.JK.Rest() - + ` diff --git a/web/app/assets/javascripts/react-components/TeacherSetupBasics.js.jsx.coffee b/web/app/assets/javascripts/react-components/TeacherSetupBasics.js.jsx.coffee index b84fd70f8..cc7d083cc 100644 --- a/web/app/assets/javascripts/react-components/TeacherSetupBasics.js.jsx.coffee +++ b/web/app/assets/javascripts/react-components/TeacherSetupBasics.js.jsx.coffee @@ -5,29 +5,42 @@ rest = window.JK.Rest() @TeacherSetupBasics = React.createClass({ mixins: [ - @TeacherMixin, + @TeacherSetupMixin, Reflux.listenTo(@AppStore,"onAppInit"), Reflux.listenTo(TeacherStore, "onTeacherStateChanged") ] - setTeacherError: () -> + # onAppInit: (app) -> + # @app=app + # logger.debug("TeacherSetupBasics onAppInit", @app, document.referrer) + # screenBindings = { + # 'beforeShow': @beforeShow + # } + # logger.debug("Binding to: teachers/setup_basics") + # @app.bindScreen("teachers/setup_basics", screenBindings) + + # beforeShow: (data) -> + # logger.debug("TeacherSetupBasics beforeShow", data, data.d) + + # if data? && data.d? + # @teacherId = data.d + # teacherActions.load.trigger({teacher_id: @teacherId}) + # else + # teacherActions.load.trigger({}) + + setTeacherError: () -> getInitialState: () -> {} + screenName: () -> + "basics" + onTeacherStateChanged: (changes) -> $root = jQuery(this.getDOMNode()) - logger.debug("onTeacherStateChanged", changes, changes.errors?, changes.errors) - $(".error-text", $root).remove() - $(".input-error", $root).removeClass("input-error") - if changes.errors? - for k,v of changes.errors - logger.debug("error", k, v) - teacherField = $root.find(".teacher-field[name='#{k}']") - teacherField.append("
#{v.join()}
") - $("input", teacherField).addClass("input-error") - else + logger.debug("onTeacherBasicsStateChanged", changes, changes.errors?, changes.errors) + unless this.handleErrors(changes) teacher = changes.teacher logger.debug("@teacher", teacher) this.setState({ @@ -48,13 +61,28 @@ rest = window.JK.Rest() }); logger.debug("capturedFormState", this.state, changes) - handleSave: (e) -> - logger.debug("HANDLESAVE: ", this.state, this, e) - teacherActions.change.trigger(this.state) + handleNav: (e) -> + logger.debug("handleNav: ", this.state, this, e) + navTo = this.navDestination(e) + teacherActions.change.trigger(this.state, {navTo: navTo}) + + navDestination: (instructions) -> + navTo=null + if instructions? + logger.debug("handling instructions", instructions) + if instructions.direction=="cancel" + navTo = @teacherSetupSource() + else if instructions.direction=="back" + navTo = @teacherSetupDestination("introduction") + else if instructions.direction=="next" + navTo = @teacherSetupDestination("experience") # "/client#/teachers/setup/experience" + + navTo + render: () -> - logger.debug("RENDERING", this.props, this.state) - `
+ logger.debug("RENDERING TeacherSetupBasics", this.props, this.state) + `
@@ -78,7 +106,7 @@ rest = window.JK.Rest()
- +
` diff --git a/web/app/assets/javascripts/react-components/TeacherSetupIntroduction.js.jsx.coffee b/web/app/assets/javascripts/react-components/TeacherSetupIntroduction.js.jsx.coffee new file mode 100644 index 000000000..27a812632 --- /dev/null +++ b/web/app/assets/javascripts/react-components/TeacherSetupIntroduction.js.jsx.coffee @@ -0,0 +1,107 @@ +context = window +teacherActions = window.JK.Actions.Teacher +logger = context.JK.logger +rest = window.JK.Rest() + +@TeacherSetupIntroduction = React.createClass({ + mixins: [ + @TeacherSetupMixin, + Reflux.listenTo(@AppStore,"onAppInit"), + Reflux.listenTo(TeacherStore, "onTeacherStateChanged") + ] + + + + setTeacherError: () -> + + getInitialState: () -> + {} + + screenName: () -> + "introduction" + + navDestination: (instructions) -> + navTo=null + if instructions? + logger.debug("handling instructions", instructions) + if instructions.direction=="cancel" || instructions.direction=="back" + navTo = @teacherSetupSource() + else if instructions.direction=="next" + logger.debug("redireing to basics") + navTo = @teacherSetupDestination('basics') + navTo + # # onTeacherStateChanged: (changes) -> + # $root = jQuery(this.getDOMNode()) + # logger.debug("onTeacherIntroStateChanged", changes, changes.errors?, changes.errors) + + # unless this.handleErrors(changes) + # teacher = changes.teacher + # logger.debug("@teacher", teacher) + # this.setState({ + # biography: teacher.biography, + # introductory_video: teacher.introductory_video, + # years_teaching: teacher.years_teaching, + # years_playing: teacher.years_playing, + # validate_introduction: true + # }) + + onTeacherStateChanged: (changes) -> + $root = jQuery(this.getDOMNode()) + logger.debug("onTeacherIntroStateChanged", changes, changes.errors?, changes.errors) + unless this.handleErrors(changes) + teacher = changes.teacher + logger.debug("@teacher", teacher) + this.setState({ + biography: teacher.biography, + introductory_video: teacher.introductory_video, + years_teaching: teacher.years_teaching, + years_playing: teacher.years_playing, + validate_introduction: true + }) + + captureFormState: (changes) -> + $root = jQuery(this.getDOMNode()) + this.setState({ + biography: $root.find(".teacher-biography").val(), + introductory_video: $root.find(".teacher-introductory-video").val(), + years_teaching: $root.find(".years-teaching-experience").val(), + years_playing: $root.find(".years-playing-experience").val() + }); + logger.debug("capturedFormState", this.state, changes) + + handleNav: (e) -> + logger.debug("handleNav: ", this.state, this, e) + navTo = this.navDestination(e) + teacherActions.change.trigger(this.state, {navTo: navTo}) + + render: () -> + logger.debug("RENDERING TeacherSetupIntroduction", this.props, this.state) + `
+
+
+ +