client/js/renderer/scene.js
changeset 622 02e3c464223f
parent 576 1e1791dfc9e4
child 633 fdff56da097d
--- a/client/js/renderer/scene.js	Thu Jun 23 17:50:37 2016 +0200
+++ b/client/js/renderer/scene.js	Fri Jun 24 13:07:21 2016 +0200
@@ -1,7 +1,7 @@
 
 define(['jquery', 'underscore', 'filesaver', 'requtils', 'renderer/miniframe', 'screenfull'], function ($, _, filesaver, requtils, MiniFrame, Screenfull) {
     'use strict';
-    
+
     var Utils = requtils.getUtils();
 
     /* Scene Begin */
@@ -240,37 +240,37 @@
         this.$.find(".Rk-Users").mouseleave(
                 function() { _this.$.find(".Rk-UserList").slideUp(); }
         );
-        
+
         if (Screenfull.enabled){
             bindClick(".Rk-FullScreen-Button", "fullScreen");
-            
+
             document.addEventListener(Screenfull.raw.fullscreenchange, function () {
                 //the listener occur too randomly and sometimes before the fullscreen is fully set up
                 //so we add 500 delay
                 setTimeout(function(){
                     var widthAft = _this.$.width();
                     var heightAft = _this.$.height();
-                    
+
                     if (_this.renkan.options.show_top_bar) {
                         heightAft -= _this.$.find(".Rk-TopBar").height();
                     }
                     if (_this.renkan.options.show_bins && (this.renkan.$.find(".Rk-Bins").position().left > 0)) {
                         widthAft -= this.renkan.$.find(".Rk-Bins").width();
                     }
-                    
+
                     paper.view.viewSize = new paper.Size([widthAft, heightAft]);
                     _this.resize(_this.currentWidth, widthAft, _this.currentHeight, heightAft);
-                    
+
                     _this.currentWidth = widthAft;
                     _this.currentHeight = heightAft;
-                    
+
                     if (!Screenfull.isFullscreen) {
                         paper.view.onResize = function(_event) {
                             var newWidth = _event.size._width,
                                 newHeight = _event.size._height;
                             var prevHeight = newHeight - _event.delta.height,
                                 prevWidth = newWidth - _event.delta.width;
-                            
+
                             _this.resize(prevWidth, newWidth, prevHeight, newHeight);
                         };
                     }
@@ -280,7 +280,7 @@
             this.$.find(".Rk-FullScreen-Button").addClass("disabled");
             this.$.find(".Rk-FullScreen-Button .Rk-TopBar-Tooltip-Contents").html(this.renkan.translate("Fullscreen not supported by your browser"));
         }
-        
+
         bindClick(".Rk-AddNode-Button", "addNodeBtn");
         bindClick(".Rk-AddEdge-Button", "addEdgeBtn");
         bindClick(".Rk-Save-Button", "save");
@@ -309,7 +309,7 @@
                 newHeight = _event.size._height;
             var prevHeight = newHeight - _event.delta.height,
                 prevWidth = newWidth - _event.delta.width;
-            
+
             _this.resize(prevWidth, newWidth, prevHeight, newHeight);
         });
 
@@ -353,22 +353,22 @@
                     break;
             }
         });
-        
+
         this.renkan.project.on("loaded", function(){
             if (_this.renkan.options.url_parameters){
-                Backbone.history.start();                
+                Backbone.history.start();
             } else {
                 _this.fixSize();
             }
             _this.redrawActive = true;
             _thRedraw();
         });
-        
+
       //register router events
         this.renkan.router.on("router", function(_params){
             _this.setViewparameters(_params);
         });
-        
+
         this.renkan.project.on("change:loadingStatus", function(){
             if (_this.renkan.project.get("loadingStatus")){
                 var animate = _this.$.find(".loader").addClass("run");
@@ -836,13 +836,13 @@
         },
         resize: function(prevWidth, newWidth, prevHeight, newHeight){
             var _ratio;
-            
+
             if (this.minimap) {
                 this.minimap.topleft = paper.view.bounds.bottomRight.subtract(this.minimap.size);
                 this.minimap.rectangle.fitBounds(this.minimap.topleft.subtract([2,2]), this.minimap.size.add([4,4]));
                 this.minimap.cliprectangle.fitBounds(this.minimap.topleft, this.minimap.size);
             }
-    
+
             var ratioH = newHeight/prevHeight,
                 ratioW = newWidth/prevWidth;
             if (newHeight < newWidth) {
@@ -851,13 +851,14 @@
                 _ratio = ratioW;
             }
             this.view.resizeZoom(newWidth - prevWidth, newHeight - prevHeight, _ratio);
-    
+
             this.redraw();
         },
-        addTempEdge: function(_from, _point) {
+        addTempEdge: function(_from, _point, _origin) {
             var _tmpEdge = this.addRepresentation("TempEdge",null);
             _tmpEdge.end_pos = _point;
             _tmpEdge.from_representation = _from;
+            _tmpEdge.origin = _origin;
             _tmpEdge.redraw();
             this.click_target = _tmpEdge;
         },
@@ -926,7 +927,8 @@
                             position: {
                                 x: _coords.x,
                                 y: _coords.y
-                            }
+                            },
+                            origin: Utils.OriginEnum.NODE_BUTTON
                         };
                         var _node = this.renkan.project.addNode(_data);
                         this.getRepresentationByModel(_node).openEditor();
@@ -936,7 +938,7 @@
             if (this.click_mode) {
                 if (this.isEditable() && this.click_mode === Utils._CLICKMODE_STARTEDGE && this.click_target && this.click_target.type === "Node") {
                     this.removeRepresentationsOfType("editor");
-                    this.addTempEdge(this.click_target, _point);
+                    this.addTempEdge(this.click_target, _point, Utils.OriginEnum.EDGE_BUTTON_BAR);
                     this.click_mode = Utils._CLICKMODE_ENDEDGE;
                     this.notif_$.fadeOut(function() {
                         $(this).html(this.renkan.translate("Click on a second node to complete the edge")).fadeIn();
@@ -1011,7 +1013,8 @@
                     position: {
                         x: _coords.x,
                         y: _coords.y
-                    }
+                    },
+                    origin: Utils.OriginEnum.NODE_DOUBLE_CLICK
                 },
                 _node = this.renkan.project.addNode(_data);
                 this.getRepresentationByModel(_node).openEditor();
@@ -1122,25 +1125,27 @@
             var newNode = (typeof this.renkan.options.drop_handler === "undefined")?this.defaultDropHandler(_data):this.renkan.options.drop_handler(_data);
 
             var _off = this.canvas_$.offset(),
-            _point = new paper.Point([
-                                      _event.pageX - _off.left,
-                                      _event.pageY - _off.top
-                                      ]),
-                                      _coords = this.toModelCoords(_point),
-                                      _nodedata = {
-                id: Utils.getUID('node'),
-                created_by: this.renkan.current_user,
-                uri: newNode.uri || "",
-                title: newNode.title || "",
-                description: newNode.description || "",
-                image: newNode.image || "",
-                color: newNode.color || undefined,
-                clip_path: newNode.clipPath || undefined,
-                position: {
-                    x: _coords.x,
-                    y: _coords.y
-                }
-            };
+                _point = new paper.Point([
+                    _event.pageX - _off.left,
+                    _event.pageY - _off.top
+                ]),
+                _coords = this.toModelCoords(_point),
+                _nodedata = {
+                    id: Utils.getUID('node'),
+                    created_by: this.renkan.current_user,
+                    uri: newNode.uri || "",
+                    title: newNode.title || "",
+                    description: newNode.description || "",
+                    image: newNode.image || "",
+                    color: newNode.color || undefined,
+                    clip_path: newNode.clipPath || undefined,
+                    position: {
+                        x: _coords.x,
+                        y: _coords.y
+                    },
+                    //TODO: Determine if it comes from bin or ext
+                    origin: Utils.OriginEnum.NODE_DROP_EXT
+                };
             var _node = this.renkan.project.addNode(_nodedata),
             _repr = this.getRepresentationByModel(_node);
             if (_event.type === "drop") {
@@ -1150,7 +1155,7 @@
         fullScreen: function() {
             this.currentWidth = this.$.width();
             this.currentHeight = this.$.height();
-            
+
             var _el = this.renkan.$[0];
             paper.view.off("resize");
             Screenfull.toggle(_el);