Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/webroot/rsrc/js/application/dashboard/behavior-dashboard-move-panels.js
12242 views
1
/**
2
* @provides javelin-behavior-dashboard-move-panels
3
* @requires javelin-behavior
4
* javelin-dom
5
* javelin-util
6
* javelin-stratcom
7
* javelin-workflow
8
* phabricator-draggable-list
9
*/
10
11
JX.behavior('dashboard-move-panels', function(config) {
12
13
var itemSigil = 'panel-movable';
14
15
function finditems(col) {
16
return JX.DOM.scry(col, 'div', itemSigil);
17
}
18
19
function markcolempty(col, toggle) {
20
JX.DOM.alterClass(col.parentNode, 'dashboard-column-empty', toggle);
21
}
22
23
function onupdate(col) {
24
markcolempty(col, !this.findItems().length);
25
}
26
27
function onresponse(response, item, list) {
28
list.unlock();
29
JX.DOM.alterClass(item, 'drag-sending', false);
30
}
31
32
function ondrop(list, item, after) {
33
list.lock();
34
JX.DOM.alterClass(item, 'drag-sending', true);
35
36
var data = {
37
panelKey: JX.Stratcom.getData(item).panelKey,
38
columnKey: JX.Stratcom.getData(list.getRootNode()).columnKey
39
};
40
41
if (after) {
42
var after_data = JX.Stratcom.getData(after);
43
if (after_data.panelKey) {
44
data.afterKey = after_data.panelKey;
45
}
46
}
47
48
var workflow = new JX.Workflow(config.moveURI, data)
49
.setHandler(function(response) {
50
onresponse(response, item, list);
51
});
52
53
workflow.start();
54
}
55
56
var dashboard_node = JX.$(config.dashboardNodeID);
57
58
var lists = [];
59
var cols = JX.DOM.scry(dashboard_node, 'div', 'dashboard-column');
60
61
var ii;
62
for (ii = 0; ii < cols.length; ii++) {
63
var col = cols[ii];
64
var list = new JX.DraggableList(itemSigil, col)
65
.setFindItemsHandler(JX.bind(null, finditems, col))
66
.setCanDragX(true);
67
68
list.listen('didSend', JX.bind(list, onupdate, col));
69
list.listen('didReceive', JX.bind(list, onupdate, col));
70
list.listen('didDrop', JX.bind(null, ondrop, list));
71
72
lists.push(list);
73
74
markcolempty(col, finditems(col).length === 0);
75
}
76
77
for (ii = 0; ii < lists.length; ii++) {
78
lists[ii].setGroup(lists);
79
}
80
81
});
82
83