[ Index ]
 

Code source de Dotclear 2.0-beta6

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/admin/js/tool-man/ -> dragsort.js (source)

   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  }


Généré le : Fri Feb 23 22:16:06 2007 par Balluche grâce à PHPXref 0.7