[Libreoffice-commits] online.git: loleaflet/src
Pranav Kant
pranavk at collabora.co.uk
Thu Mar 9 08:39:40 UTC 2017
loleaflet/src/layer/AnnotationManager.js | 74 ++++++++++++++++++----------
loleaflet/src/layer/tile/WriterTileLayer.js | 14 ++++-
2 files changed, 60 insertions(+), 28 deletions(-)
New commits:
commit 88de8e97ccff051a4208f6759bfd76e33ed18c82
Author: Pranav Kant <pranavk at collabora.co.uk>
Date: Thu Mar 9 14:08:34 2017 +0530
loleaflet: Handle change tracking comments in multiview
Change-Id: Ib7d10b96e7d58f7578fe9b6fd8605eb3cfe8232f
diff --git a/loleaflet/src/layer/AnnotationManager.js b/loleaflet/src/layer/AnnotationManager.js
index 35d02f5..c7d13cc 100644
--- a/loleaflet/src/layer/AnnotationManager.js
+++ b/loleaflet/src/layer/AnnotationManager.js
@@ -61,6 +61,7 @@ L.AnnotationManager = L.Class.extend({
this.clearChanges();
for (var idx in redlines) {
changecomment = redlines[idx];
+ changecomment.id = 'change-' + changecomment.index;
changecomment.anchorPos = L.LOUtil.stringToPoint(changecomment.textRange);
changecomment.trackchange = true;
changecomment.text = changecomment.comment;
@@ -214,38 +215,59 @@ L.AnnotationManager = L.Class.extend({
this._map.focus();
},
- onACKComment: function (textMsg) {
- var obj = JSON.parse(textMsg.substring('comment:'.length + 1));
-
- if (obj.comment.action === 'Add') {
- var added = this.getItem('new');
- if (added) {
- delete obj.comment.action;
- obj.comment.anchorPos = obj.comment.anchorPos ? L.LOUtil.stringToPoint(obj.comment.anchorPos) :
- added._data.anchorPos;
- added._data = obj.comment;
- this._items.sort(function(a, b) {
- return Math.abs(a._data.anchorPos.y) - Math.abs(b._data.anchorPos.y) ||
- Math.abs(a._data.anchorPos.x) - Math.abs(b._data.anchorPos.x);
- });
- added.update();
- }
- else { // annotation is added by some other view
- this.add(obj.comment, false);
+ onACKComment: function (obj) {
+ var changetrack = obj.redline ? true : false;
+ var action = changetrack ? obj.redline.action : obj.comment.action;
+ console.log(obj);
+ if (action === 'Add') {
+ if (changetrack) {
+ // transform change tracking index into an id
+ obj.redline.id = 'change-' + obj.redline.index;
+ obj.redline.anchorPos = L.LOUtil.stringToPoint(obj.redline.textRange);
+ obj.redline.text = obj.redline.comment;
+ this.add(obj.redline, false);
this._map.focus();
+ } else {
+ var added = this.getItem('new');
+ if (added) {
+ delete obj.comment.action;
+ obj.comment.anchorPos = obj.comment.anchorPos ? L.LOUtil.stringToPoint(obj.comment.anchorPos) :
+ added._data.anchorPos;
+ added._data = obj.comment;
+ this._items.sort(function(a, b) {
+ return Math.abs(a._data.anchorPos.y) - Math.abs(b._data.anchorPos.y) ||
+ Math.abs(a._data.anchorPos.x) - Math.abs(b._data.anchorPos.x);
+ });
+ added.update();
+ }
+ else { // annotation is added by some other view
+ this.add(obj.comment, false);
+ this._map.focus();
+ }
}
this.layout();
- } else if (obj.comment.action === 'Remove') {
- if (this.getItem(obj.comment.id)) {
- this._map.removeLayer(this.removeItem(obj.comment.id));
+ } else if (action === 'Remove') {
+ var id = changetrack ? 'change-' + obj.redline.index : obj.comment.id;
+ if (this.getItem(id)) {
+ this._map.removeLayer(this.removeItem(id));
this.unselect();
}
- } else if (obj.comment.action === 'Modify') {
- var modified = this.getItem(obj.comment.id);
+ } else if (action === 'Modify') {
+ console.log(action);
+ id = changetrack ? 'change-' + obj.redline.index : obj.comment.id;
+ var modified = this.getItem(id);
if (modified) {
- obj.comment.anchorPos = obj.comment.anchorPos ? L.LOUtil.stringToPoint(obj.comment.anchorPos) :
- modified._data.anchorPos;
- modified._data = obj.comment;
+ var modifiedObj;
+ if (changetrack) {
+ obj.redline.anchorPos = obj.redline.anchorPos ? L.LOUtil.stringToPoing(obj.redline.anchorPos) : modified._data.anchorPos;
+ obj.redline.text = obj.redline.comment;
+ modifiedObj = obj.redline;
+ } else {
+ obj.comment.anchorPos = obj.comment.anchorPos ? L.LOUtil.stringToPoint(obj.comment.anchorPos) :
+ modified._data.anchorPos;
+ modifiedObj = obj.comment;
+ }
+ modified._data = modifiedObj;
modified.update();
this.update();
}
diff --git a/loleaflet/src/layer/tile/WriterTileLayer.js b/loleaflet/src/layer/tile/WriterTileLayer.js
index 34f1de7..b2013d5 100644
--- a/loleaflet/src/layer/tile/WriterTileLayer.js
+++ b/loleaflet/src/layer/tile/WriterTileLayer.js
@@ -46,8 +46,18 @@ L.WriterTileLayer = L.TileLayer.extend({
_onMessage: function (textMsg, img) {
if (textMsg.startsWith('comment:')) {
- this._annotations.onACKComment(textMsg);
- } else {
+ var obj = JSON.parse(textMsg.substring('comment:'.length + 1));
+ this._annotations.onACKComment(obj);
+ }
+ else if (textMsg.startsWith('redlinetablemodified:')) {
+ obj = JSON.parse(textMsg.substring('redlinetablemodified:'.length + 1));
+ this._annotations.onACKComment(obj);
+ }
+ else if (textMsg.startsWith('redlinetablechanged:')) {
+ obj = JSON.parse(textMsg.substring('redlinetablechanged:'.length + 1));
+ this._annotations.onACKComment(obj);
+ }
+ else {
L.TileLayer.prototype._onMessage.call(this, textMsg, img);
}
},
More information about the Libreoffice-commits
mailing list