Skip to content

Commit 7c8ac86

Browse files
committed
Fix-bug: resolve the collision between option direction and draggable
1 parent ede2579 commit 7c8ac86

File tree

3 files changed

+18
-5
lines changed

3 files changed

+18
-5
lines changed

bower.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "orgchart",
3-
"version": "1.2.1",
3+
"version": "1.2.2",
44
"homepage": "https://github.com/dabeng/OrgChart",
55
"authors": [
66
"dabeng <dabeng413@gmail.com>"

dist/js/jquery.orgchart.js

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -732,7 +732,8 @@
732732
ghostNode = $nodeDiv.closest('.orgchart').children('.ghost-node').get(0);
733733
nodeCover = $(ghostNode).children().get(0);
734734
}
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]));
736737
ghostNode.setAttribute('width', $nodeDiv.outerWidth(false));
737738
ghostNode.setAttribute('height', $nodeDiv.outerHeight(false));
738739
nodeCover.setAttribute('x',5 * scale);
@@ -742,14 +743,26 @@
742743
nodeCover.setAttribute('rx', 4 * scale);
743744
nodeCover.setAttribute('ry', 4 * scale);
744745
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+
}
745758
if (isFirefox) { // hack for old version of Firefox(< 48.0)
746759
nodeCover.setAttribute('fill', 'rgb(255, 255, 255)');
747760
nodeCover.setAttribute('stroke', 'rgb(191, 0, 0)');
748761
var ghostNodeWrapper = document.createElement('img');
749762
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);
751764
} else {
752-
origEvent.dataTransfer.setDragImage(ghostNode, origEvent.offsetX * scale, origEvent.offsetY * scale);
765+
origEvent.dataTransfer.setDragImage(ghostNode, xOffset, yOffset);
753766
}
754767
}
755768
var $dragged = $(this);

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "orgchart",
3-
"version": "1.2.1",
3+
"version": "1.2.2",
44
"description": "Simple and direct organization chart(tree-like hierarchy) plugin based on pure DOM and jQuery.",
55
"main": "./dist/js/jquery.orgchart.js",
66
"style": [

0 commit comments

Comments
 (0)