From 176f2b9e2fa83bed8e2e7b69a7352eb9bb3b76d3 Mon Sep 17 00:00:00 2001 From: Steven Miers Date: Sat, 8 Aug 2015 15:01:22 -0500 Subject: [PATCH] VRFS-3359 : Initial react components. --- .../SessionMediaTracks.js.jsx.coffee | 7 +- .../SessionMetronome.js.jsx.coffee | 1 + .../TeacherProfile.js.jsx.coffee | 99 +++++++++++++++++++ .../TeacherSetupBasics.js.jsx.coffee | 85 ++++++++++++++++ .../TeacherSetupNav.js.jsx.coffee | 25 +++++ .../actions/TeacherActions.js.coffee | 8 ++ .../mixins/TeacherMixin.js.coffee | 14 +++ .../stores/TeacherStore.js.coffee | 59 +++++++++++ 8 files changed, 294 insertions(+), 4 deletions(-) create mode 100644 web/app/assets/javascripts/react-components/TeacherProfile.js.jsx.coffee create mode 100644 web/app/assets/javascripts/react-components/TeacherSetupBasics.js.jsx.coffee create mode 100644 web/app/assets/javascripts/react-components/TeacherSetupNav.js.jsx.coffee create mode 100644 web/app/assets/javascripts/react-components/actions/TeacherActions.js.coffee create mode 100644 web/app/assets/javascripts/react-components/mixins/TeacherMixin.js.coffee create mode 100644 web/app/assets/javascripts/react-components/stores/TeacherStore.js.coffee diff --git a/web/app/assets/javascripts/react-components/SessionMediaTracks.js.jsx.coffee b/web/app/assets/javascripts/react-components/SessionMediaTracks.js.jsx.coffee index f72068f29..d4d50a8ae 100644 --- a/web/app/assets/javascripts/react-components/SessionMediaTracks.js.jsx.coffee +++ b/web/app/assets/javascripts/react-components/SessionMediaTracks.js.jsx.coffee @@ -263,10 +263,9 @@ ChannelGroupIds = context.JK.ChannelGroupIds # All the JamTracks mediaTracks.push(``) - # this is not ready yet until VRFS-3363 is done - #if @state.metronome? - # @state.metronome.mode = MIX_MODES.PERSONAL - # mediaTracks.push(``) + if @state.metronome? + @state.metronome.mode = MIX_MODES.PERSONAL + mediaTracks.push(``) for jamTrack in @state.jamTracks jamTrack.mode = MIX_MODES.PERSONAL diff --git a/web/app/assets/javascripts/react-components/SessionMetronome.js.jsx.coffee b/web/app/assets/javascripts/react-components/SessionMetronome.js.jsx.coffee index d1231642d..aa7654c7e 100644 --- a/web/app/assets/javascripts/react-components/SessionMetronome.js.jsx.coffee +++ b/web/app/assets/javascripts/react-components/SessionMetronome.js.jsx.coffee @@ -33,6 +33,7 @@ MIX_MODES = context.JK.MIX_MODES "session-track" : true "metronome" : true "no-mixer" : @props.mode == MIX_MODES.MASTER # show it as disabled if in master mode + "in-jam-track" : @props.location == 'jam-track' }) pan = if mixers.mixer? then mixers.mixer?.pan else 0 diff --git a/web/app/assets/javascripts/react-components/TeacherProfile.js.jsx.coffee b/web/app/assets/javascripts/react-components/TeacherProfile.js.jsx.coffee new file mode 100644 index 000000000..3576b27a5 --- /dev/null +++ b/web/app/assets/javascripts/react-components/TeacherProfile.js.jsx.coffee @@ -0,0 +1,99 @@ +context = window +teacherActions = window.JK.Actions.Teacher +logger = context.JK.logger +rest = window.JK.Rest() + +@TeacherProfile = React.createClass({ + mixins: [ + @TeacherMixin, + Reflux.listenTo(@AppStore,"onAppInit"), + Reflux.listenTo(TeacherStore, "onTeacherStateChanged") + ] + + setTeacherError: () -> + + + 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) + $(".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") + #$(".error-text", teacherField).show() + + else + 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) + + handleSave: (e) -> + logger.debug("HANDLESAVE: ", this.state, this, e) + teacherActions.change.trigger(this.state) + + render: () -> + logger.debug("RENDERING", this.props, this.state) + `
+
+
+ +