Labels as divs
authorveltr
Tue, 16 Apr 2013 17:31:00 +0200
changeset 156 83d7a10e1ad7
parent 155 7d5f722d76b2
child 157 cdfc0b1547f3
Labels as divs
client/css/renkan.css
client/js/defaults.js
client/js/paper-renderer.js
--- a/client/css/renkan.css	Mon Apr 15 18:36:59 2013 +0200
+++ b/client/css/renkan.css	Tue Apr 16 17:31:00 2013 +0200
@@ -109,7 +109,7 @@
 
 .Rk-UserList {
     box-shadow: 0 2px 2px #999999;
-    position: relative; z-index: 3; display: none; padding-top: 8px;
+    position: relative; z-index: 4; display: none; padding-top: 8px;
 }
 
 .Rk-User {
@@ -131,7 +131,7 @@
 }
 
 .Rk-TopBar-Tooltip {
-    position: absolute; top: 31px; left: 50%; margin-left: -60px; width: 120px; z-index: 3; display: none;
+    position: absolute; top: 31px; left: 50%; margin-left: -60px; width: 120px; z-index: 4; display: none;
 }
 
 .Rk-TopBar-Tooltip-Contents {
@@ -212,6 +212,9 @@
 
 .Rk-Editing-Space {
 	position: absolute; left: 0; top: 35px; right: 0; bottom: 0; overflow: hidden;
+	background: -moz-radial-gradient( center, circle, #ffffff 40%, #e0e0e0 90%);
+	background: -webkit-radial-gradient( center, circle, #ffffff 40%, #e0e0e0 90%);
+	background: -ms-radial-gradient( center, circle, #ffffff 40%, #e0e0e0 90%);
 }
 
 .Rk-Editing-Space-Full {
@@ -219,16 +222,29 @@
 }
 
 .Rk-Canvas {
-	background: -moz-radial-gradient( center, circle, #ffffff 40%, #e0e0e0 90%);
-	background: -webkit-radial-gradient( center, circle, #ffffff 40%, #e0e0e0 90%);
-	background: -ms-radial-gradient( center, circle, #ffffff 40%, #e0e0e0 90%);
-    position: absolute; left: 0; top: 0; right: 0; bottom: 0; z-index: 1;
+    position: absolute; left: 0; top: 0; right: 0; bottom: 0; z-index: 2;
+}
+
+/* Node Labels */
+
+.Rk-Labels {
+    position: absolute; left: 0; top: 0; z-index: 1;
+    font-family: "Segoe UI", "Helvetica Neue", Arial, Helvetica, sans-serif;
+}
+
+.Rk-Label {
+	position: absolute; width: 160px; margin-left: -80px; text-align: center; font-size: 13px; line-height: 13px;
+}
+
+.Rk-Edge-Label {
+	font-size: 11px; transform-origin: 50% 0; -moz-transform-origin: 50% 0;
+	-webkit-transform-origin: 50% 0; -ms-transform-origin: 50% 0;
 }
 
 /* Editors */
 
 .Rk-Editor {
-    position: absolute; left: 0; top: 0; z-index: 2;
+    position: absolute; left: 0; top: 0; z-index: 3;
 }
 
 .Rk-Notifications {
--- a/client/js/defaults.js	Mon Apr 15 18:36:59 2013 +0200
+++ b/client/js/defaults.js	Tue Apr 16 17:31:00 2013 +0200
@@ -54,22 +54,16 @@
 	selected_node_stroke_width: 4,
 	node_fill_color: "#ffffff",
 	highlighted_node_fill_color: "#ffff00",
-	node_label_color: "#000000",
-	node_label_font_size: 10,
-	node_label_font: 'Helvetica, Arial, sans-serif',
 	node_label_distance: 5,
 		/* Vertical distance between node and label */
-	node_label_max_length: 40,
+	node_label_max_length: 60,
 		/* Maximum displayed text length */
 	
 	/* EDGE DISPLAY OPTIONS */
 	
 	edge_stroke_width: 2,
 	selected_edge_stroke_width: 4,
-	edge_label_color: "#000000",
-	edge_label_font_size: 9,
-	edge_label_font: 'Helvetica, Arial, sans-serif',
-	edge_label_distance: -3,
+	edge_label_distance: 0,
 	edge_label_max_length: 20,
     edge_arrow_length: 18,
     edge_arrow_width: 12,
--- a/client/js/paper-renderer.js	Mon Apr 15 18:36:59 2013 +0200
+++ b/client/js/paper-renderer.js	Tue Apr 16 17:31:00 2013 +0200
@@ -281,12 +281,7 @@
     	this.circle.opacity = .01;
     	this.h_ratio = 0;
     }
-    this.title = new paper.PointText([0,0]);
-    this.title.characterStyle = {
-        font: this.options.node_label_font,
-        fontSize: this.options.node_label_font_size,
-        fillColor: this.options.node_label_color
-    };
+    this.title = Rkns.$('<div class="Rk-Label">').appendTo(this.renderer.labels_$);
     if (this.options.editor_mode) {
     	this.buttons = [
     		new Rkns.Renderer.NodeEditButton(this.renderer, null),
@@ -302,7 +297,7 @@
     	this.buttons = [];
     }
     this.last_circle_radius = 1;
-    this.title.paragraphStyle.justification = 'center';
+//    this.title.paragraphStyle.justification = 'center';
     
     if (this.renderer.minimap) {
 	    this.renderer.minimap.node_layer.activate();
@@ -339,12 +334,12 @@
     this.last_circle_radius = this.circle_radius;
     
     var _text = this.model.get("title") || this.renkan.translate("(untitled)");
-    this.title.content = Rkns.Renderer.Utils.shortenText(_text, this.options.node_label_max_length);
-
-    this.title.position = this.paper_coords.add([
-    	0,
-    	this.circle_radius * this.h_ratio + this.options.node_label_font_size + this.options.node_label_distance
-	]);
+	_text = Rkns.Renderer.Utils.shortenText(_text, this.options.node_label_max_length);
+	this.title.text(_text);
+	this.title.css({
+		left: this.paper_coords.x,
+		top: this.paper_coords.y + this.circle_radius * this.h_ratio + this.options.node_label_distance
+	})
     var _color = this.model.get("color") || (this.model.get("created_by") || Rkns.Renderer._USER_PLACEHOLDER(this.renkan)).get("color");
     this.circle.strokeColor = _color;
     var _pc = this.paper_coords;
@@ -564,14 +559,7 @@
     	[ 0, this.options.edge_arrow_width ]
 	);
     this.arrow.__representation = this;
-    this.text = new paper.PointText();
-    this.text.characterStyle = {
-        font: this.options.edge_label_font,
-        fontSize: this.options.edge_label_font_size,
-        fillColor: this.options.edge_label_color
-    };
-    this.text.paragraphStyle.justification = 'center';
-    this.text_angle = 0;
+    this.text = Rkns.$('<div class="Rk-Label Rk-Edge-Label">').appendTo(this.renderer.labels_$);
     this.arrow_angle = 0;
     if (this.options.editor_mode) {
         this.edit_button = new Rkns.Renderer.EdgeEditButton(this.renderer, null);
@@ -628,10 +616,17 @@
         _a += 180;
         _textdelta = _textdelta.multiply(-1);
     }
-    this.text.rotate(_a - this.text_angle);
     var _text = this.model.get("title");
-    this.text.content = Rkns.Renderer.Utils.shortenText(_text, this.options.edge_label_max_length);
-    this.text.position = this.paper_coords.add(_textdelta);
+	_text = Rkns.Renderer.Utils.shortenText(_text, this.options.node_label_max_length);
+    this.text.text(_text);
+    var _textpos = this.paper_coords.add(_textdelta);
+    this.text.css({
+    	left: _textpos.x,
+    	top: _textpos.y,
+    	transform: "rotate(" + _a + "deg)",
+    	"-moz-transform": "rotate(" + _a + "deg)",
+    	"-webkit-transform": "rotate(" + _a + "deg)"
+    });
     this.text_angle = _a;
     if (this.options.editor_mode) {
 	    this.edit_button.moveTo(this.paper_coords);
@@ -1212,8 +1207,8 @@
 Rkns.Renderer.NodeRemoveButton.prototype._init = function() {
     this.type = "Node-remove-button";
     this.lastSectorInner = 0;
-    this.startAngle = 90;
-    this.endAngle = 180;
+    this.startAngle = 0;
+    this.endAngle = 90;
     this.imageFile = 'img/remove.png';
     this.text = "Remove";
 }
@@ -1234,8 +1229,8 @@
 Rkns.Renderer.NodeLinkButton.prototype._init = function() {
     this.type = "Node-link-button";
     this.lastSectorInner = 0;
-    this.startAngle = 0;
-    this.endAngle = 90;
+    this.startAngle = 90;
+    this.endAngle = 180;
     this.imageFile = 'img/link.png';
     this.text = "Link to another node";
 }
@@ -1351,6 +1346,7 @@
     this.$.html(this.template(_renkan));
     this.onStatusChange();
     this.canvas_$ = this.$.find(".Rk-Canvas");
+    this.labels_$ = this.$.find(".Rk-Labels");
     this.editor_$ = this.$.find(".Rk-Editor");
     this.notif_$ = this.$.find(".Rk-Notifications");
     paper.setup(this.canvas_$[0]);
@@ -1409,15 +1405,19 @@
     
     this.canvas_$.on({
     	mousedown: function(_event) {
+    		_event.preventDefault();
     		_this.onMouseDown(_event, false);
     	},
     	mousemove: function(_event) {
+    		_event.preventDefault();
         	_this.onMouseMove(_event, false);
 	    },
 	    mouseup: function(_event) {
+    		_event.preventDefault();
 	        _this.onMouseUp(_event, false);
 	    },
 	    mousewheel: function(_event, _delta) {
+    		_event.preventDefault();
 	        if (_allowScroll) {
 	        	_this.onScroll(_event, _delta);
 	        }
@@ -1454,9 +1454,11 @@
 	    	_this.onMouseUp(_event.originalEvent.changedTouches[0], true);
 	    },
 	    dblclick: function(_event) {
+    		_event.preventDefault();
 	        _this.onDoubleClick(_event);
 	    },
 	    mouseleave: function(_event) {
+    		_event.preventDefault();
 	        _this.onMouseUp(_event, false);
 	        _this.click_target = null;
 	        _this.is_dragging = false;
@@ -1465,12 +1467,12 @@
 	    	_event.preventDefault();
 	    },
 	    dragenter: function(_event) {
+	    	_event.preventDefault();
 	    	_allowScroll = false;
-	    	_event.preventDefault();
 	    },
 	    dragleave: function(_event) {
+	    	_event.preventDefault();
 	    	_allowScroll = true;
-	    	_event.preventDefault();
 	    },
 	    drop: function(_event) {
 	    	_event.preventDefault();
@@ -1702,7 +1704,8 @@
     + '<%-translate("Renkan \'Drag-to-Add\' bookmarklet")%></div></div></a>'
     + '<div class="Rk-TopBar-Separator"></div>'
     + '<% } %></div><% } %>'
-    + '<div class="Rk-Editing-Space<% if (!options.show_top_bar) { %> Rk-Editing-Space-Full<% } %>"><canvas class="Rk-Canvas" resize></canvas><div class="Rk-Editor"><div class="Rk-Notifications"></div>'
+    + '<div class="Rk-Editing-Space<% if (!options.show_top_bar) { %> Rk-Editing-Space-Full<% } %>">'
+    + '<div class="Rk-Labels"></div><canvas class="Rk-Canvas" resize></canvas><div class="Rk-Editor"><div class="Rk-Notifications"></div>'
     + '<% if (options.show_bins) { %><div class="Rk-Fold-Bins">&laquo;</div><% } %>'
     + '<div class="Rk-ZoomButtons"><div class="Rk-ZoomIn" title="<%-translate("Zoom In")%>"></div><div class="Rk-ZoomOut" title="<%-translate("Zoom Out")%>"></div></div>'
     + '</div></div>'