client/js/paper-renderer.js
changeset 173 009427475db2
parent 170 603ffa4c6fa5
child 174 756cfa6570d2
equal deleted inserted replaced
172:9b8df8d779f5 173:009427475db2
     1 Rkns.Renderer = {
     1 Rkns.Renderer = {
     2     _MINIMAP_MARGIN: 20,
       
     3     _MIN_DRAG_DISTANCE: 2,
     2     _MIN_DRAG_DISTANCE: 2,
     4     _NODE_BUTTON_WIDTH: 40,
     3     _NODE_BUTTON_WIDTH: 40,
     5     _EDGE_BUTTON_INNER: 2,
     4     _EDGE_BUTTON_INNER: 2,
     6     _EDGE_BUTTON_OUTER: 40,
     5     _EDGE_BUTTON_OUTER: 40,
     7     _CLICKMODE_ADDNODE : 1,
     6     _CLICKMODE_ADDNODE : 1,
     9     _CLICKMODE_ENDEDGE : 3,
     8     _CLICKMODE_ENDEDGE : 3,
    10     _IMAGE_MAX_KB : 500,
     9     _IMAGE_MAX_KB : 500,
    11     _NODE_SIZE_STEP: Math.LN2/4,
    10     _NODE_SIZE_STEP: Math.LN2/4,
    12     _MIN_SCALE: 1/20,
    11     _MIN_SCALE: 1/20,
    13     _MAX_SCALE: 20,
    12     _MAX_SCALE: 20,
    14     _AUTOSCALE_MARGIN: 50,
       
    15     _MOUSEMOVE_RATE: 80,
    13     _MOUSEMOVE_RATE: 80,
    16     _DOUBLETAP_DELAY: 800,
    14     _DOUBLETAP_DELAY: 800,
    17     _DOUBLETAP_DISTANCE: 20*20,
    15     _DOUBLETAP_DISTANCE: 20*20,
    18     _USER_PLACEHOLDER : function(_renkan) {
    16     _USER_PLACEHOLDER : function(_renkan) {
    19         return {
    17         return {
   836 Rkns.Renderer.NodeEditor = Rkns.Utils.inherit(Rkns.Renderer._BaseEditor);
   834 Rkns.Renderer.NodeEditor = Rkns.Utils.inherit(Rkns.Renderer._BaseEditor);
   837 
   835 
   838 Rkns.Renderer.NodeEditor.prototype.template = Rkns._.template(
   836 Rkns.Renderer.NodeEditor.prototype.template = Rkns._.template(
   839     '<h2><span class="Rk-CloseX">&times;</span><%-renkan.translate("Edit Node")%></span></h2>'
   837     '<h2><span class="Rk-CloseX">&times;</span><%-renkan.translate("Edit Node")%></span></h2>'
   840     + '<p><label><%-renkan.translate("Title:")%></label><input class="Rk-Edit-Title" type="text" value="<%-node.title%>"/></p>'
   838     + '<p><label><%-renkan.translate("Title:")%></label><input class="Rk-Edit-Title" type="text" value="<%-node.title%>"/></p>'
   841     + '<p><label><%-renkan.translate("URI:")%></label><input class="Rk-Edit-URI" type="text" value="<%-node.uri%>"/><a class="Rk-Edit-Goto" href="<%-node.uri%>" target="_blank"></a></p>'
   839     + '<% if (options.show_node_editor_uri) { %><p><label><%-renkan.translate("URI:")%></label><input class="Rk-Edit-URI" type="text" value="<%-node.uri%>"/><a class="Rk-Edit-Goto" href="<%-node.uri%>" target="_blank"></a></p><% } %>'
   842     + '<p><label><%-renkan.translate("Description:")%></label><textarea class="Rk-Edit-Description"><%-node.description%></textarea></p>'
   840     + '<% if (options.show_node_editor_description) { %><p><label><%-renkan.translate("Description:")%></label><textarea class="Rk-Edit-Description"><%-node.description%></textarea></p><% } %>'
   843     + '<p><span class="Rk-Editor-Label"><%-renkan.translate("Size:")%></span><a href="#" class="Rk-Edit-Size-Down">-</a><span class="Rk-Edit-Size-Value"><%-node.size%></span><a href="#" class="Rk-Edit-Size-Up">+</a></p>'
   841     + '<% if (options.show_node_editor_size) { %><p><span class="Rk-Editor-Label"><%-renkan.translate("Size:")%></span><a href="#" class="Rk-Edit-Size-Down">-</a><span class="Rk-Edit-Size-Value"><%-node.size%></span><a href="#" class="Rk-Edit-Size-Up">+</a></p><% } %>'
   844     + '<div class="Rk-Editor-p"><span class="Rk-Editor-Label"><%-renkan.translate("Node color:")%></span><div class="Rk-Edit-ColorPicker-Wrapper"><span class="Rk-Edit-Color" style="background:<%-node.color%>;"><span class="Rk-Edit-ColorTip"></span></span><ul class="Rk-Edit-ColorPicker">'
   842     + '<% if (options.show_node_editor_color) { %><div class="Rk-Editor-p"><span class="Rk-Editor-Label"><%-renkan.translate("Node color:")%></span><div class="Rk-Edit-ColorPicker-Wrapper"><span class="Rk-Edit-Color" style="background:<%-node.color%>;"><span class="Rk-Edit-ColorTip"></span></span><ul class="Rk-Edit-ColorPicker">'
   845     + '<% _(Rkns.pickerColors).each(function(c) { %><li data-color="<%=c%>" style="background: <%=c%>"></li><% }); %></ul><span class="Rk-Edit-ColorPicker-Text"><%- renkan.translate("Choose color") %></span></div></div>'
   843     + '<% _(Rkns.pickerColors).each(function(c) { %><li data-color="<%=c%>" style="background: <%=c%>"></li><% }); %></ul><span class="Rk-Edit-ColorPicker-Text"><%- renkan.translate("Choose color") %></span></div></div><% } %>'
   846     + '<img class="Rk-Edit-ImgPreview" src="<%-node.image || node.image_placeholder%>" />'
   844     + '<% if (options.show_node_editor_image) { %><img class="Rk-Edit-ImgPreview" src="<%-node.image || node.image_placeholder%>" />'
   847     + '<p><label><%-renkan.translate("Image URL:")%></label><input class="Rk-Edit-Image" type="text" value="<%-node.image%>"/></p>'
   845     + '<p><label><%-renkan.translate("Image URL:")%></label><input class="Rk-Edit-Image" type="text" value="<%-node.image%>"/></p>'
   848     + '<p><label><%-renkan.translate("Choose Image File:")%></label><input class="Rk-Edit-Image-File" type="file" accept="image/*"/></p>'    
   846     + '<p><label><%-renkan.translate("Choose Image File:")%></label><input class="Rk-Edit-Image-File" type="file" accept="image/*"/></p><% } %>'    
   849     + '<% if (node.has_creator) { %><p><span class="Rk-Editor-Label"><%-renkan.translate("Created by:")%></span> <span class="Rk-UserColor" style="background:<%-node.created_by_color%>;"></span><%- Rkns.Renderer.shortenText(node.created_by_title, 25) %></p><% } %>'
   847     + '<% if (options.show_node_editor_creator && node.has_creator) { %><p><span class="Rk-Editor-Label"><%-renkan.translate("Created by:")%></span> <span class="Rk-UserColor" style="background:<%-node.created_by_color%>;"></span><%- Rkns.Renderer.shortenText(node.created_by_title, 25) %></p><% } %>'
   850 );
   848 );
   851 
   849 
   852 Rkns.Renderer.NodeEditor.prototype.readOnlyTemplate = Rkns._.template(
   850 Rkns.Renderer.NodeEditor.prototype.readOnlyTemplate = Rkns._.template(
   853     '<h2><span class="Rk-CloseX">&times;</span><span class="Rk-UserColor" style="background:<%-node.color%>;"></span>'
   851     '<h2><span class="Rk-CloseX">&times;</span><% if (options.show_node_tooltip_color) { %><span class="Rk-UserColor" style="background:<%-node.color%>;"></span><% } %>'
   854     + '<span class="Rk-Display-Title"><% if (node.uri) { %><a href="<%-node.uri%>" target="_blank"><% } %><%-node.title%><% if (node.uri) { %></a><% } %></span></h2>'
   852     + '<span class="Rk-Display-Title"><% if (node.uri) { %><a href="<%-node.uri%>" target="_blank"><% } %><%-node.title%><% if (node.uri) { %></a><% } %></span></h2>'
   855     + '<% if (node.uri) { %><p class="Rk-Display-URI"><a href="<%-node.uri%>" target="_blank"><%-node.short_uri%></a></p><% } %>'
   853     + '<% if (node.uri && options.show_node_tooltip_uri) { %><p class="Rk-Display-URI"><a href="<%-node.uri%>" target="_blank"><%-node.short_uri%></a></p><% } %>'
   856     + '<p><%-node.description%></p>'
   854     + '<% if (options.show_node_tooltip_description) { %><p><%-node.description%></p><% } %>'
   857     + '<% if (node.image) { %><img class="Rk-Display-ImgPreview" src="<%-node.image%>" /><% } %>'
   855     + '<% if (node.image && options.show_node_tooltip_image) { %><img class="Rk-Display-ImgPreview" src="<%-node.image%>" /><% } %>'
   858     + '<% if (node.has_creator) { %><p><span class="Rk-Editor-Label"><%-renkan.translate("Created by:")%></span><span class="Rk-UserColor" style="background:<%-node.created_by_color%>;"></span><%- Rkns.Renderer.shortenText(node.created_by_title, 25) %></p><% } %>'
   856     + '<% if (node.has_creator && options.show_node_tooltip_creator) { %><p><span class="Rk-Editor-Label"><%-renkan.translate("Created by:")%></span><span class="Rk-UserColor" style="background:<%-node.created_by_color%>;"></span><%- Rkns.Renderer.shortenText(node.created_by_title, 25) %></p><% } %>'
   859 );
   857 );
   860 
   858 
   861 Rkns.Renderer.NodeEditor.prototype.draw = function() {
   859 Rkns.Renderer.NodeEditor.prototype.draw = function() {
   862     var _model = this.source_representation.model,
   860     var _model = this.source_representation.model,
   863         _created_by = _model.get("created_by") || Rkns.Renderer._USER_PLACEHOLDER(this.renkan),
   861         _created_by = _model.get("created_by") || Rkns.Renderer._USER_PLACEHOLDER(this.renkan),
   877                 color: _model.get("color") || _created_by.get("color"),
   875                 color: _model.get("color") || _created_by.get("color"),
   878                 created_by_color: _created_by.get("color"),
   876                 created_by_color: _created_by.get("color"),
   879                 created_by_title: _created_by.get("title"),
   877                 created_by_title: _created_by.get("title"),
   880                 size: (_size > 0 ? "+" : "") + _size
   878                 size: (_size > 0 ? "+" : "") + _size
   881             },
   879             },
   882             renkan: this.renkan
   880             renkan: this.renkan,
       
   881             options: this.options
   883         }));
   882         }));
   884     this.redraw();
   883     this.redraw();
   885     var _this = this,
   884     var _this = this,
   886         closeEditor = function() {
   885         closeEditor = function() {
   887             _this.renderer.removeRepresentation(_this);
   886             _this.renderer.removeRepresentation(_this);
   893     if (this.renderer.isEditable()) {
   892     if (this.renderer.isEditable()) {
   894         
   893         
   895         var onFieldChange = Rkns._(function() {
   894         var onFieldChange = Rkns._(function() {
   896             Rkns._(function() {
   895             Rkns._(function() {
   897                 if (_this.renderer.isEditable()) {
   896                 if (_this.renderer.isEditable()) {
   898                     var _uri = _this.editor_$.find(".Rk-Edit-URI").val(),
       
   899                         _image = _this.editor_$.find(".Rk-Edit-Image").val();
       
   900                     _this.editor_$.find(".Rk-Edit-ImgPreview").attr("src", _image || _image_placeholder);
       
   901                     _this.editor_$.find(".Rk-Edit-Goto").attr("href",_uri);
       
   902                     var _data = {
   897                     var _data = {
   903                         title: _this.editor_$.find(".Rk-Edit-Title").val(),
   898                         title: _this.editor_$.find(".Rk-Edit-Title").val()
   904                         description: _this.editor_$.find(".Rk-Edit-Description").val(),
       
   905                         uri: _uri,
       
   906                         image: _image
       
   907                     };
   899                     };
       
   900                     if (_this.options.show_node_editor_url) {
       
   901                         _data.uri = _this.editor_$.find(".Rk-Edit-URI").val();
       
   902                     }
       
   903                     if (_this.options.show_node_editor_image) {
       
   904                         _data.image = _this.editor_$.find(".Rk-Edit-Image").val();
       
   905                         _this.editor_$.find(".Rk-Edit-ImgPreview").attr("src", _data.image || _image_placeholder);
       
   906                     }
       
   907                     if (_this.options.show_node_editor_description) {
       
   908                         _data.description = _this.editor_$.find(".Rk-Edit-Description").val();
       
   909                     }
   908                     _model.set(_data);
   910                     _model.set(_data);
   909                     _this.redraw();
   911                     _this.redraw();
   910                 } else {
   912                 } else {
   911                     closeEditor();
   913                     closeEditor();
   912                 }
   914                 }
  1013 Rkns.Renderer.EdgeEditor = Rkns.Utils.inherit(Rkns.Renderer._BaseEditor);
  1015 Rkns.Renderer.EdgeEditor = Rkns.Utils.inherit(Rkns.Renderer._BaseEditor);
  1014 
  1016 
  1015 Rkns.Renderer.EdgeEditor.prototype.template = Rkns._.template(
  1017 Rkns.Renderer.EdgeEditor.prototype.template = Rkns._.template(
  1016     '<h2><span class="Rk-CloseX">&times;</span><%-renkan.translate("Edit Edge")%></span></h2>'
  1018     '<h2><span class="Rk-CloseX">&times;</span><%-renkan.translate("Edit Edge")%></span></h2>'
  1017     + '<p><label><%-renkan.translate("Title:")%></label><input class="Rk-Edit-Title" type="text" value="<%-edge.title%>"/></p>'
  1019     + '<p><label><%-renkan.translate("Title:")%></label><input class="Rk-Edit-Title" type="text" value="<%-edge.title%>"/></p>'
  1018     + '<p><label><%-renkan.translate("URI:")%></label><input class="Rk-Edit-URI" type="text" value="<%-edge.uri%>"/><a class="Rk-Edit-Goto" href="<%-edge.uri%>" target="_blank"></a></p>'
  1020     + '<% if (options.show_edge_editor_uri) { %><p><label><%-renkan.translate("URI:")%></label><input class="Rk-Edit-URI" type="text" value="<%-edge.uri%>"/><a class="Rk-Edit-Goto" href="<%-edge.uri%>" target="_blank"></a></p>'
  1019     + '<% if (properties.length) { %><p><label><%-renkan.translate("Choose from vocabulary:")%></label><select class="Rk-Edit-Vocabulary">'
  1021     + '<% if (options.properties.length) { %><p><label><%-renkan.translate("Choose from vocabulary:")%></label><select class="Rk-Edit-Vocabulary">'
  1020     + '<% _(properties).each(function(ontology) { %><option class="Rk-Edit-Vocabulary-Class" value=""><%- renkan.translate(ontology.label) %></option>'
  1022     + '<% _(options.properties).each(function(ontology) { %><option class="Rk-Edit-Vocabulary-Class" value=""><%- renkan.translate(ontology.label) %></option>'
  1021     + '<% _(ontology.properties).each(function(property) { var uri = ontology["base-uri"] + property.uri; %><option class="Rk-Edit-Vocabulary-Property" value="<%- uri %>'
  1023     + '<% _(ontology.properties).each(function(property) { var uri = ontology["base-uri"] + property.uri; %><option class="Rk-Edit-Vocabulary-Property" value="<%- uri %>'
  1022     + '"<% if (uri === edge.uri) { %> selected<% } %>><%- renkan.translate(property.label) %></option>'
  1024     + '"<% if (uri === edge.uri) { %> selected<% } %>><%- renkan.translate(property.label) %></option>'
  1023     + '<% }) %><% }) %></select></p><% } %>'
  1025     + '<% }) %><% }) %></select></p><% } } %>'
  1024     + '<div class="Rk-Editor-p"><span class="Rk-Editor-Label"><%-renkan.translate("Edge color:")%></span><div class="Rk-Edit-ColorPicker-Wrapper"><span class="Rk-Edit-Color" style="background:<%-edge.color%>;"><span class="Rk-Edit-ColorTip"></span></span><ul class="Rk-Edit-ColorPicker">'
  1026     + '<% if (options.show_edge_editor_color) { %><div class="Rk-Editor-p"><span class="Rk-Editor-Label"><%-renkan.translate("Edge color:")%></span><div class="Rk-Edit-ColorPicker-Wrapper"><span class="Rk-Edit-Color" style="background:<%-edge.color%>;"><span class="Rk-Edit-ColorTip"></span></span><ul class="Rk-Edit-ColorPicker">'
  1025     + '<% _(Rkns.pickerColors).each(function(c) { %><li data-color="<%=c%>" style="background: <%=c%>"></li><% }); %></ul><span class="Rk-Edit-ColorPicker-Text"><%- renkan.translate("Choose color") %></span></div></div>'
  1027     + '<% _(Rkns.pickerColors).each(function(c) { %><li data-color="<%=c%>" style="background: <%=c%>"></li><% }); %></ul><span class="Rk-Edit-ColorPicker-Text"><%- renkan.translate("Choose color") %></span></div></div><% } %>'
  1026     + '<p><span class="Rk-Edit-Direction"><%- renkan.translate("Change edge direction") %></span></p>'
  1028     + '<% if (options.show_edge_editor_direction) { %><p><span class="Rk-Edit-Direction"><%- renkan.translate("Change edge direction") %></span></p><% } %>'
  1027     + '<p><span class="Rk-Editor-Label"><%-renkan.translate("From:")%></span><span class="Rk-UserColor" style="background:<%-edge.from_color%>;"></span><%- Rkns.Renderer.shortenText(edge.from_title, 25) %></p>'
  1029     + '<% if (options.show_edge_editor_nodes) { %><p><span class="Rk-Editor-Label"><%-renkan.translate("From:")%></span><span class="Rk-UserColor" style="background:<%-edge.from_color%>;"></span><%- Rkns.Renderer.shortenText(edge.from_title, 25) %></p>'
  1028     + '<p><span class="Rk-Editor-Label"><%-renkan.translate("To:")%></span><span class="Rk-UserColor" style="background:<%-edge.to_color%>;"></span><%- Rkns.Renderer.shortenText(edge.to_title, 25) %></p>'
  1030     + '<p><span class="Rk-Editor-Label"><%-renkan.translate("To:")%></span><span class="Rk-UserColor" style="background:<%-edge.to_color%>;"></span><%- Rkns.Renderer.shortenText(edge.to_title, 25) %></p><% } %>'
  1029     + '<% if (edge.has_creator) { %><p><span class="Rk-Editor-Label"><%-renkan.translate("Created by:")%></span><span class="Rk-UserColor" style="background:<%-edge.created_by_color%>;"></span><%- Rkns.Renderer.shortenText(edge.created_by_title, 25) %></p><% } %>'
  1031     + '<% if (options.show_edge_editor_creator && edge.has_creator) { %><p><span class="Rk-Editor-Label"><%-renkan.translate("Created by:")%></span><span class="Rk-UserColor" style="background:<%-edge.created_by_color%>;"></span><%- Rkns.Renderer.shortenText(edge.created_by_title, 25) %></p><% } %>'
  1030 );
  1032 );
  1031 
  1033 
  1032 Rkns.Renderer.EdgeEditor.prototype.readOnlyTemplate = Rkns._.template(
  1034 Rkns.Renderer.EdgeEditor.prototype.readOnlyTemplate = Rkns._.template(
  1033     '<h2><span class="Rk-CloseX">&times;</span><span class="Rk-UserColor" style="background:<%-edge.color%>;"></span>'
  1035     '<h2><span class="Rk-CloseX">&times;</span><% if (options.show_edge_tooltip_color) { %><span class="Rk-UserColor" style="background:<%-edge.color%>;"></span><% } %>'
  1034     + '<span class="Rk-Display-Title"><% if (edge.uri) { %><a href="<%-edge.uri%>" target="_blank"><% } %><%-edge.title%><% if (edge.uri) { %></a><% } %></span></h2>'
  1036     + '<span class="Rk-Display-Title"><% if (edge.uri) { %><a href="<%-edge.uri%>" target="_blank"><% } %><%-edge.title%><% if (edge.uri) { %></a><% } %></span></h2>'
  1035     + '<% if (edge.uri) { %><p class="Rk-Display-URI"><a href="<%-edge.uri%>" target="_blank"><%-edge.short_uri%></a></p><% } %>'
  1037     + '<% if (options.show_edge_tooltip_uri && edge.uri) { %><p class="Rk-Display-URI"><a href="<%-edge.uri%>" target="_blank"><%-edge.short_uri%></a></p><% } %>'
  1036     + '<p><%-edge.description%></p>'
  1038     + '<p><%-edge.description%></p>'
  1037     + '<p><span class="Rk-Editor-Label"><%-renkan.translate("From:")%></span><span class="Rk-UserColor" style="background:<%-edge.from_color%>;"></span><%- Rkns.Renderer.shortenText(edge.from_title, 25) %></p>'
  1039     + '<% if (options.show_edge_tooltip_nodes) { %><p><span class="Rk-Editor-Label"><%-renkan.translate("From:")%></span><span class="Rk-UserColor" style="background:<%-edge.from_color%>;"></span><%- Rkns.Renderer.shortenText(edge.from_title, 25) %></p>'
  1038     + '<p><span class="Rk-Editor-Label"><%-renkan.translate("To:")%></span><span class="Rk-UserColor" style="background:<%-edge.to_color%>;"></span><%- Rkns.Renderer.shortenText(edge.to_title, 25) %></p>'
  1040     + '<p><span class="Rk-Editor-Label"><%-renkan.translate("To:")%></span><span class="Rk-UserColor" style="background:<%-edge.to_color%>;"></span><%- Rkns.Renderer.shortenText(edge.to_title, 25) %></p><% } %>'
  1039     + '<% if (edge.has_creator) { %><p><span class="Rk-Editor-Label"><%-renkan.translate("Created by:")%></span><span class="Rk-UserColor" style="background:<%-edge.created_by_color%>;"></span><%- Rkns.Renderer.shortenText(edge.created_by_title, 25) %></p><% } %>'
  1041     + '<% if (options.show_edge_tooltip_creator && edge.has_creator) { %><p><span class="Rk-Editor-Label"><%-renkan.translate("Created by:")%></span><span class="Rk-UserColor" style="background:<%-edge.created_by_color%>;"></span><%- Rkns.Renderer.shortenText(edge.created_by_title, 25) %></p><% } %>'
  1040 );
  1042 );
  1041 
  1043 
  1042 Rkns.Renderer.EdgeEditor.prototype.draw = function() {
  1044 Rkns.Renderer.EdgeEditor.prototype.draw = function() {
  1043     var _model = this.source_representation.model,
  1045     var _model = this.source_representation.model,
  1044         _from_model = _model.get("from"),
  1046         _from_model = _model.get("from"),
  1060                 to_color: _to_model.get("color") || (_to_model.get("created_by") || Rkns.Renderer._USER_PLACEHOLDER(this.renkan)).get("color"),
  1062                 to_color: _to_model.get("color") || (_to_model.get("created_by") || Rkns.Renderer._USER_PLACEHOLDER(this.renkan)).get("color"),
  1061                 created_by_color: _created_by.get("color"),
  1063                 created_by_color: _created_by.get("color"),
  1062                 created_by_title: _created_by.get("title")
  1064                 created_by_title: _created_by.get("title")
  1063             },
  1065             },
  1064             renkan: this.renkan,
  1066             renkan: this.renkan,
  1065             properties: this.options.properties
  1067             options: this.options,
  1066         }));
  1068         }));
  1067     this.redraw();
  1069     this.redraw();
  1068     var _this = this,
  1070     var _this = this,
  1069         closeEditor = function() {
  1071         closeEditor = function() {
  1070             _this.renderer.removeRepresentation(_this);
  1072             _this.renderer.removeRepresentation(_this);
  1075     if (this.renderer.isEditable()) {
  1077     if (this.renderer.isEditable()) {
  1076         
  1078         
  1077         var onFieldChange = Rkns._(function() {
  1079         var onFieldChange = Rkns._(function() {
  1078             Rkns._(function() {
  1080             Rkns._(function() {
  1079                 if (_this.renderer.isEditable()) {
  1081                 if (_this.renderer.isEditable()) {
  1080                     _this.editor_$.find(".Rk-Edit-Goto").attr("href",_this.editor_$.find(".Rk-Edit-URI").val());
       
  1081                     var _data = {
  1082                     var _data = {
  1082                         title: _this.editor_$.find(".Rk-Edit-Title").val(),
  1083                         title: _this.editor_$.find(".Rk-Edit-Title").val()
  1083                         uri: _this.editor_$.find(".Rk-Edit-URI").val()
       
  1084                     };
  1084                     };
       
  1085                     if (_this.options.show_edge_editor_uri) {
       
  1086                         _data.uri = _this.editor_$.find(".Rk-Edit-URI").val();
       
  1087                     }
       
  1088                     _this.editor_$.find(".Rk-Edit-Goto").attr("href",_data.uri);
  1085                     _model.set(_data);
  1089                     _model.set(_data);
  1086                     paper.view.draw();
  1090                     paper.view.draw();
  1087                 } else {
  1091                 } else {
  1088                     closeEditor();
  1092                     closeEditor();
  1089                 }
  1093                 }
  1999             _yy = nodes.map(function(_node) { return _node.get("position").y; }),
  2003             _yy = nodes.map(function(_node) { return _node.get("position").y; }),
  2000             _minx = Math.min.apply(Math, _xx),
  2004             _minx = Math.min.apply(Math, _xx),
  2001             _miny = Math.min.apply(Math, _yy),
  2005             _miny = Math.min.apply(Math, _yy),
  2002             _maxx = Math.max.apply(Math, _xx),
  2006             _maxx = Math.max.apply(Math, _xx),
  2003             _maxy = Math.max.apply(Math, _yy);
  2007             _maxy = Math.max.apply(Math, _yy);
  2004         var _scale = Math.max(Rkns.Renderer._MIN_SCALE, Math.min(Rkns.Renderer._MAX_SCALE, (paper.view.size.width - 2 * Rkns.Renderer._AUTOSCALE_MARGIN) / (_maxx - _minx), (paper.view.size.height - 2 * Rkns.Renderer._AUTOSCALE_MARGIN) / (_maxy - _miny)));
  2008         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)));
  2005         this.setScale(_scale, paper.view.center.subtract(new paper.Point([(_maxx + _minx) / 2, (_maxy + _miny) / 2]).multiply(_scale)));
  2009         this.setScale(_scale, paper.view.center.subtract(new paper.Point([(_maxx + _minx) / 2, (_maxy + _miny) / 2]).multiply(_scale)));
  2006     }
  2010     }
  2007     if (nodes.length === 1) {
  2011     if (nodes.length === 1) {
  2008         this.setScale(1, paper.view.center.subtract(new paper.Point([nodes.at(0).get("position").x, nodes.at(0).get("position").y])));
  2012         this.setScale(1, paper.view.center.subtract(new paper.Point([nodes.at(0).get("position").x, nodes.at(0).get("position").y])));
  2009     }
  2013     }
  2025             _maxx = Math.max.apply(Math, _xx),
  2029             _maxx = Math.max.apply(Math, _xx),
  2026             _maxy = Math.max.apply(Math, _yy);
  2030             _maxy = Math.max.apply(Math, _yy);
  2027         var _scale = Math.min(
  2031         var _scale = Math.min(
  2028             this.scale * .8 * this.renkan.options.minimap_width / paper.view.bounds.width,
  2032             this.scale * .8 * this.renkan.options.minimap_width / paper.view.bounds.width,
  2029             this.scale * .8 * this.renkan.options.minimap_height / paper.view.bounds.height,
  2033             this.scale * .8 * this.renkan.options.minimap_height / paper.view.bounds.height,
  2030             ( this.renkan.options.minimap_width - 2 * Rkns.Renderer._MINIMAP_MARGIN ) / (_maxx - _minx),
  2034             ( this.renkan.options.minimap_width - 2 * this.renkan.options.minimap_padding ) / (_maxx - _minx),
  2031             ( this.renkan.options.minimap_height - 2 * Rkns.Renderer._MINIMAP_MARGIN ) / (_maxy - _miny)
  2035             ( this.renkan.options.minimap_height - 2 * this.renkan.options.minimap_padding ) / (_maxy - _miny)
  2032         );
  2036         );
  2033         this.minimap.offset = this.minimap.size.divide(2).subtract(new paper.Point([(_maxx + _minx) / 2, (_maxy + _miny) / 2]).multiply(_scale));
  2037         this.minimap.offset = this.minimap.size.divide(2).subtract(new paper.Point([(_maxx + _minx) / 2, (_maxy + _miny) / 2]).multiply(_scale));
  2034         this.minimap.scale = _scale;
  2038         this.minimap.scale = _scale;
  2035     }
  2039     }
  2036     if (nodes.length === 1) {
  2040     if (nodes.length === 1) {