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