[ Index ] |
|
Code source de Dotclear 2.0-beta6 |
1 /* Copyright (c) 2005 Tim Taylor Consulting (see LICENSE.txt) */ 2 3 ToolMan._dragsortFactory = { 4 makeSortable : function(item) { 5 var group = ToolMan.drag().createSimpleGroup(item) 6 7 group.register('dragstart', this._onDragStart) 8 group.register('dragmove', this._onDragMove) 9 group.register('dragend', this._onDragEnd) 10 11 return group 12 }, 13 14 /** 15 * Iterates over a list's items, making them sortable, applying 16 * optional functions to each item. 17 * 18 * example: makeListSortable(myList, myFunc1, myFunc2, ... , myFuncN) 19 */ 20 makeListSortable : function(list) { 21 var helpers = ToolMan.helpers() 22 var coordinates = ToolMan.coordinates() 23 var items = list.getElementsByTagName("li") 24 25 helpers.map(items, function(item) { 26 var dragGroup = dragsort.makeSortable(item) 27 dragGroup.setThreshold(4) 28 var min, max 29 dragGroup.addTransform(function(coordinate, dragEvent) { 30 return coordinate.constrainTo(min, max) 31 }) 32 dragGroup.register('dragstart', function() { 33 var items = list.getElementsByTagName("li") 34 min = max = coordinates.topLeftOffset(items[0]) 35 for (var i = 1, n = items.length; i < n; i++) { 36 var offset = coordinates.topLeftOffset(items[i]) 37 min = min.min(offset) 38 max = max.max(offset) 39 } 40 }) 41 }) 42 for (var i = 1, n = arguments.length; i < n; i++) 43 helpers.map(items, arguments[i]) 44 }, 45 46 _onDragStart : function(dragEvent) { 47 }, 48 49 _onDragMove : function(dragEvent) { 50 var helpers = ToolMan.helpers() 51 var coordinates = ToolMan.coordinates() 52 53 var item = dragEvent.group.element 54 var xmouse = dragEvent.transformedMouseOffset 55 var moveTo = null 56 57 var previous = helpers.previousItem(item, item.nodeName) 58 while (previous != null) { 59 var bottomRight = coordinates.bottomRightOffset(previous) 60 if (xmouse.y <= bottomRight.y && xmouse.x <= bottomRight.x) { 61 moveTo = previous 62 } 63 previous = helpers.previousItem(previous, item.nodeName) 64 } 65 if (moveTo != null) { 66 helpers.moveBefore(item, moveTo) 67 return 68 } 69 70 var next = helpers.nextItem(item, item.nodeName) 71 while (next != null) { 72 var topLeft = coordinates.topLeftOffset(next) 73 if (topLeft.y <= xmouse.y && topLeft.x <= xmouse.x) { 74 moveTo = next 75 } 76 next = helpers.nextItem(next, item.nodeName) 77 } 78 if (moveTo != null) { 79 helpers.moveBefore(item, helpers.nextItem(moveTo, item.nodeName)) 80 return 81 } 82 }, 83 84 _onDragEnd : function(dragEvent) { 85 ToolMan.coordinates().create(0, 0).reposition(dragEvent.group.element) 86 } 87 }
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Fri Feb 23 22:16:06 2007 | par Balluche grâce à PHPXref 0.7 |