From 02b333a5cb6c998a8708ca2cfd4853cd9d6b408c Mon Sep 17 00:00:00 2001
From: chris <kokosias@yahoo.gr>
Date: Mon, 20 Feb 2017 20:40:22 +0200
Subject: [PATCH] initial track changes

---
 app/components/SimpleEditor/Editor.js         | 20 +++++++++----------
 app/components/SimpleEditor/config.js         |  4 ++--
 .../elements/note/EditNoteTool.js             |  3 ---
 .../track_change/TrackChangeControlTool.js    |  9 +++++++--
 .../TrackChangeControlViewTool.js             |  7 ++++++-
 .../track_change/TrackChangePackage.js        |  6 +++---
 .../track_change/TrackChangesProvider.js      | 15 +++++++-------
 .../panes/TableOfContents/TableOfContents.js  |  1 +
 8 files changed, 37 insertions(+), 28 deletions(-)

diff --git a/app/components/SimpleEditor/Editor.js b/app/components/SimpleEditor/Editor.js
index a325e1d..7629652 100644
--- a/app/components/SimpleEditor/Editor.js
+++ b/app/components/SimpleEditor/Editor.js
@@ -2,7 +2,7 @@ import { includes, some } from 'lodash'
 
 import {
   ProseEditor,
-  TOCProvider
+  TOCProvider,
 } from 'substance'
 
 import Comments from './panes/Comments/CommentBoxList'
@@ -11,7 +11,7 @@ import ContainerEditor from './ContainerEditor'
 import Notes from './panes/Notes/Notes'
 import NotesProvider from './panes/Notes/NotesProvider'
 import TableOfContents from './panes/TableOfContents/TableOfContents'
-// import TrackChangesProvider from './elements/track_change/TrackChangesProvider'
+import TrackChangesProvider from './elements/track_change/TrackChangesProvider'
 
 class Editor extends ProseEditor {
   constructor (parent, props) {
@@ -221,14 +221,14 @@ class Editor extends ProseEditor {
 
     // TODO -- do I need all of these?
     // track changes provider
-    // const trackChangesProvider = new TrackChangesProvider(doc, {
-    //   commandManager: this.commandManager,
-    //   containerId: this.props.containerId,
-    //   controller: this,
-    //   documentSession: this.documentSession,
-    //   surfaceManager: this.surfaceManager,
-    //   user: this.props.user
-    // })
+    const trackChangesProvider = new TrackChangesProvider(doc, {
+      commandManager: this.commandManager,
+      containerId: this.props.containerId,
+      controller: this,
+      documentSession: this.documentSession,
+      surfaceManager: this.surfaceManager,
+      user: this.props.user
+    })
 
     // attach all to context
     return {
diff --git a/app/components/SimpleEditor/config.js b/app/components/SimpleEditor/config.js
index e613737..4b8d772 100644
--- a/app/components/SimpleEditor/config.js
+++ b/app/components/SimpleEditor/config.js
@@ -25,7 +25,7 @@ import NotePackage from './elements/note/NotePackage'
 // import SourceNotePackage from './elements/source_note/SourceNotePackage'
 import ImagePackage from './elements/images/ImagePackage'
 //
-// import TrackChangePackage from './elements/track_change/TrackChangePackage'
+import TrackChangePackage from './elements/track_change/TrackChangePackage'
 
 // var DialoguePackage = require('./elements/dialogue/DialoguePackage')
 // var NumberedListPackage = require('./elements/numbered_list/NumberedListPackage')
@@ -66,7 +66,7 @@ let config = {
     config.import(CommentPackage)
     config.import(ImagePackage)
     //
-    // config.import(TrackChangePackage)
+    config.import(TrackChangePackage)
 
     // config.import(DialoguePackage)
     // config.import(NoStyleListPackage)
diff --git a/app/components/SimpleEditor/elements/note/EditNoteTool.js b/app/components/SimpleEditor/elements/note/EditNoteTool.js
index d0bc289..7aeae8a 100644
--- a/app/components/SimpleEditor/elements/note/EditNoteTool.js
+++ b/app/components/SimpleEditor/elements/note/EditNoteTool.js
@@ -61,9 +61,6 @@ class EditNoteTool extends Tool {
       const path = [selected.node.id, 'note-content']
       tx.set(path, noteContent)
     })
-
-    this.el.addClass('hidden')
-    console.log(this.el)
   }
 
   getSelection () {
diff --git a/app/components/SimpleEditor/elements/track_change/TrackChangeControlTool.js b/app/components/SimpleEditor/elements/track_change/TrackChangeControlTool.js
index 78761b1..63a14be 100644
--- a/app/components/SimpleEditor/elements/track_change/TrackChangeControlTool.js
+++ b/app/components/SimpleEditor/elements/track_change/TrackChangeControlTool.js
@@ -1,6 +1,11 @@
 import { Tool } from 'substance'
 
 class TrackChangeControlTool extends Tool {
+
+  getClassNames () {
+    return 'sm-target-track-change-enable'
+  }
+
   renderButton ($$) {
     const el = super.renderButton($$)
 
@@ -13,8 +18,8 @@ class TrackChangeControlTool extends Tool {
 
   getSurface () {
     const surfaceManager = this.context.surfaceManager
-    const containerId = this.context.controller.props.containerId
-    return surfaceManager.getSurface(containerId)
+    // const containerId = this.context.controller.props.containerId
+    return surfaceManager.getSurface('body')
   }
 
   isTrackChangesOn () {
diff --git a/app/components/SimpleEditor/elements/track_change/TrackChangeControlViewTool.js b/app/components/SimpleEditor/elements/track_change/TrackChangeControlViewTool.js
index cfcaef4..59b8ca3 100644
--- a/app/components/SimpleEditor/elements/track_change/TrackChangeControlViewTool.js
+++ b/app/components/SimpleEditor/elements/track_change/TrackChangeControlViewTool.js
@@ -1,6 +1,10 @@
 import { Tool } from 'substance'
 
 class TrackChangeControlViewTool extends Tool {
+
+  getClassNames () {
+    return 'sm-target-track-change-toggle-view'
+  }
   renderButton ($$) {
     const el = super.renderButton($$)
     if (this.getViewMode()) el.addClass('track-changes-view-active')
@@ -15,7 +19,8 @@ class TrackChangeControlViewTool extends Tool {
 
   getViewMode () {
     const editor = this.context.controller
-    const { trackChangesView } = editor.state
+    var trackChangesView = true
+    // const { trackChangesView } = editor.state
     return trackChangesView
   }
 }
diff --git a/app/components/SimpleEditor/elements/track_change/TrackChangePackage.js b/app/components/SimpleEditor/elements/track_change/TrackChangePackage.js
index ae4eef1..ce01b0c 100644
--- a/app/components/SimpleEditor/elements/track_change/TrackChangePackage.js
+++ b/app/components/SimpleEditor/elements/track_change/TrackChangePackage.js
@@ -9,7 +9,7 @@ import TrackChangeControlViewCommand from './TrackChangeControlViewCommand'
 
 export default {
   name: 'track-change',
-  configure: function (config) {
+  configure: function (config, { toolGroup }) {
     config.addNode(TrackChange)
 
     config.addComponent(TrackChange.type, TrackChangeComponent)
@@ -17,11 +17,11 @@ export default {
 
     // TODO -- both tools should go to the same target
     config.addTool('track-change-enable', TrackChangeControlTool, {
-      target: 'track-change-enable'
+      toolGroup: 'default'
     })
 
     config.addTool('track-change-toggle-view', TrackChangeControlViewTool, {
-      target: 'track-change-toggle-view'
+      toolGroup: 'default'
     })
 
     config.addCommand('track-change-enable', TrackChangeControlCommand)
diff --git a/app/components/SimpleEditor/elements/track_change/TrackChangesProvider.js b/app/components/SimpleEditor/elements/track_change/TrackChangesProvider.js
index 92cc99b..6cca43f 100644
--- a/app/components/SimpleEditor/elements/track_change/TrackChangesProvider.js
+++ b/app/components/SimpleEditor/elements/track_change/TrackChangesProvider.js
@@ -28,7 +28,7 @@ import {
 class TrackChangesProvider extends TOCProvider {
   constructor (document, config) {
     super(document, config)
-    config.documentSession.on('didUpdate', this.handleUndoRedo, this)
+    // config.documentSession.on('didUpdate', this.handleUndoRedo, this)
 
     // HACK -- use TOCProvider's event to capture new / deleted changes
     this.on('toc:updated', this.reComputeEntries, this)
@@ -653,14 +653,14 @@ class TrackChangesProvider extends TOCProvider {
   }
 
   // getExistingAnnotation () {
-  //   const documentSession = this.getDocumentSession()
+  //   const documentSession = this.getEditorSession()
   //   const selectionState = documentSession.getSelectionState()
   //   const annotations = selectionState.getAnnotationsForType('track-change')
   //   return annotations[0]
   // }
 
   getAllExistingTrackAnnotations () {
-    const documentSession = this.getDocumentSession()
+    const documentSession = this.getEditorSession()
     const selectionState = documentSession.getSelectionState()
     const annotations = selectionState.getAnnotationsForType('track-change')
     return annotations
@@ -752,12 +752,12 @@ class TrackChangesProvider extends TOCProvider {
     const deletedOp = deleted[keys(deleted)[0]]
     if (!deletedOp.type === 'track-change') return
 
-    const documentSession = this.getDocumentSession()
+    const documentSession = this.getEditorSession()
     documentSession.undo()
   }
 
   handleRedo () {
-    const documentSession = this.getDocumentSession()
+    const documentSession = this.getEditorSession()
     const undoneChanges = documentSession.undoneChanges
     const lastChange = last(undoneChanges)
     const op = last(lastChange.ops)
@@ -850,8 +850,8 @@ class TrackChangesProvider extends TOCProvider {
     return this.config.user.id
   }
 
-  getDocumentSession () {
-    return this.config.documentSession
+  getEditorSession () {
+    return this.config.editorSession
   }
 
   getMode () {
@@ -861,6 +861,7 @@ class TrackChangesProvider extends TOCProvider {
 
   getSelection () {
     const surface = this.getSurface()
+    console.log('surface', surface)
     return surface.getSelection()
   }
 
diff --git a/app/components/SimpleEditor/panes/TableOfContents/TableOfContents.js b/app/components/SimpleEditor/panes/TableOfContents/TableOfContents.js
index 53e7981..6cd695e 100644
--- a/app/components/SimpleEditor/panes/TableOfContents/TableOfContents.js
+++ b/app/components/SimpleEditor/panes/TableOfContents/TableOfContents.js
@@ -12,6 +12,7 @@ class TableOfContents extends Toc {
 
       this.rerender()
     })
+    // this.on('toc:updated', this.reComputeEntries, this)
   }
 
   render ($$) {
-- 
GitLab