diff -r a260675bdef7 -r ba5022639c76 client/js/paper-renderer.js --- a/client/js/paper-renderer.js Wed May 15 15:40:45 2013 +0200 +++ b/client/js/paper-renderer.js Wed May 15 18:17:18 2013 +0200 @@ -1,19 +1,25 @@ -Rkns.Renderer = { - _MIN_DRAG_DISTANCE: 2, - _NODE_BUTTON_WIDTH: 40, - _EDGE_BUTTON_INNER: 2, - _EDGE_BUTTON_OUTER: 40, - _CLICKMODE_ADDNODE : 1, - _CLICKMODE_STARTEDGE : 2, - _CLICKMODE_ENDEDGE : 3, - _IMAGE_MAX_KB : 500, - _NODE_SIZE_STEP: Math.LN2/4, - _MIN_SCALE: 1/20, - _MAX_SCALE: 20, - _MOUSEMOVE_RATE: 80, - _DOUBLETAP_DELAY: 800, - _DOUBLETAP_DISTANCE: 20*20, - _USER_PLACEHOLDER : function(_renkan) { +/* paper-renderer.js */ + +(function() { + +var Rkns = this.Rkns; + +var Renderer = Rkns.Renderer = {}, + _MIN_DRAG_DISTANCE = 2, + _NODE_BUTTON_WIDTH = 40, + _EDGE_BUTTON_INNER = 2, + _EDGE_BUTTON_OUTER = 40, + _CLICKMODE_ADDNODE = 1, + _CLICKMODE_STARTEDGE = 2, + _CLICKMODE_ENDEDGE = 3, + _IMAGE_MAX_KB = 500, + _NODE_SIZE_STEP = Math.LN2/4, + _MIN_SCALE = 1/20, + _MAX_SCALE = 20, + _MOUSEMOVE_RATE = 80, + _DOUBLETAP_DELAY = 800, + _DOUBLETAP_DISTANCE = 20*20, + _USER_PLACEHOLDER = function(_renkan) { return { color: _renkan.options.default_user_color, title: _renkan.translate("(unknown user)"), @@ -22,15 +28,15 @@ } }; }, - _BOOKMARKLET_CODE: function(_renkan) { + _BOOKMARKLET_CODE = function(_renkan) { return "(function(a,b,c,d,e,f,h,i,j,k,l,m,n,o,p,q,r){a=document;b=a.body;c=a.location.href;j='draggable';m='text/x-iri-';d=a.createElement('div');d.innerHTML='" + _renkan.translate("Drag items from this website, drop them in Renkan").replace(/ /g,"_") + "

'.replace(/_/g,String.fromCharCode(32));b.appendChild(d);e=[{r:/https?:\\/\\/[^\\/]*twitter\\.com\\//,s:'.tweet',n:'twitter'},{r:/https?:\\/\\/[^\\/]*google\\.[^\\/]+\\//,s:'.g',n:'google'},{r:/https?:\\/\\/[^\\/]*lemonde\\.fr\\//,s:'[data-vr-contentbox]',n:'lemonde'}];f=false;e.forEach(function(g){if(g.r.test(c)){f=g;}});if(f){h=function(){Array.prototype.forEach.call(a.querySelectorAll(f.s),function(i){i[j]=true;k=i.style;k.borderWidth='2px';k.borderColor='#909';k.borderStyle='solid';k.backgroundColor='rgba(200,0,180,.1)';})};window.setInterval(h,500);h();};a.addEventListener('dragstart',function(k){l=k.dataTransfer;l.setData(m+'source-uri',c);l.setData(m+'source-title',a.title);n=k.target;if(f){o=n;while(!o.attributes[j]){o=o.parentNode;if(o==b){break;}}}if(f&&o.attributes[j]){p=o.cloneNode(true);l.setData(m+'specific-site',f.n)}else{q=a.getSelection();if(q.type==='Range'||!q.type){p=q.getRangeAt(0).cloneContents();}else{p=n.cloneNode();}}r=a.createElement('div');r.appendChild(p);l.setData('text/x-iri-selected-text',r.textContent.trim());l.setData('text/x-iri-selected-html',r.innerHTML);},false);})();"; }, - shortenText : function(_text, _maxlength) { + shortenText = function(_text, _maxlength) { return (_text.length > _maxlength ? (_text.substr(0,_maxlength) + '…') : _text); }, - drawEditBox : function(_options, _coords, _path, _xmargin, _selector) { + drawEditBox = function(_options, _coords, _path, _xmargin, _selector) { _selector.css({ width: ( _options.tooltip_width - 2* _options.tooltip_padding ), }); @@ -72,10 +78,9 @@ top: (_options.tooltip_padding + _top) }); return _path; - } -}; + }; -Rkns.Renderer._BaseRepresentation = function(_renderer, _model) { +var _BaseRepresentation = Renderer._BaseRepresentation = function(_renderer, _model) { if (typeof _renderer !== "undefined") { this.renderer = _renderer; this.renkan = _renderer.renkan; @@ -107,87 +112,76 @@ } }; -Rkns.Renderer._BaseRepresentation.prototype.super = function(_func) { - Rkns.Renderer._BaseRepresentation.prototype[_func].apply(this, Array.prototype.slice.call(arguments, 1)); -}; - -Rkns.Renderer._BaseRepresentation.prototype.redraw = function() {}; - -Rkns.Renderer._BaseRepresentation.prototype.moveTo = function() {}; - -Rkns.Renderer._BaseRepresentation.prototype.show = function() {}; - -Rkns.Renderer._BaseRepresentation.prototype.hide = function() {}; - -Rkns.Renderer._BaseRepresentation.prototype.select = function() { - if (this.model) { - this.model.trigger("selected"); - } -}; - -Rkns.Renderer._BaseRepresentation.prototype.unselect = function() { - if (this.model) { - this.model.trigger("unselected"); +Rkns._(_BaseRepresentation.prototype).extend({ + super: function(_func) { + _BaseRepresentation.prototype[_func].apply(this, Array.prototype.slice.call(arguments, 1)); + }, + redraw: function() {}, + moveTo: function() {}, + show: function() {}, + hide: function() {}, + select: function() { + if (this.model) { + this.model.trigger("selected"); + } + }, + unselect: function() { + if (this.model) { + this.model.trigger("unselected"); + } + }, + highlight: function() {}, + unhighlight: function() {}, + mousedown: function() {}, + mouseup: function() { + if (this.model) { + this.model.trigger("clicked"); + } + }, + destroy: function() { + if (this.model) { + this.model.off("change", this._changeBinding ); + this.model.off("remove", this._removeBinding ); + this.model.off("select", this._selectBinding ); + this.model.off("unselect", this._unselectBinding ); + } } -}; - -Rkns.Renderer._BaseRepresentation.prototype.highlight = function() {}; - -Rkns.Renderer._BaseRepresentation.prototype.unhighlight = function() {}; - -Rkns.Renderer._BaseRepresentation.prototype.mousedown = function() {}; - -Rkns.Renderer._BaseRepresentation.prototype.mouseup = function() { - if (this.model) { - this.model.trigger("clicked"); - } -}; - -Rkns.Renderer._BaseRepresentation.prototype.destroy = function() { - if (this.model) { - this.model.off("change", this._changeBinding ); - this.model.off("remove", this._removeBinding ); - this.model.off("select", this._selectBinding ); - this.model.off("unselect", this._unselectBinding ); - } -}; +}); /* */ -Rkns.Renderer._BaseButton = Rkns.Utils.inherit(Rkns.Renderer._BaseRepresentation); - -Rkns.Renderer._BaseButton.prototype.moveTo = function(_pos) { - this.sector.moveTo(_pos); -}; - -Rkns.Renderer._BaseButton.prototype.show = function() { - this.sector.show(); -}; +var _BaseButton = Renderer._BaseButton = Rkns.Utils.inherit(_BaseRepresentation); -Rkns.Renderer._BaseButton.prototype.hide = function() { +Rkns._(_BaseButton.prototype).extend({ +moveTo: function(_pos) { + this.sector.moveTo(_pos); +}, +show: function() { + this.sector.show(); +}, +hide: function() { this.sector.hide(); -}; - -Rkns.Renderer._BaseButton.prototype.select = function() { +}, +select: function() { this.sector.select(); -}; - -Rkns.Renderer._BaseButton.prototype.unselect = function(_newTarget) { +}, +unselect: function(_newTarget) { this.sector.unselect(); if (!_newTarget || (_newTarget !== this.source_representation && _newTarget.source_representation !== this.source_representation)) { this.source_representation.unselect(); } -}; - -Rkns.Renderer._BaseButton.prototype.destroy = function() { +}, +destroy: function() { this.sector.destroy(); -}; +} +}); /* */ -Rkns.Renderer.Node = Rkns.Utils.inherit(Rkns.Renderer._BaseRepresentation); +var NodeRepr = Renderer.Node = Rkns.Utils.inherit(_BaseRepresentation); -Rkns.Renderer.Node.prototype._init = function() { +Rkns._(NodeRepr.prototype).extend({ +_init: function() { this.renderer.node_layer.activate(); this.type = "Node"; this.circle = new paper.Path.Circle([0, 0], 1); @@ -201,14 +195,14 @@ this.title = Rkns.$('
').appendTo(this.renderer.labels_$); if (this.options.editor_mode) { this.normal_buttons = [ - new Rkns.Renderer.NodeEditButton(this.renderer, null), - new Rkns.Renderer.NodeRemoveButton(this.renderer, null), - new Rkns.Renderer.NodeLinkButton(this.renderer, null), - new Rkns.Renderer.NodeEnlargeButton(this.renderer, null), - new Rkns.Renderer.NodeShrinkButton(this.renderer, null) + new NodeEditButton(this.renderer, null), + new NodeRemoveButton(this.renderer, null), + new NodeLinkButton(this.renderer, null), + new NodeEnlargeButton(this.renderer, null), + new NodeShrinkButton(this.renderer, null) ]; this.pending_delete_buttons = [ - new Rkns.Renderer.NodeRevertButton(this.renderer, null) + new NodeRevertButton(this.renderer, null) ]; this.all_buttons = this.normal_buttons.concat(this.pending_delete_buttons); for (var i = 0; i < this.all_buttons.length; i++) { @@ -226,11 +220,10 @@ this.minimap_circle.__representation = this.renderer.minimap.miniframe.__representation; this.renderer.minimap.node_group.addChild(this.minimap_circle); } -}; - -Rkns.Renderer.Node.prototype.redraw = function(_dontRedrawEdges) { +}, +redraw: function(_dontRedrawEdges) { var _model_coords = new paper.Point(this.model.get("position")), - _baseRadius = this.options.node_size_base * Math.exp((this.model.get("size") || 0) * Rkns.Renderer._NODE_SIZE_STEP); + _baseRadius = this.options.node_size_base * Math.exp((this.model.get("size") || 0) * _NODE_SIZE_STEP); if (!this.is_dragging || !this.paper_coords) { this.paper_coords = this.renderer.toPaperCoords(_model_coords); } @@ -285,14 +278,14 @@ this.circle.opacity = this.options.show_node_circles ? opacity : .01; var _text = this.model.get("title") || this.renkan.translate(this.options.label_untitled_nodes) || ""; - _text = Rkns.Renderer.shortenText(_text, this.options.node_label_max_length); + _text = 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, opacity: opacity }); - var _color = this.model.get("color") || (this.model.get("created_by") || Rkns.Renderer._USER_PLACEHOLDER(this.renkan)).get("color"); + var _color = this.model.get("color") || (this.model.get("created_by") || _USER_PLACEHOLDER(this.renkan)).get("color"); this.circle.strokeColor = _color; var _pc = this.paper_coords; this.all_buttons.forEach(function(b) { @@ -325,9 +318,8 @@ }, this); } -}; - -Rkns.Renderer.Node.prototype.showImage = function() { +}, +showImage: function() { if (typeof this.renderer.image_cache[this.img] === "undefined") { var _image = new Image(); this.renderer.image_cache[this.img] = _image; @@ -450,9 +442,8 @@ _this.showImage(); }); } -} - -Rkns.Renderer.Node.prototype.paperShift = function(_delta) { +}, +paperShift: function(_delta) { if (this.options.editor_mode) { if (!this.renkan.read_only) { this.is_dragging = true; @@ -462,16 +453,14 @@ } else { this.renderer.paperShift(_delta); } -}; - -Rkns.Renderer.Node.prototype.openEditor = function() { +}, +openEditor: function() { this.renderer.removeRepresentationsOfType("editor"); var _editor = this.renderer.addRepresentation("NodeEditor",null); _editor.source_representation = this; _editor.draw(); -}; - -Rkns.Renderer.Node.prototype.select = function() { +}, +select: function() { this.selected = true; this.circle.strokeWidth = this.options.selected_node_stroke_width; if (this.renderer.isEditable()) { @@ -497,9 +486,8 @@ this.minimap_circle.strokeColor = this.options.minimap_highlight_color; } this.super("select"); -}; - -Rkns.Renderer.Node.prototype.unselect = function(_newTarget) { +}, +unselect: function(_newTarget) { if (!_newTarget || _newTarget.source_representation !== this) { this.selected = false; this.all_buttons.forEach(function(b) { @@ -512,27 +500,24 @@ } this.super("unselect"); } -}; - -Rkns.Renderer.Node.prototype.highlight = function() { +}, +highlight: function() { if (this.highlighted) { return; } this.highlighted = true; this.redraw(); this.renderer.throttledPaperDraw(); -}; - -Rkns.Renderer.Node.prototype.unhighlight = function() { +}, +unhighlight: function() { if (!this.highlighted) { return; } this.highlighted = false; this.redraw(); this.renderer.throttledPaperDraw(); -}; - -Rkns.Renderer.Node.prototype.saveCoords = function() { +}, +saveCoords: function() { var _coords = this.renderer.toModelCoords(this.paper_coords), _data = { position: { @@ -543,16 +528,14 @@ if (this.renderer.isEditable()) { this.model.set(_data); } -}; - -Rkns.Renderer.Node.prototype.mousedown = function(_event, _isTouch) { +}, +mousedown: function(_event, _isTouch) { if (_isTouch) { this.renderer.unselectAll(); this.select(); } -}; - -Rkns.Renderer.Node.prototype.mouseup = function(_event, _isTouch) { +}, +mouseup: function(_event, _isTouch) { if (this.renderer.is_dragging && this.renderer.isEditable()) { this.saveCoords(); } else { @@ -564,9 +547,8 @@ this.renderer.click_target = null; this.renderer.is_dragging = false; this.is_dragging = false; -}; - -Rkns.Renderer.Node.prototype.destroy = function(_event) { +}, +destroy: function(_event) { this.super("destroy"); this.all_buttons.forEach(function(b) { b.destroy(); @@ -579,13 +561,15 @@ if (this.node_image) { this.node_image.remove(); } -}; +} +}); /* */ -Rkns.Renderer.Edge = Rkns.Utils.inherit(Rkns.Renderer._BaseRepresentation); +var Edge = Renderer.Edge = Rkns.Utils.inherit(_BaseRepresentation); -Rkns.Renderer.Edge.prototype._init = function() { +Rkns._(Edge.prototype).extend({ +_init: function() { this.renderer.edge_layer.activate(); this.type = "Edge"; this.from_representation = this.renderer.getRepresentationByModel(this.model.get("from")); @@ -606,11 +590,11 @@ this.arrow_angle = 0; if (this.options.editor_mode) { this.normal_buttons = [ - new Rkns.Renderer.EdgeEditButton(this.renderer, null), - new Rkns.Renderer.EdgeRemoveButton(this.renderer, null), + new EdgeEditButton(this.renderer, null), + new EdgeRemoveButton(this.renderer, null), ]; this.pending_delete_buttons = [ - new Rkns.Renderer.EdgeRevertButton(this.renderer, null) + new EdgeRevertButton(this.renderer, null) ]; this.all_buttons = this.normal_buttons.concat(this.pending_delete_buttons); for (var i = 0; i < this.all_buttons.length; i++) { @@ -628,9 +612,8 @@ this.minimap_line.__representation = this.renderer.minimap.miniframe.__representation; this.minimap_line.strokeWidth = 1; } -}; - -Rkns.Renderer.Edge.prototype.redraw = function() { +}, +redraw: function() { var from = this.model.get("from"), to = this.model.get("to"); if (!from || !to) { @@ -654,7 +637,7 @@ _a = _v.angle, _textdelta = _ortho.multiply(this.options.edge_label_distance), _handle = _v.divide(3), - _color = this.model.get("color") || this.model.get("color") || (this.model.get("created_by") || Rkns.Renderer._USER_PLACEHOLDER(this.renkan)).get("color"); + _color = this.model.get("color") || this.model.get("color") || (this.model.get("created_by") || _USER_PLACEHOLDER(this.renkan)).get("color"); if (this.model.get("delete_scheduled") || this.from_representation.model.get("delete_scheduled") || this.to_representation.model.get("delete_scheduled")) { var opacity = .5; @@ -699,7 +682,7 @@ _textdelta = _textdelta.multiply(-1); } var _text = this.model.get("title") || this.renkan.translate(this.options.label_untitled_edges) || ""; - _text = Rkns.Renderer.shortenText(_text, this.options.node_label_max_length); + _text = shortenText(_text, this.options.node_label_max_length); this.text.text(_text); var _textpos = this.paper_coords.add(_textdelta); this.text.css({ @@ -722,16 +705,14 @@ this.minimap_line.segments[0].point = this.renderer.toMinimapCoords(new paper.Point(this.from_representation.model.get("position"))); this.minimap_line.segments[1].point = this.renderer.toMinimapCoords(new paper.Point(this.to_representation.model.get("position"))); } -}; - -Rkns.Renderer.Edge.prototype.openEditor = function() { +}, +openEditor: function() { this.renderer.removeRepresentationsOfType("editor"); var _editor = this.renderer.addRepresentation("EdgeEditor",null); _editor.source_representation = this; _editor.draw(); -}; - -Rkns.Renderer.Edge.prototype.select = function() { +}, +select: function() { this.selected = true; this.line.strokeWidth = this.options.selected_edge_stroke_width; if (this.renderer.isEditable()) { @@ -743,9 +724,8 @@ this.openEditor(); } this.super("select"); -}; - -Rkns.Renderer.Edge.prototype.unselect = function(_newTarget) { +}, +unselect: function(_newTarget) { if (!_newTarget || _newTarget.source_representation !== this) { this.selected = false; if (this.options.editor_mode) { @@ -756,16 +736,14 @@ this.line.strokeWidth = this.options.edge_stroke_width; this.super("unselect"); } -}; - -Rkns.Renderer.Edge.prototype.mousedown = function(_event, _isTouch) { +}, +mousedown: function(_event, _isTouch) { if (_isTouch) { this.renderer.unselectAll(); this.select(); } -}; - -Rkns.Renderer.Edge.prototype.mouseup = function(_event, _isTouch) { +}, +mouseup: function(_event, _isTouch) { if (!this.renkan.read_only && this.renderer.is_dragging) { this.from_representation.saveCoords(); this.to_representation.saveCoords(); @@ -779,9 +757,8 @@ } this.renderer.click_target = null; this.renderer.is_dragging = false; -}; - -Rkns.Renderer.Edge.prototype.paperShift = function(_delta) { +}, +paperShift: function(_delta) { if (this.options.editor_mode) { if (!this.options.read_only) { this.from_representation.paperShift(_delta); @@ -790,9 +767,8 @@ } else { this.renderer.paperShift(_delta); } -}; - -Rkns.Renderer.Edge.prototype.destroy = function() { +}, +destroy: function() { this.super("destroy"); this.line.remove(); this.arrow.remove(); @@ -807,17 +783,19 @@ this.bundle.edges = Rkns._(this.bundle.edges).reject(function(_edge) { return _edge === _this; }); -}; +} +}); /* */ -Rkns.Renderer.TempEdge = Rkns.Utils.inherit(Rkns.Renderer._BaseRepresentation); +var TempEdge = Renderer.TempEdge = Rkns.Utils.inherit(_BaseRepresentation); -Rkns.Renderer.TempEdge.prototype._init = function() { +Rkns._(TempEdge.prototype).extend({ +_init: function() { this.renderer.edge_layer.activate(); this.type = "Temp-edge"; - var _color = (this.project.get("users").get(this.renkan.current_user) || Rkns.Renderer._USER_PLACEHOLDER(this.renkan)).get("color"); + var _color = (this.project.get("users").get(this.renkan.current_user) || _USER_PLACEHOLDER(this.renkan)).get("color"); this.line = new paper.Path(); this.line.strokeColor = _color; this.line.dashArray = [4, 2]; @@ -833,9 +811,8 @@ ); this.arrow.__representation = this; this.arrow_angle = 0; -}; - -Rkns.Renderer.TempEdge.prototype.redraw = function() { +}, +redraw: function() { var _p0 = this.from_representation.paper_coords, _p1 = this.end_pos, _a = _p1.subtract(_p0).angle, @@ -845,9 +822,8 @@ this.arrow.rotate(_a - this.arrow_angle); this.arrow.position = _c; this.arrow_angle = _a; -}; - -Rkns.Renderer.TempEdge.prototype.paperShift = function(_delta) { +}, +paperShift: function(_delta) { if (!this.renderer.isEditable()) { this.renderer.removeRepresentation(_this); paper.view.draw(); @@ -857,9 +833,8 @@ var _hitResult = paper.project.hitTest(this.end_pos); this.renderer.findTarget(_hitResult); this.redraw(); -}; - -Rkns.Renderer.TempEdge.prototype.mouseup = function(_event, _isTouch) { +}, +mouseup: function(_event, _isTouch) { var _hitResult = paper.project.hitTest(_event.point), _model = this.from_representation.model, _endDrag = true; @@ -891,18 +866,19 @@ this.renderer.removeRepresentation(this); paper.view.draw(); } -}; - -Rkns.Renderer.TempEdge.prototype.destroy = function() { +}, +destroy: function() { this.arrow.remove(); this.line.remove(); -}; +} +}); /* */ -Rkns.Renderer._BaseEditor = Rkns.Utils.inherit(Rkns.Renderer._BaseRepresentation); +var _BaseEditor = Renderer._BaseEditor = Rkns.Utils.inherit(_BaseRepresentation); -Rkns.Renderer._BaseEditor.prototype._init = function() { +Rkns._(_BaseEditor.prototype).extend({ +_init: function() { this.renderer.buttons_layer.activate(); this.type = "editor"; this.editor_block = new paper.Path(); @@ -918,18 +894,19 @@ opacity: .8 }) .hide(); -}; - -Rkns.Renderer._BaseEditor.prototype.destroy = function() { +}, +destroy: function() { this.editor_block.remove(); this.editor_$.remove(); -}; +} +}); /* */ -Rkns.Renderer.NodeEditor = Rkns.Utils.inherit(Rkns.Renderer._BaseEditor); +var NodeEditor = Renderer.NodeEditor = Rkns.Utils.inherit(_BaseEditor); -Rkns.Renderer.NodeEditor.prototype.template = Rkns._.template( +Rkns._(NodeEditor.prototype).extend({ +template: Rkns._.template( '

×<%-renkan.translate("Edit Node")%>

' + '

' + '<% if (options.show_node_editor_uri) { %>

<% } %>' @@ -941,21 +918,19 @@ + '<% if (node.clip_path) { %><% }%>' + '

' + '

<% } %>' - + '<% if (options.show_node_editor_creator && node.has_creator) { %>

<%-renkan.translate("Created by:")%> <%- Rkns.Renderer.shortenText(node.created_by_title, 25) %>

<% } %>' -); - -Rkns.Renderer.NodeEditor.prototype.readOnlyTemplate = Rkns._.template( + + '<% if (options.show_node_editor_creator && node.has_creator) { %>

<%-renkan.translate("Created by:")%> <%- shortenText(node.created_by_title, 25) %>

<% } %>' +), +readOnlyTemplate: Rkns._.template( '

×<% if (options.show_node_tooltip_color) { %><% } %>' + '<% if (node.uri) { %><% } %><%-node.title%><% if (node.uri) { %><% } %>

' + '<% if (node.uri && options.show_node_tooltip_uri) { %>

<%-node.short_uri%>

<% } %>' + '<% if (options.show_node_tooltip_description) { %>

<%-node.description%>

<% } %>' + '<% if (node.image && options.show_node_tooltip_image) { %><% } %>' - + '<% if (node.has_creator && options.show_node_tooltip_creator) { %>

<%-renkan.translate("Created by:")%><%- Rkns.Renderer.shortenText(node.created_by_title, 25) %>

<% } %>' -); - -Rkns.Renderer.NodeEditor.prototype.draw = function() { + + '<% if (node.has_creator && options.show_node_tooltip_creator) { %>

<%-renkan.translate("Created by:")%><%- shortenText(node.created_by_title, 25) %>

<% } %>' +), +draw: function() { var _model = this.source_representation.model, - _created_by = _model.get("created_by") || Rkns.Renderer._USER_PLACEHOLDER(this.renkan), + _created_by = _model.get("created_by") || _USER_PLACEHOLDER(this.renkan), _template = (this.renderer.isEditable() ? this.template : this.readOnlyTemplate ), _image_placeholder = this.options.static_url + "img/image-placeholder.png", _size = (_model.get("size") || 0); @@ -965,7 +940,7 @@ has_creator: !!_model.get("created_by"), title: _model.get("title"), uri: _model.get("uri"), - short_uri: Rkns.Renderer.shortenText((_model.get("uri") || "").replace(/^(https?:\/\/)?(www\.)?/,'').replace(/\/$/,''),40), + short_uri: shortenText((_model.get("uri") || "").replace(/^(https?:\/\/)?(www\.)?/,'').replace(/\/$/,''),40), description: _model.get("description"), image: _model.get("image") || "", image_placeholder: _image_placeholder, @@ -976,7 +951,8 @@ size: (_size > 0 ? "+" : "") + _size }, renkan: this.renkan, - options: this.options + options: this.options, + shortenText: shortenText })); this.redraw(); var _this = this, @@ -1030,8 +1006,8 @@ alert(_this.renkan.translate("This file is not an image")); return; } - if (f.size > (Rkns.Renderer._IMAGE_MAX_KB * 1024)) { - alert(_this.renkan.translate("Image size must be under ")+Rkns.Renderer._IMAGE_MAX_KB+_this.renkan.translate("KB")); + if (f.size > (_IMAGE_MAX_KB * 1024)) { + alert(_this.renkan.translate("Image size must be under ")+_IMAGE_MAX_KB+_this.renkan.translate("KB")); return; } fr.onload = function(e) { @@ -1063,7 +1039,7 @@ }, function(_e) { _e.preventDefault(); - _this.editor_$.find(".Rk-Edit-Color").css("background", _model.get("color") || (_model.get("created_by") || Rkns.Renderer._USER_PLACEHOLDER(_this.renkan)).get("color")); + _this.editor_$.find(".Rk-Edit-Color").css("background", _model.get("color") || (_model.get("created_by") || _USER_PLACEHOLDER(_this.renkan)).get("color")); } ).click(function(_e) { _e.preventDefault(); @@ -1099,20 +1075,21 @@ this.editor_$.find("img").load(function() { _this.redraw(); }); -}; - -Rkns.Renderer.NodeEditor.prototype.redraw = function() { +}, +redraw: function() { var _coords = this.source_representation.paper_coords; - Rkns.Renderer.drawEditBox(this.options, _coords, this.editor_block, this.source_representation.circle_radius * .75, this.editor_$); + drawEditBox(this.options, _coords, this.editor_block, this.source_representation.circle_radius * .75, this.editor_$); this.editor_$.show(); paper.view.draw(); -}; +} +}); /* */ -Rkns.Renderer.EdgeEditor = Rkns.Utils.inherit(Rkns.Renderer._BaseEditor); +var EdgeEditor = Renderer.EdgeEditor = Rkns.Utils.inherit(_BaseEditor); -Rkns.Renderer.EdgeEditor.prototype.template = Rkns._.template( +Rkns._(EdgeEditor.prototype).extend({ +template: Rkns._.template( '

×<%-renkan.translate("Edit Edge")%>

' + '

' + '<% if (options.show_edge_editor_uri) { %>

' @@ -1124,26 +1101,24 @@ + '<% if (options.show_edge_editor_color) { %>
<%-renkan.translate("Edge color:")%>
    ' + '<% _(Rkns.pickerColors).each(function(c) { %>
  • <% }); %>
<%- renkan.translate("Choose color") %>
<% } %>' + '<% if (options.show_edge_editor_direction) { %>

<%- renkan.translate("Change edge direction") %>

<% } %>' - + '<% if (options.show_edge_editor_nodes) { %>

<%-renkan.translate("From:")%><%- Rkns.Renderer.shortenText(edge.from_title, 25) %>

' - + '

<%-renkan.translate("To:")%><%- Rkns.Renderer.shortenText(edge.to_title, 25) %>

<% } %>' - + '<% if (options.show_edge_editor_creator && edge.has_creator) { %>

<%-renkan.translate("Created by:")%><%- Rkns.Renderer.shortenText(edge.created_by_title, 25) %>

<% } %>' -); - -Rkns.Renderer.EdgeEditor.prototype.readOnlyTemplate = Rkns._.template( + + '<% if (options.show_edge_editor_nodes) { %>

<%-renkan.translate("From:")%><%- shortenText(edge.from_title, 25) %>

' + + '

<%-renkan.translate("To:")%><%- shortenText(edge.to_title, 25) %>

<% } %>' + + '<% if (options.show_edge_editor_creator && edge.has_creator) { %>

<%-renkan.translate("Created by:")%><%- shortenText(edge.created_by_title, 25) %>

<% } %>' +), +readOnlyTemplate: Rkns._.template( '

×<% if (options.show_edge_tooltip_color) { %><% } %>' + '<% if (edge.uri) { %><% } %><%-edge.title%><% if (edge.uri) { %><% } %>

' + '<% if (options.show_edge_tooltip_uri && edge.uri) { %>

<%-edge.short_uri%>

<% } %>' + '

<%-edge.description%>

' - + '<% if (options.show_edge_tooltip_nodes) { %>

<%-renkan.translate("From:")%><%- Rkns.Renderer.shortenText(edge.from_title, 25) %>

' - + '

<%-renkan.translate("To:")%><%- Rkns.Renderer.shortenText(edge.to_title, 25) %>

<% } %>' - + '<% if (options.show_edge_tooltip_creator && edge.has_creator) { %>

<%-renkan.translate("Created by:")%><%- Rkns.Renderer.shortenText(edge.created_by_title, 25) %>

<% } %>' -); - -Rkns.Renderer.EdgeEditor.prototype.draw = function() { + + '<% if (options.show_edge_tooltip_nodes) { %>

<%-renkan.translate("From:")%><%- shortenText(edge.from_title, 25) %>

' + + '

<%-renkan.translate("To:")%><%- shortenText(edge.to_title, 25) %>

<% } %>' + + '<% if (options.show_edge_tooltip_creator && edge.has_creator) { %>

<%-renkan.translate("Created by:")%><%- shortenText(edge.created_by_title, 25) %>

<% } %>' +), +draw: function() { var _model = this.source_representation.model, _from_model = _model.get("from"), _to_model = _model.get("to"), - _created_by = _model.get("created_by") || Rkns.Renderer._USER_PLACEHOLDER(this.renkan), + _created_by = _model.get("created_by") || _USER_PLACEHOLDER(this.renkan), _template = (this.renderer.isEditable() ? this.template : this.readOnlyTemplate); this.editor_$ .html(_template({ @@ -1151,17 +1126,18 @@ has_creator: !!_model.get("created_by"), title: _model.get("title"), uri: _model.get("uri"), - short_uri: Rkns.Renderer.shortenText((_model.get("uri") || "").replace(/^(https?:\/\/)?(www\.)?/,'').replace(/\/$/,''),40), + short_uri: shortenText((_model.get("uri") || "").replace(/^(https?:\/\/)?(www\.)?/,'').replace(/\/$/,''),40), description: _model.get("description"), color: _model.get("color") || _created_by.get("color"), from_title: _from_model.get("title"), to_title: _to_model.get("title"), - from_color: _from_model.get("color") || (_from_model.get("created_by") || Rkns.Renderer._USER_PLACEHOLDER(this.renkan)).get("color"), - to_color: _to_model.get("color") || (_to_model.get("created_by") || Rkns.Renderer._USER_PLACEHOLDER(this.renkan)).get("color"), + from_color: _from_model.get("color") || (_from_model.get("created_by") || _USER_PLACEHOLDER(this.renkan)).get("color"), + to_color: _to_model.get("color") || (_to_model.get("created_by") || _USER_PLACEHOLDER(this.renkan)).get("color"), created_by_color: _created_by.get("color"), created_by_title: _created_by.get("title") }, renkan: this.renkan, + shortenText: shortenText, options: this.options, })); this.redraw(); @@ -1241,7 +1217,7 @@ }, function(_e) { _e.preventDefault(); - _this.editor_$.find(".Rk-Edit-Color").css("background", _model.get("color") || (_model.get("created_by") || Rkns.Renderer._USER_PLACEHOLDER(_this.renkan)).get("color")); + _this.editor_$.find(".Rk-Edit-Color").css("background", _model.get("color") || (_model.get("created_by") || _USER_PLACEHOLDER(_this.renkan)).get("color")); } ).click(function(_e) { _e.preventDefault(); @@ -1254,20 +1230,21 @@ } }); } -}; - -Rkns.Renderer.EdgeEditor.prototype.redraw = function() { +}, +redraw: function() { var _coords = this.source_representation.paper_coords; - Rkns.Renderer.drawEditBox(this.options, _coords, this.editor_block, 5, this.editor_$); + drawEditBox(this.options, _coords, this.editor_block, 5, this.editor_$); this.editor_$.show(); paper.view.draw(); -}; +} +}); /* */ -Rkns.Renderer._NodeButton = Rkns.Utils.inherit(Rkns.Renderer._BaseButton); +var _NodeButton = Renderer._NodeButton = Rkns.Utils.inherit(_BaseButton); -Rkns.Renderer._NodeButton.prototype.setSectorSize = function() { +Rkns._(_NodeButton.prototype).extend({ +setSectorSize: function() { var sectorInner = this.source_representation.circle_radius; if (sectorInner !== this.lastSectorInner) { if (this.sector) { @@ -1275,7 +1252,7 @@ } this.sector = this.renderer.drawSector( this, 1 + sectorInner, - Rkns.Renderer._NODE_BUTTON_WIDTH + sectorInner, + _NODE_BUTTON_WIDTH + sectorInner, this.startAngle, this.endAngle, 1, @@ -1284,41 +1261,43 @@ ); this.lastSectorInner = sectorInner; } -}; +} +}); /* */ -Rkns.Renderer.NodeEditButton = Rkns.Utils.inherit(Rkns.Renderer._NodeButton); +var NodeEditButton = Renderer.NodeEditButton = Rkns.Utils.inherit(_NodeButton); -Rkns.Renderer.NodeEditButton.prototype._init = function() { +Rkns._(NodeEditButton.prototype).extend({ +_init: function() { this.type = "Node-edit-button"; this.lastSectorInner = 0; this.startAngle = -135; this.endAngle = -45; this.imageName = "edit"; this.text = "Edit"; -}; - -Rkns.Renderer.NodeEditButton.prototype.mouseup = function() { +}, +mouseup: function() { if (!this.renderer.is_dragging) { this.source_representation.openEditor(); } -}; +} +}); /* */ -Rkns.Renderer.NodeRemoveButton = Rkns.Utils.inherit(Rkns.Renderer._NodeButton); +var NodeRemoveButton = Renderer.NodeRemoveButton = Rkns.Utils.inherit(_NodeButton); -Rkns.Renderer.NodeRemoveButton.prototype._init = function() { +Rkns._(NodeRemoveButton.prototype).extend({ +_init: function() { this.type = "Node-remove-button"; this.lastSectorInner = 0; this.startAngle = 0; this.endAngle = 90; this.imageName = "remove"; this.text = "Remove"; -}; - -Rkns.Renderer.NodeRemoveButton.prototype.mouseup = function() { +}, +mouseup: function() { this.renderer.click_target = null; this.renderer.is_dragging = false; this.renderer.removeRepresentationsOfType("editor"); @@ -1336,43 +1315,45 @@ } } } -}; +} +}); /* */ -Rkns.Renderer.NodeRevertButton = Rkns.Utils.inherit(Rkns.Renderer._NodeButton); +var NodeRevertButton = Renderer.NodeRevertButton = Rkns.Utils.inherit(_NodeButton); -Rkns.Renderer.NodeRevertButton.prototype._init = function() { +Rkns._(NodeRevertButton.prototype).extend({ +_init: function() { this.type = "Node-revert-button"; this.lastSectorInner = 0; this.startAngle = -135; this.endAngle = 135; this.imageName = "revert"; this.text = "Cancel deletion"; -}; - -Rkns.Renderer.NodeRevertButton.prototype.mouseup = function() { +}, +mouseup: function() { this.renderer.click_target = null; this.renderer.is_dragging = false; if (this.renderer.isEditable()) { this.source_representation.model.unset("delete_scheduled"); } -}; +} +}); /* */ -Rkns.Renderer.NodeLinkButton = Rkns.Utils.inherit(Rkns.Renderer._NodeButton); +var NodeLinkButton = Renderer.NodeLinkButton = Rkns.Utils.inherit(_NodeButton); -Rkns.Renderer.NodeLinkButton.prototype._init = function() { +Rkns._(NodeLinkButton.prototype).extend({ +_init: function() { this.type = "Node-link-button"; this.lastSectorInner = 0; this.startAngle = 90; this.endAngle = 180; this.imageName = "link"; this.text = "Link to another node"; -}; - -Rkns.Renderer.NodeLinkButton.prototype.mousedown = function(_event, _isTouch) { +}, +mousedown: function(_event, _isTouch) { if (this.renderer.isEditable()) { var _off = this.renderer.canvas_$.offset(), _point = new paper.Point([ @@ -1383,75 +1364,79 @@ this.renderer.removeRepresentationsOfType("editor"); this.renderer.addTempEdge(this.source_representation, _point); } -}; +} +}); /* */ -Rkns.Renderer.NodeEnlargeButton = Rkns.Utils.inherit(Rkns.Renderer._NodeButton); +var NodeEnlargeButton = Renderer.NodeEnlargeButton = Rkns.Utils.inherit(_NodeButton); -Rkns.Renderer.NodeEnlargeButton.prototype._init = function() { +Rkns._(NodeEnlargeButton.prototype).extend({ +_init: function() { this.type = "Node-enlarge-button"; this.lastSectorInner = 0; this.startAngle = -45; this.endAngle = 0; this.imageName = "enlarge"; this.text = "Enlarge"; -}; - -Rkns.Renderer.NodeEnlargeButton.prototype.mouseup = function() { +}, +mouseup: function() { var _newsize = 1 + (this.source_representation.model.get("size") || 0); this.source_representation.model.set("size", _newsize); this.source_representation.select(); this.select(); paper.view.draw(); -}; +} +}); /* */ -Rkns.Renderer.NodeShrinkButton = Rkns.Utils.inherit(Rkns.Renderer._NodeButton); +var NodeShrinkButton = Renderer.NodeShrinkButton = Rkns.Utils.inherit(_NodeButton); -Rkns.Renderer.NodeShrinkButton.prototype._init = function() { +Rkns._(NodeShrinkButton.prototype).extend({ +_init: function() { this.type = "Node-shrink-button"; this.lastSectorInner = 0; this.startAngle = -180; this.endAngle = -135; this.imageName = "shrink"; this.text = "Shrink"; -}; - -Rkns.Renderer.NodeShrinkButton.prototype.mouseup = function() { +}, +mouseup: function() { var _newsize = -1 + (this.source_representation.model.get("size") || 0); this.source_representation.model.set("size", _newsize); this.source_representation.select(); this.select(); paper.view.draw(); -}; +} +}); /* */ -Rkns.Renderer.EdgeEditButton = Rkns.Utils.inherit(Rkns.Renderer._BaseButton); +var EdgeEditButton = Renderer.EdgeEditButton = Rkns.Utils.inherit(_BaseButton); -Rkns.Renderer.EdgeEditButton.prototype._init = function() { +Rkns._(EdgeEditButton.prototype).extend({ +_init: function() { this.type = "Edge-edit-button"; - this.sector = this.renderer.drawSector(this, Rkns.Renderer._EDGE_BUTTON_INNER, Rkns.Renderer._EDGE_BUTTON_OUTER, -270, -90, 1, "edit", this.renkan.translate("Edit")); -}; - -Rkns.Renderer.EdgeEditButton.prototype.mouseup = function() { + this.sector = this.renderer.drawSector(this, _EDGE_BUTTON_INNER, _EDGE_BUTTON_OUTER, -270, -90, 1, "edit", this.renkan.translate("Edit")); +}, +mouseup: function() { if (!this.renderer.is_dragging) { this.source_representation.openEditor(); } -}; +} +}); /* */ -Rkns.Renderer.EdgeRemoveButton = Rkns.Utils.inherit(Rkns.Renderer._BaseButton); +var EdgeRemoveButton = Renderer.EdgeRemoveButton = Rkns.Utils.inherit(_BaseButton); -Rkns.Renderer.EdgeRemoveButton.prototype._init = function() { +Rkns._(EdgeRemoveButton.prototype).extend({ +_init: function() { this.type = "Edge-remove-button"; - this.sector = this.renderer.drawSector(this, Rkns.Renderer._EDGE_BUTTON_INNER, Rkns.Renderer._EDGE_BUTTON_OUTER, -90, 90, 1, "remove", this.renkan.translate("Remove")); -}; - -Rkns.Renderer.EdgeRemoveButton.prototype.mouseup = function() { + this.sector = this.renderer.drawSector(this, _EDGE_BUTTON_INNER, _EDGE_BUTTON_OUTER, -90, 90, 1, "remove", this.renkan.translate("Remove")); +}, +mouseup: function() { this.renderer.click_target = null; this.renderer.is_dragging = false; this.renderer.removeRepresentationsOfType("editor"); @@ -1469,42 +1454,45 @@ } } } -}; +} +}); /* */ -Rkns.Renderer.EdgeRevertButton = Rkns.Utils.inherit(Rkns.Renderer._BaseButton); +var EdgeRevertButton = Renderer.EdgeRevertButton = Rkns.Utils.inherit(_BaseButton); -Rkns.Renderer.EdgeRevertButton.prototype._init = function() { +Rkns._(EdgeRevertButton.prototype).extend({ +_init: function() { this.type = "Edge-revert-button"; - this.sector = this.renderer.drawSector(this, Rkns.Renderer._EDGE_BUTTON_INNER, Rkns.Renderer._EDGE_BUTTON_OUTER, -135, 135, 1, "revert", this.renkan.translate("Cancel deletion")); -}; - -Rkns.Renderer.EdgeRevertButton.prototype.mouseup = function() { + this.sector = this.renderer.drawSector(this, _EDGE_BUTTON_INNER, _EDGE_BUTTON_OUTER, -135, 135, 1, "revert", this.renkan.translate("Cancel deletion")); +}, +mouseup: function() { this.renderer.click_target = null; this.renderer.is_dragging = false; if (this.renderer.isEditable()) { this.source_representation.model.unset("delete_scheduled"); } -}; +} +}); /* */ -Rkns.Renderer.MiniFrame = Rkns.Utils.inherit(Rkns.Renderer._BaseRepresentation); +var MiniFrame = Renderer.MiniFrame = Rkns.Utils.inherit(_BaseRepresentation); -Rkns.Renderer.MiniFrame.prototype.paperShift = function(_delta) { +Rkns._(MiniFrame.prototype).extend({ +paperShift: function(_delta) { this.renderer.offset = this.renderer.offset.subtract(_delta.divide(this.renderer.minimap.scale).multiply(this.renderer.scale)); this.renderer.redraw(); -}; - -Rkns.Renderer.MiniFrame.prototype.mouseup = function(_delta) { +}, +mouseup: function(_delta) { this.renderer.click_target = null; this.renderer.is_dragging = false; -}; +} +}); /* */ -Rkns.Renderer.Scene = function(_renkan) { +var Scene = Renderer.Scene = function(_renkan) { this.renkan = _renkan; this.$ = Rkns.$(".Rk-Render"); this.representations = []; @@ -1554,7 +1542,7 @@ this.minimap.miniframe.opacity = .3; this.minimap.miniframe.strokeColor = '#000080'; this.minimap.miniframe.strokeWidth = 3; - this.minimap.miniframe.__representation = new Rkns.Renderer.MiniFrame(this, null); + this.minimap.miniframe.__representation = new MiniFrame(this, null); } this.throttledPaperDraw = Rkns._(function() { @@ -1583,7 +1571,7 @@ var throttledMouseMove = _.throttle(function(_event, _isTouch) { _this.onMouseMove(_event, _isTouch); - }, Rkns.Renderer._MOUSEMOVE_RATE); + }, _MOUSEMOVE_RATE); this.canvas_$.on({ mousedown: function(_event) { @@ -1609,8 +1597,8 @@ var _touches = _event.originalEvent.touches[0]; if ( _renkan.options.allow_double_click - && new Date() - _lastTap < Rkns.Renderer._DOUBLETAP_DELAY - && ( Math.pow(_lastTapX - _touches.pageX, 2) + Math.pow(_lastTapY - _touches.pageY, 2) < Rkns.Renderer._DOUBLETAP_DISTANCE ) + && new Date() - _lastTap < _DOUBLETAP_DELAY + && ( Math.pow(_lastTapX - _touches.pageX, 2) + Math.pow(_lastTapY - _touches.pageY, 2) < _DOUBLETAP_DISTANCE ) ) { _lastTap = 0; _this.onDoubleClick(_touches); @@ -1760,25 +1748,25 @@ } }); this.$.find(".Rk-AddNode-Button").click(function() { - if (_this.click_mode === Rkns.Renderer._CLICKMODE_ADDNODE) { + if (_this.click_mode === _CLICKMODE_ADDNODE) { _this.click_mode = false; _this.notif_$.hide(); } else { - _this.click_mode = Rkns.Renderer._CLICKMODE_ADDNODE; + _this.click_mode = _CLICKMODE_ADDNODE; _this.notif_$.text(_renkan.translate("Click on the background canvas to add a node")).fadeIn(); } }); this.$.find(".Rk-AddEdge-Button").click(function() { - if (_this.click_mode === Rkns.Renderer._CLICKMODE_STARTEDGE || _this.click_mode === Rkns.Renderer._CLICKMODE_ENDEDGE) { + if (_this.click_mode === _CLICKMODE_STARTEDGE || _this.click_mode === _CLICKMODE_ENDEDGE) { _this.click_mode = false; _this.notif_$.hide(); } else { - _this.click_mode = Rkns.Renderer._CLICKMODE_STARTEDGE; + _this.click_mode = _CLICKMODE_STARTEDGE; _this.notif_$.text(_renkan.translate("Click on a first node to start the edge")).fadeIn(); } }); this.$.find(".Rk-Bookmarklet-Button") - .attr("href","javascript:" + Rkns.Renderer._BOOKMARKLET_CODE(_renkan)) + .attr("href","javascript:" + _BOOKMARKLET_CODE(_renkan)) .click(function(){ _this.notif_$ .text(_renkan.translate("Drag this button to your bookmark bar. When on a third-party website, click it to enable drag-and-drop from the website to Renkan.")) @@ -1910,7 +1898,8 @@ }; -Rkns.Renderer.Scene.prototype.template = Rkns._.template( +Rkns._(Scene.prototype).extend({ +template: Rkns._.template( '<% if (options.show_top_bar) { %>
<% if (!options.editor_mode) { %>

<%- project.get("title") || translate("Untitled project")%>

' + '<% } else { %>" placeholder="<%-translate("Untitled project")%>" /><% } %>' + '
<unknown user>
    ' @@ -1928,9 +1917,8 @@ + '<% if (options.show_bins) { %>
    «
    <% } %>' + '
    ">
    ">
    ' + '
    ' -); - -Rkns.Renderer.Scene.prototype.fixSize = function(_autoscale) { +), +fixSize: function(_autoscale) { var w = this.$.width(), h = this.$.height(); if (this.renkan.options.show_top_bar) { @@ -1946,9 +1934,8 @@ if (_autoscale) { this.autoScale(); } -}; - -Rkns.Renderer.Scene.prototype.drawSector = function(_repr, _inR, _outR, _startAngle, _endAngle, _padding, _imgname, _caption) { +}, +drawSector: function(_repr, _inR, _outR, _startAngle, _endAngle, _padding, _imgname, _caption) { var _options = this.renkan.options, _startRads = _startAngle * Math.PI / 180, _endRads = _endAngle * Math.PI / 180, @@ -2050,9 +2037,8 @@ } return _res; -}; - -Rkns.Renderer.Scene.prototype.addToBundles = function(_edgeRepr) { +}, +addToBundles: function(_edgeRepr) { var _bundle = Rkns._(this.bundles).find(function(_bundle) { return ( ( _bundle.from === _edgeRepr.from_representation && _bundle.to === _edgeRepr.to_representation ) @@ -2074,13 +2060,11 @@ this.bundles.push(_bundle); } return _bundle; -}; - -Rkns.Renderer.Scene.prototype.isEditable = function() { +}, +isEditable: function() { return (this.renkan.options.editor_mode && !this.renkan.read_only); -}; - -Rkns.Renderer.Scene.prototype.onStatusChange = function() { +}, +onStatusChange: function() { var savebtn = this.$.find(".Rk-Save-Button"), tip = savebtn.find(".Rk-TopBar-Tooltip-Contents"); if (this.renkan.read_only) { @@ -2095,19 +2079,17 @@ tip.text(this.renkan.translate("Auto-save enabled")); } } -}; - -Rkns.Renderer.Scene.prototype.setScale = function(_newScale, _offset) { - if (_newScale > Rkns.Renderer._MIN_SCALE && _newScale < Rkns.Renderer._MAX_SCALE) { +}, +setScale: function(_newScale, _offset) { + if (_newScale > _MIN_SCALE && _newScale < _MAX_SCALE) { this.scale = _newScale; if (_offset) { this.offset = _offset; } this.redraw(); } -}; - -Rkns.Renderer.Scene.prototype.autoScale = function() { +}, +autoScale: function() { var nodes = this.renkan.project.get("nodes"); if (nodes.length > 1) { var _xx = nodes.map(function(_node) { return _node.get("position").x; }), @@ -2116,21 +2098,19 @@ _miny = Math.min.apply(Math, _yy), _maxx = Math.max.apply(Math, _xx), _maxy = Math.max.apply(Math, _yy); - var _scale = Math.max(Rkns.Renderer._MIN_SCALE, Math.min(Rkns.Renderer._MAX_SCALE, (paper.view.size.width - 2 * this.renkan.options.autoscale_padding) / (_maxx - _minx), (paper.view.size.height - 2 * this.renkan.options.autoscale_padding) / (_maxy - _miny))); + var _scale = Math.max(_MIN_SCALE, Math.min(_MAX_SCALE, (paper.view.size.width - 2 * this.renkan.options.autoscale_padding) / (_maxx - _minx), (paper.view.size.height - 2 * this.renkan.options.autoscale_padding) / (_maxy - _miny))); this.setScale(_scale, paper.view.center.subtract(new paper.Point([(_maxx + _minx) / 2, (_maxy + _miny) / 2]).multiply(_scale))); } if (nodes.length === 1) { this.setScale(1, paper.view.center.subtract(new paper.Point([nodes.at(0).get("position").x, nodes.at(0).get("position").y]))); } -}; - -Rkns.Renderer.Scene.prototype.redrawMiniframe = function() { +}, +redrawMiniframe: function() { var topleft = this.toMinimapCoords(this.toModelCoords(new paper.Point([0,0]))), bottomright = this.toMinimapCoords(this.toModelCoords(paper.view.bounds.bottomRight)); this.minimap.miniframe.fitBounds(topleft, bottomright); -}; - -Rkns.Renderer.Scene.prototype.rescaleMinimap = function() { +}, +rescaleMinimap: function() { var nodes = this.renkan.project.get("nodes"); if (nodes.length > 1) { var _xx = nodes.map(function(_node) { return _node.get("position").x; }), @@ -2153,38 +2133,31 @@ this.minimap.offset = this.minimap.size.divide(2).subtract(new paper.Point([nodes.at(0).get("position").x, nodes.at(0).get("position").y]).multiply(this.minimap.scale)); } this.redraw(); -}; - -Rkns.Renderer.Scene.prototype.toPaperCoords = function(_point) { +}, +toPaperCoords: function(_point) { return _point.multiply(this.scale).add(this.offset); -}; - -Rkns.Renderer.Scene.prototype.toMinimapCoords = function(_point) { +}, +toMinimapCoords: function(_point) { return _point.multiply(this.minimap.scale).add(this.minimap.offset).add(this.minimap.topleft); -}; - -Rkns.Renderer.Scene.prototype.toModelCoords = function(_point) { +}, +toModelCoords: function(_point) { return _point.subtract(this.offset).divide(this.scale); -}; - -Rkns.Renderer.Scene.prototype.addRepresentation = function(_type, _model) { - var _repr = new Rkns.Renderer[_type](this, _model); +}, +addRepresentation: function(_type, _model) { + var _repr = new Renderer[_type](this, _model); this.representations.push(_repr); return _repr; -}; - -Rkns.Renderer.Scene.prototype.addRepresentations = function(_type, _collection) { +}, +addRepresentations: function(_type, _collection) { var _this = this; _collection.forEach(function(_model) { _this.addRepresentation(_type, _model); }); -}; - -Rkns.Renderer.Scene.prototype.userTemplate = Rkns._.template( +}, +userTemplate: Rkns._.template( '
  • <%=name%>
  • ' -); - -Rkns.Renderer.Scene.prototype.addUser = function(_user) { +), +addUser: function(_user) { if (_user.get("_id") === this.renkan.current_user) { this.$.find(".Rk-CurrentUser-Name").text(_user.get("title")); this.$.find(".Rk-CurrentUser-Color").css("background", _user.get("color")); @@ -2198,27 +2171,24 @@ ) ); } -}; - -Rkns.Renderer.Scene.prototype.removeRepresentation = function(_representation) { +}, +removeRepresentation: function(_representation) { _representation.destroy(); this.representations = Rkns._(this.representations).reject( function(_repr) { return _repr == _representation; } ); -}; - -Rkns.Renderer.Scene.prototype.getRepresentationByModel = function(_model) { +}, +getRepresentationByModel: function(_model) { if (!_model) { return undefined; } return Rkns._(this.representations).find(function(_repr) { return _repr.model === _model; }); -}; - -Rkns.Renderer.Scene.prototype.removeRepresentationsOfType = function(_type) { +}, +removeRepresentationsOfType: function(_type) { var _representations = Rkns._(this.representations).filter(function(_repr) { return _repr.type == _type; }), @@ -2226,28 +2196,24 @@ Rkns._(_representations).each(function(_repr) { _this.removeRepresentation(_repr); }); -}; - -Rkns.Renderer.Scene.prototype.highlightModel = function(_model) { +}, +highlightModel: function(_model) { var _repr = this.getRepresentationByModel(_model); if (_repr) { _repr.highlight(); } -}; - -Rkns.Renderer.Scene.prototype.unhighlightAll = function(_model) { +}, +unhighlightAll: function(_model) { Rkns._(this.representations).each(function(_repr) { _repr.unhighlight(); }); -}; - -Rkns.Renderer.Scene.prototype.unselectAll = function(_model) { +}, +unselectAll: function(_model) { Rkns._(this.representations).each(function(_repr) { _repr.unselect(); }); -}; - -Rkns.Renderer.Scene.prototype.redraw = function() { +}, +redraw: function() { Rkns._(this.representations).each(function(_representation) { _representation.redraw(true); }); @@ -2255,17 +2221,15 @@ this.redrawMiniframe(); } paper.view.draw(); -}; - -Rkns.Renderer.Scene.prototype.addTempEdge = function(_from, _point) { +}, +addTempEdge: function(_from, _point) { var _tmpEdge = this.addRepresentation("TempEdge",null); _tmpEdge.end_pos = _point; _tmpEdge.from_representation = _from; _tmpEdge.redraw(); this.click_target = _tmpEdge; -}; - -Rkns.Renderer.Scene.prototype.findTarget = function(_hitResult) { +}, +findTarget: function(_hitResult) { if (_hitResult && typeof _hitResult.item.__representation !== "undefined") { var _newTarget = _hitResult.item.__representation; if (this.selected_target !== _hitResult.item.__representation) { @@ -2281,14 +2245,12 @@ } this.selected_target = null; } -}; - -Rkns.Renderer.Scene.prototype.paperShift = function(_delta) { +}, +paperShift: function(_delta) { this.offset = this.offset.add(_delta); this.redraw(); -}; - -Rkns.Renderer.Scene.prototype.onMouseMove = function(_event) { +}, +onMouseMove: function(_event) { var _off = this.canvas_$.offset(), _point = new paper.Point([ _event.pageX - _off.left, @@ -2296,7 +2258,7 @@ ]), _delta = _point.subtract(this.last_point); this.last_point = _point; - if (!this.is_dragging && this.mouse_down && _delta.length > Rkns.Renderer._MIN_DRAG_DISTANCE) { + if (!this.is_dragging && this.mouse_down && _delta.length > _MIN_DRAG_DISTANCE) { this.is_dragging = true; } var _hitResult = paper.project.hitTest(_point); @@ -2310,9 +2272,8 @@ this.findTarget(_hitResult); } paper.view.draw(); -}; - -Rkns.Renderer.Scene.prototype.onMouseDown = function(_event, _isTouch) { +}, +onMouseDown: function(_event, _isTouch) { var _off = this.canvas_$.offset(), _point = new paper.Point([ _event.pageX - _off.left, @@ -2329,7 +2290,7 @@ this.click_target.mousedown(_event, _isTouch); } else { this.click_target = null; - if (this.isEditable() && this.click_mode === Rkns.Renderer._CLICKMODE_ADDNODE) { + if (this.isEditable() && this.click_mode === _CLICKMODE_ADDNODE) { var _coords = this.toModelCoords(_point), _data = { id: Rkns.Utils.getUID('node'), @@ -2345,10 +2306,10 @@ } } if (this.click_mode) { - if (this.isEditable() && this.click_mode === Rkns.Renderer._CLICKMODE_STARTEDGE && this.click_target && this.click_target.type === "Node") { + if (this.isEditable() && this.click_mode === _CLICKMODE_STARTEDGE && this.click_target && this.click_target.type === "Node") { this.removeRepresentationsOfType("editor"); this.addTempEdge(this.click_target, _point); - this.click_mode = Rkns.Renderer._CLICKMODE_ENDEDGE; + this.click_mode = _CLICKMODE_ENDEDGE; this.notif_$.fadeOut(function() { Rkns.$(this).html(_renkan.translate("Click on a second node to complete the edge")).fadeIn(); }); @@ -2358,9 +2319,8 @@ } } paper.view.draw(); -}; - -Rkns.Renderer.Scene.prototype.onMouseUp = function(_event, _isTouch) { +}, +onMouseUp: function(_event, _isTouch) { this.mouse_down = false; if (this.click_target) { var _off = this.canvas_$.offset(); @@ -2381,9 +2341,8 @@ } } paper.view.draw(); -}; - -Rkns.Renderer.Scene.prototype.onScroll = function(_event, _scrolldelta) { +}, +onScroll: function(_event, _scrolldelta) { this.totalScroll += _scrolldelta; if (Math.abs(this.totalScroll) >= 1) { var _off = this.canvas_$.offset(), @@ -2398,9 +2357,8 @@ } this.totalScroll = 0; } -}; - -Rkns.Renderer.Scene.prototype.onDoubleClick = function(_event) { +}, +onDoubleClick: function(_event) { if (!this.isEditable()) { return; } @@ -2424,9 +2382,8 @@ this.getRepresentationByModel(_node).openEditor(); } paper.view.draw(); -}; - -Rkns.Renderer.Scene.prototype.dropData = function(_data, _event) { +}, +dropData: function(_data, _event) { if (!this.isEditable()) { return; } @@ -2540,4 +2497,8 @@ if (_event.type === "drop") { _repr.openEditor(); } -}; +} +}); +}).call(window); + +/* END paper-renderer.js */