Skip to content

Commit 76f99e0

Browse files
committed
much better reordering logic, dist files
1 parent 09029a8 commit 76f99e0

File tree

4 files changed

+61
-36
lines changed

4 files changed

+61
-36
lines changed

dist/fixed-data-table.js

Lines changed: 28 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5383,36 +5383,47 @@ return /******/ (function(modules) { // webpackBootstrap
53835383
newState.displacement = reorderCellLeft - props.left;
53845384
newState.isReorderingThisColumn = true;
53855385
} else {
5386+
var reorderCellRight = reorderCellLeft + props.columnReorderingData.columnWidth;
5387+
var reorderCellCenter = reorderCellLeft + props.columnReorderingData.columnWidth / 2;
53865388
var centerOfThisColumn = left + props.width / 2;
53875389

5388-
// cell is before the one being dragged
5389-
if (reorderCellLeft > left) {
5390+
var cellIsBeforeOneBeingDragged = reorderCellCenter > centerOfThisColumn;
5391+
var cellWasOriginallyBeforeOneBeingDragged = originalLeft > props.left;
5392+
var changedPosition = false;
5393+
5394+
var dragPoint, thisCellPoint;
5395+
if (cellIsBeforeOneBeingDragged) {
53905396
if (reorderCellLeft < centerOfThisColumn) {
5391-
newState.displacement = props.columnReorderingData.columnWidth;
5392-
if (!props.columnReorderingData.columnAfter) {
5393-
props.columnReorderingData.columnAfter = props.columnKey;
5397+
changedPosition = true;
5398+
if (cellWasOriginallyBeforeOneBeingDragged) {
5399+
newState.displacement = props.columnReorderingData.columnWidth;
5400+
} else {
5401+
newState.displacement = 0;
53945402
}
5395-
} else {
5396-
if (props.left < originalLeft) {
5403+
}
5404+
} else {
5405+
if (reorderCellRight > centerOfThisColumn) {
5406+
changedPosition = true;
5407+
if (cellWasOriginallyBeforeOneBeingDragged) {
53975408
newState.displacement = 0;
5409+
} else {
5410+
newState.displacement = props.columnReorderingData.columnWidth * -1;
53985411
}
5399-
props.columnReorderingData.columnBefore = props.columnKey;
54005412
}
54015413
}
54025414

5403-
// cell is after the one being dragged
5404-
if (reorderCellLeft < left) {
5405-
if (reorderCellLeft + props.columnReorderingData.columnWidth > centerOfThisColumn) {
5406-
newState.displacement = -props.columnReorderingData.columnWidth;
5407-
props.columnReorderingData.columnBefore = props.columnKey;
5408-
} else {
5415+
if (changedPosition) {
5416+
if (cellIsBeforeOneBeingDragged) {
54095417
if (!props.columnReorderingData.columnAfter) {
54105418
props.columnReorderingData.columnAfter = props.columnKey;
54115419
}
5412-
if (props.left > originalLeft) {
5413-
newState.displacement = 0;
5414-
}
5420+
} else {
5421+
props.columnReorderingData.columnBefore = props.columnKey;
54155422
}
5423+
} else if (cellIsBeforeOneBeingDragged) {
5424+
props.columnReorderingData.columnBefore = props.columnKey;
5425+
} else if (!props.columnReorderingData.columnAfter) {
5426+
props.columnReorderingData.columnAfter = props.columnKey;
54165427
}
54175428
}
54185429
} else {

dist/fixed-data-table.min.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/ReorderExample.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ class ReorderExample extends React.Component {
5656
}
5757

5858
_onColumnReorderEndCallback(event) {
59+
console.log(event);
5960
var columnOrder = this.state.columnOrder.filter((columnKey) => {
6061
return columnKey !== event.reorderColumn;
6162
});

src/FixedDataTableCell.react.js

Lines changed: 30 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -116,37 +116,50 @@ var FixedDataTableCell = React.createClass({
116116
newState.isReorderingThisColumn = true;
117117

118118
} else {
119+
var reorderCellRight = reorderCellLeft + props.columnReorderingData.columnWidth;
120+
var reorderCellCenter = reorderCellLeft + (props.columnReorderingData.columnWidth / 2);
119121
var centerOfThisColumn = left + (props.width / 2);
120122

121-
// cell is before the one being dragged
122-
if (reorderCellLeft > left) {
123+
var cellIsBeforeOneBeingDragged = reorderCellCenter > centerOfThisColumn;
124+
var cellWasOriginallyBeforeOneBeingDragged = originalLeft > props.left;
125+
var changedPosition = false;
126+
127+
128+
var dragPoint, thisCellPoint;
129+
if (cellIsBeforeOneBeingDragged) {
123130
if (reorderCellLeft < centerOfThisColumn) {
124-
newState.displacement = props.columnReorderingData.columnWidth;
125-
if (!props.columnReorderingData.columnAfter) {
126-
props.columnReorderingData.columnAfter = props.columnKey;
131+
changedPosition = true;
132+
if (cellWasOriginallyBeforeOneBeingDragged) {
133+
newState.displacement = props.columnReorderingData.columnWidth;
134+
} else {
135+
newState.displacement = 0;
127136
}
128-
} else {
129-
if (props.left < originalLeft) {
137+
}
138+
} else {
139+
if (reorderCellRight > centerOfThisColumn) {
140+
changedPosition = true;
141+
if (cellWasOriginallyBeforeOneBeingDragged) {
130142
newState.displacement = 0;
143+
} else {
144+
newState.displacement = props.columnReorderingData.columnWidth * -1;
131145
}
132-
props.columnReorderingData.columnBefore = props.columnKey;
133146
}
134147
}
135148

136-
// cell is after the one being dragged
137-
if (reorderCellLeft < left) {
138-
if (reorderCellLeft + props.columnReorderingData.columnWidth > centerOfThisColumn) {
139-
newState.displacement = -props.columnReorderingData.columnWidth;
140-
props.columnReorderingData.columnBefore = props.columnKey;
141-
} else {
149+
if (changedPosition) {
150+
if (cellIsBeforeOneBeingDragged) {
142151
if (!props.columnReorderingData.columnAfter) {
143152
props.columnReorderingData.columnAfter = props.columnKey;
144153
}
145-
if (props.left > originalLeft) {
146-
newState.displacement = 0;
147-
}
154+
} else {
155+
props.columnReorderingData.columnBefore = props.columnKey;
148156
}
157+
} else if (cellIsBeforeOneBeingDragged) {
158+
props.columnReorderingData.columnBefore = props.columnKey;
159+
} else if (!props.columnReorderingData.columnAfter) {
160+
props.columnReorderingData.columnAfter = props.columnKey;
149161
}
162+
150163
}
151164
} else {
152165
newState.displacement = 0;

0 commit comments

Comments
 (0)