Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/webroot/rsrc/js/application/config/behavior-reorder-fields.js
12242 views
1
/**
2
* @provides javelin-behavior-config-reorder-fields
3
* @requires javelin-behavior
4
* javelin-stratcom
5
* javelin-dom
6
* javelin-json
7
* phabricator-draggable-list
8
*/
9
10
JX.behavior('config-reorder-fields', function(config) {
11
12
var fields = config.fields;
13
var root = JX.$(config.listID);
14
15
var list = new JX.DraggableList('field-spec', root)
16
.setFindItemsHandler(function() {
17
return JX.DOM.scry(root, 'li', 'field-spec');
18
});
19
20
list.listen('didDrop', function() {
21
write_state_to_form();
22
});
23
24
JX.DOM.listen(root, 'click', 'field-spec-toggle', function(e) {
25
e.kill();
26
27
var key = e.getNodeData('field-spec').fieldKey;
28
fields[key].disabled = !fields[key].disabled;
29
30
JX.DOM.replace(
31
e.getNode('field-spec'),
32
JX.$H(
33
fields[key].disabled ?
34
fields[key].disabledMarkup :
35
fields[key].enabledMarkup));
36
37
write_state_to_form();
38
});
39
40
var write_state_to_form = function() {
41
var nodes = list.findItems();
42
var order = [];
43
var key;
44
for (var ii = 0; ii < nodes.length; ii++) {
45
key = JX.Stratcom.getData(nodes[ii]).fieldKey;
46
if (key) {
47
order.push({
48
key: key,
49
disabled: fields[key].disabled
50
});
51
}
52
}
53
54
JX.$(config.inputID).value = JX.JSON.stringify(order);
55
};
56
57
write_state_to_form();
58
});
59
60