[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/webroot/rsrc/js/application/maniphest/ -> behavior-subpriorityeditor.js (source)

   1  /**
   2   * @provides javelin-behavior-maniphest-subpriority-editor
   3   * @requires javelin-behavior
   4   *           javelin-dom
   5   *           javelin-stratcom
   6   *           javelin-workflow
   7   *           phabricator-draggable-list
   8   */
   9  
  10  JX.behavior('maniphest-subpriority-editor', function(config) {
  11  
  12    var draggable = new JX.DraggableList('maniphest-task')
  13      .setFindItemsHandler(function() {
  14        var tasks = JX.DOM.scry(document.body, 'li', 'maniphest-task');
  15        var heads = JX.DOM.scry(document.body, 'h1',  'task-group');
  16        return tasks.concat(heads);
  17      })
  18      .setGhostHandler(function(ghost, target) {
  19        if (!target) {
  20          // The user is trying to drag a task above the first group header;
  21          // don't permit that since it doesn't make sense.
  22          return false;
  23        }
  24  
  25        if (target.nextSibling) {
  26          if (JX.DOM.isType(target, 'h1')) {
  27            target.nextSibling.insertBefore(ghost, target.nextSibling.firstChild);
  28          } else {
  29            target.parentNode.insertBefore(ghost, target.nextSibling);
  30          }
  31        } else {
  32          target.parentNode.appendChild(ghost);
  33        }
  34      });
  35  
  36    draggable.listen('shouldBeginDrag', function(e) {
  37      if (e.getNode('slippery') || e.getNode('maniphest-edit-task')) {
  38        JX.Stratcom.context().kill();
  39      }
  40    });
  41  
  42    draggable.listen('didDrop', function(node, after) {
  43      var data = {
  44        task: JX.Stratcom.getData(node).taskID
  45      };
  46  
  47      if (JX.DOM.isType(after, 'h1')) {
  48        data.priority = JX.Stratcom.getData(after).priority;
  49      } else {
  50        data.after = JX.Stratcom.getData(after).taskID;
  51      }
  52  
  53      draggable.lock();
  54      JX.DOM.alterClass(node, 'drag-sending', true);
  55  
  56      var onresponse = function(r) {
  57        var nodes = JX.$H(r.tasks).getFragment().firstChild;
  58        var task = JX.DOM.find(nodes, 'li', 'maniphest-task');
  59        JX.DOM.replace(node, task);
  60        draggable.unlock();
  61        JX.Stratcom.invoke(
  62          'subpriority-changed',
  63          null,
  64          { 'task' : task });
  65      };
  66  
  67      new JX.Workflow(config.uri, data)
  68        .setHandler(onresponse)
  69        .start();
  70    });
  71  
  72  });


Generated: Sun Nov 30 09:20:46 2014 Cross-referenced by PHPXref 0.7.1