| author | durandn |
| Tue, 15 Nov 2016 14:42:02 +0100 | |
| changeset 245 | 51c9ac85fac0 |
| parent 156 | e1e14766f608 |
| permissions | -rw-r--r-- |
<template src='./template.html'></template> <style scoped src='./style.css'></style> <script> import ModalPanel from '../modalpanel/ModalPanel.vue' export default { components: { 'modalpanel': ModalPanel }, mounted: function () {}, props: ['transform-matrix', 'image-path', 'image-height', 'image-width'], data () { return { diffText: "", tagMode: false, textMode: false, fragmentMode: false, originalPath: "", modifiedPath: "", tags: [] } }, mounted () { return false; }, computed: { matrixTransform: function () { var matrixTransform = ""; if (this.transformMatrix) { matrixTransform = "matrix(" + this.transformMatrix + ")"; } return matrixTransform; } }, methods: { setContent: function (content) { this.$refs.modalcontent.appendChild(content); }, switchMode: function (mode) { var availableMode = ["tagMode", "textMode", "fragmentMode"]; this.tagMode = false; this.textMode = false; this.fragmentMode = false; if (availableMode.indexOf(mode) !== -1) { this[mode] = true; } }, showTagDiff: function (tags, editedTags) { this.switchMode("tagMode"); //si le label a changé considé qu'il a été effacé. var diff = iconolab.JsonDiff.diff(tags, editedTags); var tagsToRender = []; tags.forEach(function(tag, i) { var tag = JSON.parse(JSON.stringify(tag)); var deletedDiff = diff["_"+i]; var currentDiff = diff[i]; if (!deletedDiff && !currentDiff) { tagsToRender.push(tag); //render this tag } if (Array.isArray(deletedDiff)) { tag.action = "del"; tagsToRender.push(tag); return true; } if (currentDiff && (currentDiff.tag_label || currentDiff.relevancy || currentDiff.accuracy)) { tag.action = (currentDiff.tag_label) ? "replace" : "update"; tag.new_label = editedTags[i].tag_label; tag.new_accuracy = editedTags[i].accuracy; tag.new_relevancy = editedTags[i].relevancy; tagsToRender.push(tag); return true; } if (Array.isArray(currentDiff)) { tag.action = "add"; tagsToRender.push(editedTags[i]); return true; } }); /* deal with remain */ if (tags.length < editedTags.length) { var remainedTags = editedTags.slice(tags.length); remainedTags.forEach(function (tag, i) { tag.action = "add"; tagsToRender.push(tag); }); } this.tags = tagsToRender; }, showTextDiff: function (original, mod) { this.switchMode("textMode"); var diff = iconolab.JsDiff.diffWords(original, mod); var fragment = document.createDocumentFragment(); for (var i=0; i < diff.length; i++) { if (diff[i].added && diff[i + 1] && diff[i + 1].removed) { var swap = diff[i]; diff[i] = diff[i + 1]; diff[i + 1] = swap; } var node; if (diff[i].removed) { node = document.createElement('del'); node.appendChild(document.createTextNode(diff[i].value)); } else if (diff[i].added) { node = document.createElement('ins'); node.appendChild(document.createTextNode(diff[i].value)); } else { node = document.createTextNode(diff[i].value); } fragment.appendChild(node); } this.diffText = jQuery('<div>').append(fragment).html(); }, showFragmentDiff: function (originalPath, modifiedPath) { this.switchMode("fragmentMode"); this.originalPath = originalPath; this.modifiedPath = modifiedPath; }, show: function () { this.$refs.panel.show(); }, hide: function () { this.$refs.panel.hide(); } } } </script>