|
732 | 732 | ghostNode = $nodeDiv.closest('.orgchart').children('.ghost-node').get(0); |
733 | 733 | nodeCover = $(ghostNode).children().get(0); |
734 | 734 | } |
735 | | - var scale = $nodeDiv.closest('.orgchart').css('transform').match(/-?[\d\.]+/g)[0]; |
| 735 | + var transValues = $nodeDiv.closest('.orgchart').css('transform').split(','); |
| 736 | + var scale = Math.abs(window.parseFloat((opts.direction === 't2b' || opts.direction === 'b2t') ? transValues[0].slice(transValues[0].indexOf('(') + 1) : transValues[1])); |
736 | 737 | ghostNode.setAttribute('width', $nodeDiv.outerWidth(false)); |
737 | 738 | ghostNode.setAttribute('height', $nodeDiv.outerHeight(false)); |
738 | 739 | nodeCover.setAttribute('x',5 * scale); |
|
742 | 743 | nodeCover.setAttribute('rx', 4 * scale); |
743 | 744 | nodeCover.setAttribute('ry', 4 * scale); |
744 | 745 | nodeCover.setAttribute('stroke-width', 1 * scale); |
| 746 | + var xOffset = origEvent.offsetX * scale; |
| 747 | + var yOffset = origEvent.offsetY * scale; |
| 748 | + if (opts.direction === 'l2r') { |
| 749 | + xOffset = origEvent.offsetY * scale; |
| 750 | + yOffset = origEvent.offsetX * scale; |
| 751 | + } else if (opts.direction === 'r2l') { |
| 752 | + xOffset = $nodeDiv.outerWidth(false) - origEvent.offsetY * scale; |
| 753 | + yOffset = origEvent.offsetX * scale; |
| 754 | + } else if (opts.direction === 'b2t') { |
| 755 | + xOffset = $nodeDiv.outerWidth(false) - origEvent.offsetX * scale; |
| 756 | + yOffset = $nodeDiv.outerHeight(false) - origEvent.offsetY * scale; |
| 757 | + } |
745 | 758 | if (isFirefox) { // hack for old version of Firefox(< 48.0) |
746 | 759 | nodeCover.setAttribute('fill', 'rgb(255, 255, 255)'); |
747 | 760 | nodeCover.setAttribute('stroke', 'rgb(191, 0, 0)'); |
748 | 761 | var ghostNodeWrapper = document.createElement('img'); |
749 | 762 | ghostNodeWrapper.src = 'data:image/svg+xml;utf8,' + (new XMLSerializer()).serializeToString(ghostNode); |
750 | | - origEvent.dataTransfer.setDragImage(ghostNodeWrapper, origEvent.offsetX * scale, origEvent.offsetY * scale); |
| 763 | + origEvent.dataTransfer.setDragImage(ghostNodeWrapper, xOffset, yOffset); |
751 | 764 | } else { |
752 | | - origEvent.dataTransfer.setDragImage(ghostNode, origEvent.offsetX * scale, origEvent.offsetY * scale); |
| 765 | + origEvent.dataTransfer.setDragImage(ghostNode, xOffset, yOffset); |
753 | 766 | } |
754 | 767 | } |
755 | 768 | var $dragged = $(this); |
|
0 commit comments