loleaflet/src/layer/tile/ImpressTileLayer.js | 60 ++++++++++++++++++--------- 1 file changed, 42 insertions(+), 18 deletions(-)
New commits: commit 00fb1aeddd458327aedc63c81cc3b1d5a6fadfaf Author: Henry Castro <hcas...@collabora.com> Date: Tue Mar 14 20:41:40 2017 -0400 loleaflet: fix annotations of each slide Change-Id: I85a27aadad9b03c8a190d3a4b2af7bcb86550a01 diff --git a/loleaflet/src/layer/tile/ImpressTileLayer.js b/loleaflet/src/layer/tile/ImpressTileLayer.js index 8afd5c7..2584679 100644 --- a/loleaflet/src/layer/tile/ImpressTileLayer.js +++ b/loleaflet/src/layer/tile/ImpressTileLayer.js @@ -12,6 +12,7 @@ L.ImpressTileLayer = L.TileLayer.extend({ }, beforeAdd: function (map) { + map.on('updateparts', this.onUpdateParts, this); map.on('AnnotationCancel', this.onAnnotationCancel, this); map.on('AnnotationSave', this.onAnnotationSave, this); map.on('AnnotationScrollUp', this.onAnnotationScrollUp, this); @@ -19,17 +20,25 @@ L.ImpressTileLayer = L.TileLayer.extend({ }, getAnnotation: function (id) { - for (var index in this._annotations) { - if (this._annotations[index]._data.id === id) { - return this._annotations[index]; + var annotations = this._annotations[this._partHashes[this._selectedPart]]; + for (var index in annotations) { + if (annotations[index]._data.id === id) { + return annotations[index]; } } return null; }, + hideAnnotations: function (part) { + var annotations = this._annotations[this._partHashes[part]]; + for (var index in annotations) { + annotations[index].hide(); + } + }, + onAdd: function (map) { L.TileLayer.prototype.onAdd.call(this, map); - this._annotations = []; + this._annotations = {}; }, onAnnotationCancel: function (e) { @@ -82,7 +91,7 @@ L.ImpressTileLayer = L.TileLayer.extend({ }, onAnnotationScrollDown: function (e) { - this._topAnnotation = Math.min(++this._topAnnotation, this._annotations.length - 1); + this._topAnnotation = Math.min(++this._topAnnotation, this._annotations[this._partHashes[this._selectedPart]].length - 1); this.layoutAnnotations(); }, @@ -91,21 +100,30 @@ L.ImpressTileLayer = L.TileLayer.extend({ this.layoutAnnotations(); }, + onUpdateParts: function (e) { + if (typeof this._prevSelectedPart === 'number') { + this.hideAnnotations(this._prevSelectedPart); + this.layoutAnnotations(); + } + }, + removeAnnotation: function (id) { - for (var index in this._annotations) { - if (this._annotations[index]._data.id == id) { - this._map.removeLayer(this._annotations[index]); - this._annotations.splice(index, 1); + var annotations = this._annotations[this._partHashes[this._selectedPart]]; + for (var index in annotations) { + if (annotations[index]._data.id == id) { + this._map.removeLayer(annotations[index]); + annotations.splice(index, 1); break; } } }, layoutAnnotations: function () { + var annotations = this._annotations[this._partHashes[this._selectedPart]]; var topRight = this._map.latLngToLayerPoint(this._map.options.maxBounds.getNorthEast()).add(L.point(this.options.marginX, this.options.marginY)); var bounds, annotation; - for (var index in this._annotations) { - annotation = this._annotations[index]; + for (var index in annotations) { + annotation = annotations[index]; if (index >= this._topAnnotation) { annotation.setLatLng(bounds ? this._map.layerPointToLatLng(bounds.getBottomLeft()) : this._map.layerPointToLatLng(topRight)); bounds = annotation.getBounds(); @@ -133,9 +151,13 @@ L.ImpressTileLayer = L.TileLayer.extend({ } if (values.comments) { + this._annotations = {}; for (var index in values.comments) { comment = values.comments[index]; - this._annotations.push(L.annotation(this._map.options.maxBounds.getSouthEast(), comment).addTo(this._map)); + if (!this._annotations[comment.parthash]) { + this._annotations[comment.parthash] = []; + } + this._annotations[comment.parthash].push(L.annotation(this._map.options.maxBounds.getSouthEast(), comment).addTo(this._map)); } this._topAnnotation = 0; this.layoutAnnotations(); @@ -148,12 +170,15 @@ L.ImpressTileLayer = L.TileLayer.extend({ if (textMsg.startsWith('comment:')) { var obj = JSON.parse(textMsg.substring('comment:'.length + 1)); if (obj.comment.action === 'Add') { - this._annotations.push(L.annotation(this._map.options.maxBounds.getSouthEast(), obj.comment).addTo(this._map)); - this._topAnnotation = Math.min(this._topAnnotation, this._annotations.length - 1); + if (!this._annotations[obj.comment.parthash]) { + this._annotations[obj.comment.parthash] = []; + } + this._annotations[obj.comment.parthash].push(L.annotation(this._map.options.maxBounds.getSouthEast(), obj.comment).addTo(this._map)); + this._topAnnotation = Math.min(this._topAnnotation, this._annotations[this._partHashes[this._selectedPart]].length - 1); this.layoutAnnotations(); } else if (obj.comment.action === 'Remove') { this.removeAnnotation(obj.comment.id); - this._topAnnotation = Math.min(this._topAnnotation, this._annotations.length - 1); + this._topAnnotation = Math.min(this._topAnnotation, this._annotations[this._partHashes[this._selectedPart]].length - 1); this.layoutAnnotations(); } else if (obj.comment.action === 'Modify') { var modified = this.getAnnotation(obj.comment.id); @@ -313,13 +338,12 @@ L.ImpressTileLayer = L.TileLayer.extend({ } var partMatch = textMsg.match(/[^\r\n]+/g); // only get the last matches - var partHashes = partMatch.slice(partMatch.length - this._parts); - // var partNames = partMatch.slice(partMatch.length - 2 * this._parts, partMatch.length - this._parts - 1); + this._partHashes = partMatch.slice(partMatch.length - this._parts); this._map.fire('updateparts', { selectedPart: this._selectedPart, parts: this._parts, docType: this._docType, - partNames: partHashes + partNames: this._partHashes }); } } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits