From ce1061cf008f577893a154af87ebdb9df160abb4 Mon Sep 17 00:00:00 2001
From: chris <kokosias@yahoo.gr>
Date: Wed, 5 Apr 2017 19:45:17 +0300
Subject: [PATCH] both editors listen throught same provider to compute their
 nodes (needs to write cleaner notesProvider)

---
 app/components/SimpleEditor/Editor.js         |  4 +-
 .../SimpleEditor/miniEditor/miniEditor.js     | 11 +++++
 .../SimpleEditor/panes/Notes/Notes.js         |  3 +-
 .../SimpleEditor/panes/Notes/NotesProvider.js | 41 +++++++++++++++++--
 4 files changed, 53 insertions(+), 6 deletions(-)

diff --git a/app/components/SimpleEditor/Editor.js b/app/components/SimpleEditor/Editor.js
index 23c4aa4..0c00599 100644
--- a/app/components/SimpleEditor/Editor.js
+++ b/app/components/SimpleEditor/Editor.js
@@ -259,7 +259,9 @@ class Editor extends ProseEditor {
     })
 
     // notes provider
-    const notesProvider = new NotesProvider(doc)
+    const notesProvider = new NotesProvider(doc, {
+      miniEditorSession: ''
+    })
 
     // comments provider
     const commentsProvider = new CommentsProvider(doc, {
diff --git a/app/components/SimpleEditor/miniEditor/miniEditor.js b/app/components/SimpleEditor/miniEditor/miniEditor.js
index a23db04..bd036f4 100644
--- a/app/components/SimpleEditor/miniEditor/miniEditor.js
+++ b/app/components/SimpleEditor/miniEditor/miniEditor.js
@@ -8,6 +8,17 @@ import Comments from '../panes/Comments/CommentBoxList'
 import CommentsProvider from '../panes/Comments/CommentsProvider'
 
 class MiniEditor extends ProseEditor {
+
+  didMount () {
+    this.editorSession.onUpdate('document', this.setEditorSession, this)
+    this.context.notesProvider.config.miniEditorSession = this.editorSession
+  }
+
+  setEditorSession () {
+    this.context.notesProvider.config.miniEditorSession = this.editorSession
+    this.context.notesProvider.computeEntries()
+  }
+
   render ($$) {
     const el = $$('div').addClass('sc-mini-editor')
     let toolbar = this._renderMiniToolbar($$)
diff --git a/app/components/SimpleEditor/panes/Notes/Notes.js b/app/components/SimpleEditor/panes/Notes/Notes.js
index aff2ebf..cc131e2 100644
--- a/app/components/SimpleEditor/panes/Notes/Notes.js
+++ b/app/components/SimpleEditor/panes/Notes/Notes.js
@@ -55,7 +55,7 @@ class Notes extends Component {
     configurator.addImporter('html', Importer)
 
     const importer = configurator.createImporter('html')
-    const doc = importer.importDocument('Hello')
+    const doc = importer.importDocument('')
 
     const editorSession = new EditorSession(doc, {
       configurator: configurator
@@ -75,6 +75,7 @@ class Notes extends Component {
   onNotesUpdated (change) {
     const notesProvider = this.getProvider()
     notesProvider.handleDocumentChange(change)
+    this.context.notesProvider.config.miniEditorSession = this._initMiniEditor()
     this.rerender()
   }
 
diff --git a/app/components/SimpleEditor/panes/Notes/NotesProvider.js b/app/components/SimpleEditor/panes/Notes/NotesProvider.js
index ba3fe34..277e424 100644
--- a/app/components/SimpleEditor/panes/Notes/NotesProvider.js
+++ b/app/components/SimpleEditor/panes/Notes/NotesProvider.js
@@ -4,15 +4,24 @@ import { TOCProvider } from 'substance'
 
 class NotesProvider extends TOCProvider {
   computeEntries () {
-    const doc = this.getDocument()
-    const nodes = doc.getNodes()
+    const docMain = this.getDocument()
+    const nodesMain = docMain.getNodes()
 
+    const docMini = this.config.miniEditorSession.document
+    let nodesMini = ''
+    if (docMini) nodesMini = docMini.getNodes()
     // get all notes from the document
-    const notes = _.pickBy(nodes, function (value, key) {
+    const notesMain = _.pickBy(nodesMain, function (value, key) {
+      return value.type === 'note'
+    })
+
+    const notesMini = _.pickBy(nodesMini, function (value, key) {
       return value.type === 'note'
     })
 
-    const entries = this.sortNodes(notes)
+    const entries = this.sortNodes(notesMain)
+    const entriesMini = this.sortNodesMini(notesMini)
+    console.log(entries, entriesMini)
     return entries
   }
 
@@ -41,6 +50,30 @@ class NotesProvider extends TOCProvider {
 
     return _.sortBy(notes, ['blockPosition', 'nodePosition'])
   }
+
+  sortNodesMini (nodes) {
+    let notes = _.clone(nodes)
+    if (this.config.miniEditorSession === '') return
+
+    const doc = this.config.miniEditorSession.document
+    const container = doc.get('mini')
+
+    notes = _.map(notes, function (note) {
+      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
+      }
+    })
+
+    return _.sortBy(notes, ['blockPosition', 'nodePosition'])
+  }
 }
 
 NotesProvider.tocTypes = ['note']
-- 
GitLab