From a69d801aaf059e248db2148a082af8d938666c3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nils=20Norman=20Hauk=C3=A5s?= Date: Sun, 29 Nov 2015 20:26:20 +0100 Subject: [PATCH] Fix: updating savedSelection removes previous rangy marker. Is now able to tag multiple tags. But need to figure out how to add them all back to the page in the right places. As soon as one starts adding new content to the html it throws of the addition of the other tags. --- src/services/webpage.service.ts | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/services/webpage.service.ts b/src/services/webpage.service.ts index c41e578..fec6474 100644 --- a/src/services/webpage.service.ts +++ b/src/services/webpage.service.ts @@ -38,7 +38,7 @@ module tagIt { this.tagStorageService.deleteTagById(evt.target.parentElement.id); } else if (this.findSelectedText()) { - this.savedSelection = rangy.saveSelection(); + this.updateSavedSelection(); callbackOnSelectFunc(joinLongWords(this.findSelectedText())); } else { callbackOnDeSelectFunc(); @@ -83,7 +83,7 @@ module tagIt { rangy.removeMarkers(this.savedSelection); var range = rangy.getSelection().getRangeAt(0); var serializedRange = rangy.serializeRange( - range, false, document.getElementById('tagit-body')); + range, true, document.getElementById('tagit-body')); var generatedUuid: string = uuid.v4(); // this.surroundRangeWithSpan(sense, range, generatedUuid); @@ -96,7 +96,7 @@ module tagIt { serializedSelectionRange: serializedRange } }; - + removeAllTagsFromPage() { // find all tags var elements = document.getElementsByClassName('tagit-tag'); @@ -161,6 +161,13 @@ module tagIt { return deserializedRange; } } + + private updateSavedSelection() { + if (this.savedSelection) { + rangy.removeMarkers(this.savedSelection); + } + this.savedSelection = rangy.saveSelection(); + } private surroundRangeWithSpan(sense: ISense, range: Range, uuid: string) { // add span around content