From 0cef2e6ea27d872032e9b7f155a5fa9d3c0ec3ef Mon Sep 17 00:00:00 2001 From: chris <kokosias@yahoo.gr> Date: Mon, 19 Dec 2016 18:34:28 +0200 Subject: [PATCH] pass boolean for track changes and toggle in editor --- app/components/BookBuilder/Division.jsx | 3 +- app/components/SimpleEditor/SimpleEditor.jsx | 34 ++++++++++++++++++- app/components/SimpleEditor/SimpleEditor.scss | 21 ++++++++++++ .../SimpleEditor/SimpleEditorWrapper.jsx | 21 +++++++++--- 4 files changed, 72 insertions(+), 7 deletions(-) diff --git a/app/components/BookBuilder/Division.jsx b/app/components/BookBuilder/Division.jsx index 97238b8..9107389 100644 --- a/app/components/BookBuilder/Division.jsx +++ b/app/components/BookBuilder/Division.jsx @@ -43,7 +43,8 @@ export class Division extends React.Component { status: 'unpublished', author: '', source: '', - comments: {} + comments: {}, + trackChanges: false } add(book, newChapter) diff --git a/app/components/SimpleEditor/SimpleEditor.jsx b/app/components/SimpleEditor/SimpleEditor.jsx index c04ec07..b653a5f 100644 --- a/app/components/SimpleEditor/SimpleEditor.jsx +++ b/app/components/SimpleEditor/SimpleEditor.jsx @@ -18,6 +18,11 @@ export default class SimpleEditor extends React.Component { constructor (props) { super(props) this.save = this.save.bind(this) + this.toggleTrackChangesStatus = this.toggleTrackChangesStatus.bind(this) + + this.state = { + trackChanges: props.fragment.trackChanges + } } createSession () { @@ -42,6 +47,15 @@ export default class SimpleEditor extends React.Component { } } + toggleTrackChangesStatus () { + const { fragment, update } = this.props + fragment.trackChanges = !fragment.trackChanges + update(fragment) + this.setState({ + trackChanges: fragment.trackChanges + }) + } + save (source, changes, callback) { const { onSave } = this.props const config = this.state.config @@ -101,6 +115,7 @@ export default class SimpleEditor extends React.Component { render () { const { canEdit } = this.props + let viewMode = !canEdit ? ( <Alert bsStyle='warning' className='view-mode'> @@ -109,9 +124,25 @@ export default class SimpleEditor extends React.Component { ) : null + let trackChangeStatus = 'Off' + let trackChangesIconClass = 'fa-eye-slash' + + if (this.state.trackChanges === true) { + trackChangeStatus = 'On' + trackChangesIconClass = 'fa-eye' + } + + let trackChanges = + <Alert bsStyle='warning' className='track-changes'> + <span> + <i className={'fa ' + trackChangesIconClass} onClick={this.toggleTrackChangesStatus} /> + Track Changes is {trackChangeStatus} + </span> + </Alert> + return ( <div className='editor-wrapper'> - {viewMode} + {viewMode} {trackChanges} </div> ) } @@ -123,6 +154,7 @@ SimpleEditor.propTypes = { fragment: React.PropTypes.object.isRequired, history: React.PropTypes.object.isRequired, onSave: React.PropTypes.func.isRequired, + update: React.PropTypes.func.isRequired, updateComments: React.PropTypes.func.isRequired, user: React.PropTypes.object.isRequired } diff --git a/app/components/SimpleEditor/SimpleEditor.scss b/app/components/SimpleEditor/SimpleEditor.scss index dc46e4f..98652dd 100644 --- a/app/components/SimpleEditor/SimpleEditor.scss +++ b/app/components/SimpleEditor/SimpleEditor.scss @@ -38,6 +38,27 @@ $white: #fff; top: 10px; } } + + .track-changes { + height: 44px; + position: fixed; + right: 0; + text-align: center; + width: 20%; + z-index: 9999; + + span { + font-size: 14px; + position: relative; + top: 10px; + + i { + font-size: 20px; + padding-right: 10px; + cursor: pointer; + } + } + } } .sc-prose-editor { diff --git a/app/components/SimpleEditor/SimpleEditorWrapper.jsx b/app/components/SimpleEditor/SimpleEditorWrapper.jsx index 550324c..b0d0bfd 100644 --- a/app/components/SimpleEditor/SimpleEditorWrapper.jsx +++ b/app/components/SimpleEditor/SimpleEditorWrapper.jsx @@ -12,6 +12,7 @@ export class SimpleEditorWrapper extends React.Component { super(props) this.save = this.save.bind(this) + this.update = this.update.bind(this) this.updateComments = this.updateComments.bind(this) this._checkRights = this._checkRights.bind(this) @@ -65,9 +66,10 @@ export class SimpleEditorWrapper extends React.Component { updateFragment(book, fragment) } - // componentDidUpdate () { - // this._checkRights() - // } + componentDidUpdate () { + console.log('did update wrapper') + // this._checkRights() + } _checkRights () { const { fragment, user } = this.props @@ -99,10 +101,17 @@ export class SimpleEditorWrapper extends React.Component { updateFragment(book, fragment) } + update (newChapter) { + const { book } = this.props + const { updateFragment } = this.props.actions + updateFragment(book, newChapter) + } + render () { + console.log('render wrapper') const { book, fragment, history, user } = this.props - // console.log(fragment) + // TODO -- merge update and updateComments return ( <SimpleEditor book={book} @@ -110,6 +119,7 @@ export class SimpleEditorWrapper extends React.Component { fragment={fragment} history={history} onSave={this.save} + update={this.update} updateComments={this.updateComments} user={user} /> @@ -122,7 +132,8 @@ SimpleEditorWrapper.propTypes = { book: React.PropTypes.object.isRequired, fragment: React.PropTypes.object.isRequired, history: React.PropTypes.object.isRequired, - user: React.PropTypes.object.isRequired + user: React.PropTypes.object.isRequired, + update: React.PropTypes.func.isRequired } function mapStateToProps (state, ownProps) { -- GitLab