(function() { 'use strict'; function Nodedraggingfactory(flowchartConstants) { var nodeDropScope = {}; nodeDropScope.dropElement = null; return function(modelservice, nodeDraggingScope, applyFunction, automaticResize, dragAnimation) { nodeDraggingScope.shadowDragStarted = false; nodeDraggingScope.dropElement = null; var dragOffsets = []; var draggedElements = []; nodeDraggingScope.draggedNodes = []; nodeDraggingScope.shadowElements = []; var destinationHtmlElements = []; var oldDisplayStyles = []; function getCoordinate(coordinate, max) { coordinate = Math.max(coordinate, 0); coordinate = Math.min(coordinate, max); return coordinate; } function getXCoordinate(x) { return getCoordinate(x, modelservice.getCanvasHtmlElement().offsetWidth); } function getYCoordinate(y) { return getCoordinate(y, modelservice.getCanvasHtmlElement().offsetHeight); } function resizeCanvas(draggedNode, nodeElement) { if (automaticResize && !modelservice.isDropSource()) { var canvasElement = modelservice.getCanvasHtmlElement(); if (canvasElement.offsetWidth < draggedNode.x + nodeElement.offsetWidth + flowchartConstants.canvasResizeThreshold) { canvasElement.style.width = canvasElement.offsetWidth + flowchartConstants.canvasResizeStep + 'px'; } if (canvasElement.offsetHeight < draggedNode.y + nodeElement.offsetHeight + flowchartConstants.canvasResizeThreshold) { canvasElement.style.height = canvasElement.offsetHeight + flowchartConstants.canvasResizeStep + 'px'; } } } return { dragstart: function(node) { return function(event) { if (node.readonly) { return; } dragOffsets.length = 0; draggedElements.length = 0; nodeDraggingScope.draggedNodes.length = 0; nodeDraggingScope.shadowElements.length = 0; destinationHtmlElements.length = 0; oldDisplayStyles.length = 0; var elements = []; var nodes = []; if (modelservice.nodes.isSelected(node)) { var selectedNodes = modelservice.nodes.getSelectedNodes(); for (var i=0;i')[0]; // This divs stays invisible, because it is not in the dom. //event.originalEvent.dataTransfer.setDragImage(invisibleDiv, 0, 0); event.originalEvent.dataTransfer.setDragImage(modelservice.getDragImage(), 0, 0); } else { destinationHtmlElements.push(event.target); oldDisplayStyles.push(event.target.style.display); event.target.style.display = 'none'; nodeDraggingScope.shadowDragStarted = true; } return; } //modelservice.deselectAll(); //modelservice.nodes.select(node); nodeDraggingScope.draggedNodes = nodes; for (var i=0;i

'+ draggedNode.name +'

'); var targetInnerNode = angular.element(draggedElements[i]).children()[0]; shadowElement.children()[0].style.backgroundColor = targetInnerNode.style.backgroundColor; nodeDraggingScope.shadowElements.push(shadowElement); modelservice.getCanvasHtmlElement().appendChild(nodeDraggingScope.shadowElements[i][0]); } } event.originalEvent.dataTransfer.setData('text', 'Just to support firefox'); if (event.originalEvent.dataTransfer.setDragImage) { //var invisibleDiv = angular.element('
')[0]; // This divs stays invisible, because it is not in the dom. //event.originalEvent.dataTransfer.setDragImage(invisibleDiv, 0, 0); event.originalEvent.dataTransfer.setDragImage(modelservice.getDragImage(), 0, 0); } else { for (var i=0;i