Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/webroot/rsrc/js/application/projects/behavior-reorder-columns.js
12242 views
1
/**
2
* @provides javelin-behavior-reorder-columns
3
* @requires javelin-behavior
4
* javelin-stratcom
5
* javelin-workflow
6
* javelin-dom
7
* phabricator-draggable-list
8
*/
9
10
JX.behavior('reorder-columns', function(config) {
11
12
var root = JX.$(config.listID);
13
14
var list = new JX.DraggableList('board-column', root)
15
.setFindItemsHandler(function() {
16
return JX.DOM.scry(root, 'li', 'board-column');
17
});
18
19
list.listen('didDrop', function(node) {
20
var nodes = list.findItems();
21
22
var node_data = JX.Stratcom.getData(node);
23
24
// Find the column sequence of the previous node.
25
var sequence = null;
26
var data;
27
for (var ii = 0; ii < nodes.length; ii++) {
28
data = JX.Stratcom.getData(nodes[ii]);
29
if (data.columnPHID === node_data.columnPHID) {
30
break;
31
}
32
sequence = data.columnSequence;
33
}
34
35
list.lock();
36
JX.DOM.alterClass(node, 'drag-sending', true);
37
38
var parameters = {
39
columnPHID: node_data.columnPHID,
40
sequence: (sequence === null) ? 0 : (parseInt(sequence, 10) + 1)
41
};
42
43
new JX.Workflow(config.reorderURI, parameters)
44
.setHandler(function(r) {
45
46
// Adjust metadata for the new sequence numbers.
47
for (var ii = 0; ii < nodes.length; ii++) {
48
var data = JX.Stratcom.getData(nodes[ii]);
49
data.columnSequence = r.sequenceMap[data.columnPHID];
50
}
51
52
list.unlock();
53
JX.DOM.alterClass(node, 'drag-sending', false);
54
})
55
.start();
56
});
57
58
});
59
60