Path: blob/master/webroot/rsrc/js/application/projects/behavior-reorder-columns.js
12242 views
/**1* @provides javelin-behavior-reorder-columns2* @requires javelin-behavior3* javelin-stratcom4* javelin-workflow5* javelin-dom6* phabricator-draggable-list7*/89JX.behavior('reorder-columns', function(config) {1011var root = JX.$(config.listID);1213var list = new JX.DraggableList('board-column', root)14.setFindItemsHandler(function() {15return JX.DOM.scry(root, 'li', 'board-column');16});1718list.listen('didDrop', function(node) {19var nodes = list.findItems();2021var node_data = JX.Stratcom.getData(node);2223// Find the column sequence of the previous node.24var sequence = null;25var data;26for (var ii = 0; ii < nodes.length; ii++) {27data = JX.Stratcom.getData(nodes[ii]);28if (data.columnPHID === node_data.columnPHID) {29break;30}31sequence = data.columnSequence;32}3334list.lock();35JX.DOM.alterClass(node, 'drag-sending', true);3637var parameters = {38columnPHID: node_data.columnPHID,39sequence: (sequence === null) ? 0 : (parseInt(sequence, 10) + 1)40};4142new JX.Workflow(config.reorderURI, parameters)43.setHandler(function(r) {4445// Adjust metadata for the new sequence numbers.46for (var ii = 0; ii < nodes.length; ii++) {47var data = JX.Stratcom.getData(nodes[ii]);48data.columnSequence = r.sequenceMap[data.columnPHID];49}5051list.unlock();52JX.DOM.alterClass(node, 'drag-sending', false);53})54.start();55});5657});585960