loleaflet/src/layer/AnnotationManager.js | 73 +++++++++++++++++++++++++++++-- loleaflet/src/layer/marker/Annotation.js | 6 ++ loleaflet/src/layer/tile/TileLayer.js | 3 + 3 files changed, 77 insertions(+), 5 deletions(-)
New commits: commit 4b5c667d239f0775b9775b58bc7fb94a49d67670 Author: Henry Castro <hcas...@collabora.com> Date: Wed Feb 15 17:47:46 2017 -0400 loleaflet: sync annotations with server side diff --git a/loleaflet/src/layer/AnnotationManager.js b/loleaflet/src/layer/AnnotationManager.js index 3fef9d1..92ee3f6 100644 --- a/loleaflet/src/layer/AnnotationManager.js +++ b/loleaflet/src/layer/AnnotationManager.js @@ -65,7 +65,7 @@ L.AnnotationManager = L.Class.extend({ }, unselect: function () { - this._selected.annotation = null; + this._selected = {}; this._map.removeLayer(this._arrow); this.layout(); }, @@ -74,7 +74,7 @@ L.AnnotationManager = L.Class.extend({ var topRight = this._map.project(this._map.options.maxBounds.getNorthEast()); var annotation = this._items[id]; var point0, point1, point2, point3; - if (annotation.id !== id) { + if (!this._selected.annotation || this._selected.annotation._data.id !== annotation._data.id) { this._selected.annotation = annotation; this.layout(); point0 = this._map._docLayer._twipsToPixels(annotation._data.anchorPos); @@ -165,13 +165,44 @@ L.AnnotationManager = L.Class.extend({ this.unselect(); this._map.removeLayer(this._items[id]); delete this._items[id]; - this._map.focus(); + }, + + onACKComment: function (textMsg) { + textMsg = textMsg.substring('comment:'.length + 1); + var obj = JSON.parse(textMsg); + + if (obj.comment.action === 'Add') { + if (this._items['new']) { + delete obj.comment.action; + obj.comment.anchorPos = L.LOUtil.stringToPoint(obj.comment.anchorPos); + this._items[obj.comment.id] = this._items['new']; + this._items[obj.comment.id]._data = obj.comment; + this._items['new'] = null; + this._removeAnchor('new'); + this._anchors.push({anchor: obj.comment.anchorPos, id: obj.comment.id}); + this._anchors.sort(function(a, b) { + return Math.abs(a.anchor.y) - Math.abs(b.anchor.y); + }); + this._items[obj.comment.id]._updateContent(); + this.layout(); + } + + } else if (obj.comment.action === 'Remove') { + if (this._items[obj.comment.id]) { + // something wrong here + } + } else if (obj.comment.action === 'Modify') { + if (this._items[obj.comment.id] && this._items[obj.comment.id].text !== obj.comment.text) { + // something wrong here + } + } }, _onAnnotationCancel: function (e) { if (e.id === 'new') { this.remove(e.id); } + this._map.focus(); }, _onAnnotationClick: function (e) { @@ -185,11 +216,45 @@ L.AnnotationManager = L.Class.extend({ }, _onAnnotationRemove: function (id) { + var comment = { + Id: { + type: 'long', + value: id + } + }; + this._map.sendUnoCommand('.uno:DeleteComment', comment); this.remove(id); + this._map.focus(); }, _onAnnotationSave: function (e) { - this.layout(); + if (e.id === 'new') { + var comment = { + Text: { + type: 'string', + value: this._items[e.id]._data.text + }, + Author: { + type: 'string', + value: this._items[e.id]._data.author + } + }; + this._map.sendUnoCommand('.uno:InsertAnnotation', comment); + } else { + var comment = { + Id: { + type: 'long', + value: e.id + }, + Text: { + type: 'string', + value: this._items[e.id]._data.text + } + }; + this._map.sendUnoCommand('.uno:EditAnnotation', comment); + } + this.unselect(); + this._map.focus(); }, _removeAnchor: function (id) { diff --git a/loleaflet/src/layer/marker/Annotation.js b/loleaflet/src/layer/marker/Annotation.js index ca6afd4..53bb993 100644 --- a/loleaflet/src/layer/marker/Annotation.js +++ b/loleaflet/src/layer/marker/Annotation.js @@ -112,17 +112,20 @@ L.Annotation = L.Layer.extend({ }, _onCancelClick: function (e) { + L.DomEvent.stopPropagation(e); this._editText.value = this._contentText.innerHTML; this.show(); this._map.fire('AnnotationCancel', {id: this._data.id}); }, _onMouseClick: function (e) { + L.DomEvent.stopPropagation(e); this._map.fire('AnnotationClick', {id: this._data.id}); }, _onSaveClick: function (e) { - this._contentText.innerHTML = this._editText.value; + L.DomEvent.stopPropagation(e); + this._data.text = this._contentText.innerHTML = this._editText.value; this.show(); this._map.fire('AnnotationSave', {id: this._data.id}); }, @@ -138,6 +141,7 @@ L.Annotation = L.Layer.extend({ }, _updateContent: function () { + this._contentNode.setAttribute('id', this._data.id); this._contentText.innerHTML = this._editText.innerHTML = this._data.text; this._contentAuthor.innerHTML = this._editAuthor.innerHTML = this._data.author; this._contentDate.innerHTML = this._editDate.innerHTML = this._data.dateTime; diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js index 62180dd..6deb46e 100644 --- a/loleaflet/src/layer/tile/TileLayer.js +++ b/loleaflet/src/layer/tile/TileLayer.js @@ -397,6 +397,9 @@ L.TileLayer = L.GridLayer.extend({ else if (textMsg.startsWith('graphicviewselection:')) { this._onGraphicViewSelectionMsg(textMsg); } + else if (textMsg.startsWith('comment:')) { + this._annotations.onACKComment(textMsg); + } }, toggleTileDebugMode: function() { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits