client/js/renderer/edge.js
changeset 633 fdff56da097d
parent 532 030f2e4c0664
--- a/client/js/renderer/edge.js	Tue Jul 26 18:24:33 2016 +0200
+++ b/client/js/renderer/edge.js	Wed Jul 27 13:55:18 2016 +0200
@@ -15,6 +15,7 @@
             this.type = "Edge";
             this.hidden = false;
             this.ghost = false;
+            this.highlighted = false;
             this.from_representation = this.renderer.getRepresentationByModel(this.model.get("from"));
             this.to_representation = this.renderer.getRepresentationByModel(this.model.get("to"));
             this.bundle = this.renderer.addToBundles(this);
@@ -73,7 +74,7 @@
         },
         redraw: function() {
             var from = this.model.get("from"),
-            to = this.model.get("to");
+                to = this.model.get("to");
             if (!from || !to || (this.hidden && !this.ghost)) {
                 return;
             }
@@ -100,7 +101,9 @@
                 _a = _v.angle,
                 _textdelta = _ortho.multiply(this.options.edge_label_distance + 0.5 * _arrow_scale * this.options.edge_arrow_width),
                 _handle = _v.divide(3),
-                _color = (this.model.has("style") && this.model.get("style").color) || (this.model.get("created_by") || Utils._USER_PLACEHOLDER(this.renkan)).get("color"),
+                _color = (this.highlighted && this.options.highlighted_edge_color) ||
+                    (this.model.has("style") && this.model.get("style").color) ||
+                    (this.model.get("created_by") || Utils._USER_PLACEHOLDER(this.renkan)).get("color"),
                 _dash = (this.model.has("style") && this.model.get("style").dash) ? this.options.default_dash_array : null,
                 _opacity;
 
@@ -158,7 +161,11 @@
             }
             var _text = this.model.get("title") || this.renkan.translate(this.options.label_untitled_edges) || "";
             _text = Utils.shortenText(_text, this.options.node_label_max_length);
-            this.text.text(_text);
+            if (typeof this.highlighted === "object") {
+                this.text.html(this.highlighted.replace(_(_text).escape(),'<span class="Rk-Highlighted">$1</span>'));
+            } else {
+                this.text.text(_text);
+            }
             var _textpos = this.paper_coords.add(_textdelta);
             this.text.css({
                 left: _textpos.x,
@@ -276,6 +283,23 @@
                 this.renderer.paperShift(_delta);
             }
         },
+        highlight: function(textToReplace) {
+            var hlvalue = textToReplace || true;
+            if (this.highlighted === hlvalue) {
+                return;
+            }
+            this.highlighted = hlvalue;
+            this.redraw();
+            this.renderer.throttledPaperDraw();
+        },
+        unhighlight: function() {
+            if (!this.highlighted) {
+                return;
+            }
+            this.highlighted = false;
+            this.redraw();
+            this.renderer.throttledPaperDraw();
+        },
         destroy: function() {
             this._super("destroy");
             this.line.remove();