Created
September 25, 2015 21:03
-
-
Save tgoldenberg/2ced84c5e84aba4347fe to your computer and use it in GitHub Desktop.
Mirror sorted array with Sortable
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ... | |
| componentDidMount: function() { | |
| // make elements sortable when editMode == true | |
| var self = this; | |
| SortedElements = Sortable.create(simpleList, { | |
| onEnd: function (/**Event*/evt) { | |
| var oldIndex = evt.oldIndex -1; // element's old index within parent | |
| var newIndex = evt.newIndex -1; // element's new index within parent | |
| if (oldIndex != undefined && newIndex != undefined) { | |
| // swap old and new elements in sidebar list | |
| var order = self.state.elementOrder; | |
| if (oldIndex - newIndex == 1 || newIndex - oldIndex == 1){ | |
| order = swapElements(order, oldIndex, newIndex) | |
| } else if (newIndex > oldIndex) { | |
| order = moveElementsDown(order, oldIndex, newIndex); | |
| } else if (newIndex < oldIndex) { | |
| order = moveElementsUp(order, oldIndex, newIndex); | |
| } | |
| function moveElementsUp(order, oldIndex, newIndex) { | |
| var finalOrder = order; | |
| var dragged = order[oldIndex] | |
| for (i=oldIndex-1; i>= newIndex; i--) { | |
| var temp = order[i]; | |
| finalOrder[i+1] = temp; | |
| } | |
| finalOrder[newIndex] = dragged; | |
| return finalOrder; | |
| } | |
| function moveElementsDown(order, oldIndex, newIndex) { | |
| var finalOrder = order; | |
| var dragged = order[oldIndex] | |
| for (i=oldIndex+1; i<= newIndex; i++) { | |
| var temp = order[i]; | |
| finalOrder[i-1] = temp; | |
| } | |
| finalOrder[newIndex] = dragged; | |
| return finalOrder; | |
| } | |
| function swapElements(order, oldIndex, newIndex) { | |
| var temp = order[newIndex]; | |
| order[newIndex] = order[oldIndex]; | |
| order[oldIndex] = temp; | |
| return order; | |
| } | |
| self.setState({elementOrder: order}); | |
| } | |
| } | |
| }); | |
| }, | |
| .... |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment