From d3dd110db6fec7e67a86ecea1c4e7f39de5cea0f Mon Sep 17 00:00:00 2001 From: chris <kokosias@yahoo.gr> Date: Thu, 6 Apr 2017 00:02:24 +0300 Subject: [PATCH] click on a note callout on editor scrolls to the corresponding in mini editor --- app/components/SimpleEditor/Editor.js | 4 +++- .../elements/note/EditNoteTool.js | 7 +++++- .../SimpleEditor/miniEditor/miniEditor.js | 7 ++++++ .../SimpleEditor/panes/Notes/Notes.js | 2 +- .../SimpleEditor/panes/Notes/NotesProvider.js | 23 ++++++++++--------- 5 files changed, 29 insertions(+), 14 deletions(-) diff --git a/app/components/SimpleEditor/Editor.js b/app/components/SimpleEditor/Editor.js index 0c00599..25460f1 100644 --- a/app/components/SimpleEditor/Editor.js +++ b/app/components/SimpleEditor/Editor.js @@ -52,6 +52,7 @@ class Editor extends ProseEditor { didMount () { this.extendState({ editorReady: true }) + this.on('noteSelected', this.scrollTo, this) } render ($$) { @@ -260,7 +261,8 @@ class Editor extends ProseEditor { // notes provider const notesProvider = new NotesProvider(doc, { - miniEditorSession: '' + miniEditorSession: '', + miniEditorContext: '' }) // comments provider diff --git a/app/components/SimpleEditor/elements/note/EditNoteTool.js b/app/components/SimpleEditor/elements/note/EditNoteTool.js index 0d4569d..cda6b8b 100644 --- a/app/components/SimpleEditor/elements/note/EditNoteTool.js +++ b/app/components/SimpleEditor/elements/note/EditNoteTool.js @@ -20,6 +20,7 @@ class EditNoteTool extends Tool { render ($$) { const miniEditorSession = this._initMiniEditor() const selected = this.getSelection() + const provider = this.getProvider() let el = $$('div').addClass('sc-edit-note-tool') @@ -28,7 +29,7 @@ class EditNoteTool extends Tool { el.append($$(MiniEditor, { editorSession: miniEditorSession })) - + provider.config.miniEditorContext.editor.emit('noteSelected', 'paragraph-71bf75436a5f9b56700064c6ee2116ab') return el } @@ -125,6 +126,10 @@ class EditNoteTool extends Tool { } } + getProvider () { + return this.context.notesProvider + } + getSurface () { const surfaceManager = this.context.surfaceManager return surfaceManager.getFocusedSurface() diff --git a/app/components/SimpleEditor/miniEditor/miniEditor.js b/app/components/SimpleEditor/miniEditor/miniEditor.js index bd036f4..c2fbda2 100644 --- a/app/components/SimpleEditor/miniEditor/miniEditor.js +++ b/app/components/SimpleEditor/miniEditor/miniEditor.js @@ -10,11 +10,14 @@ import CommentsProvider from '../panes/Comments/CommentsProvider' class MiniEditor extends ProseEditor { didMount () { + this.context.notesProvider.config.miniEditorContext = this.getChildContext() this.editorSession.onUpdate('document', this.setEditorSession, this) this.context.notesProvider.config.miniEditorSession = this.editorSession + this.on('noteSelected', this.scrollTo, this) } setEditorSession () { + this.context.notesProvider.config.miniEditorContext = this.getChildContext() this.context.notesProvider.config.miniEditorSession = this.editorSession this.context.notesProvider.computeEntries() } @@ -78,6 +81,10 @@ class MiniEditor extends ProseEditor { }).ref('mini_body') } + scrollTo (nodeId) { + this.refs.miniEditorContentPanel.scrollTo(nodeId) + } + getChildContext () { const oldContext = super.getChildContext() const doc = this.doc diff --git a/app/components/SimpleEditor/panes/Notes/Notes.js b/app/components/SimpleEditor/panes/Notes/Notes.js index cb0742c..5ae4767 100644 --- a/app/components/SimpleEditor/panes/Notes/Notes.js +++ b/app/components/SimpleEditor/panes/Notes/Notes.js @@ -80,7 +80,7 @@ class Notes extends Component { onNotesUpdated (change) { const notesProvider = this.getProvider() notesProvider.handleDocumentChange(change) - this.el.el.style.height = '95px' + // this.el.el.style.height = '95px' } dispose () { diff --git a/app/components/SimpleEditor/panes/Notes/NotesProvider.js b/app/components/SimpleEditor/panes/Notes/NotesProvider.js index b167e6d..ced57c1 100644 --- a/app/components/SimpleEditor/panes/Notes/NotesProvider.js +++ b/app/components/SimpleEditor/panes/Notes/NotesProvider.js @@ -10,13 +10,13 @@ class NotesProvider extends TOCProvider { const docMini = this.config.miniEditorSession.document let nodesMini = '' if (docMini) nodesMini = docMini.getNodes() + if(docMini)console.log('paragraphs', nodesMini) // get all notes from the document const notesMain = _.pickBy(nodesMain, function (value, key) { return value.type === 'note' }) - const notesMini = _.pickBy(nodesMini, function (value, key) { - return value.type === 'strong' + return value.type === 'paragraph' }) const entries = this.sortNodes(notesMain) @@ -58,21 +58,22 @@ class NotesProvider extends TOCProvider { const doc = this.config.miniEditorSession.document const container = doc.get('body') + console.log(notes) notes = _.map(notes, function (note) { - const blockId = note.path[0] - const blockPosition = container.getPosition(blockId) - const nodePosition = note.start.offset + // const blockId = note.path[0] + // const blockPosition = container.getPosition(blockId) + // const nodePosition = note.start.offset return { id: note.id, - content: note['note-content'], - blockPosition: blockPosition, - nodePosition: nodePosition, - node: note + content: note.content + // blockPosition: blockPosition, + // nodePosition: nodePosition, + // node: note } }) - - return _.sortBy(notes, ['blockPosition', 'nodePosition']) + return notes + // return _.sortBy(notes, ['blockPosition', 'nodePosition']) } } -- GitLab