Changeset View
Changeset View
Standalone View
Standalone View
webroot/rsrc/js/application/transactions/behavior-comment-actions.js
Show First 20 Lines • Show All 74 Lines • ▼ Show 20 Lines | JX.behavior('comment-actions', function(config) { | ||||
} | } | ||||
function serialize_actions() { | function serialize_actions() { | ||||
var data = []; | var data = []; | ||||
for (var k in rows) { | for (var k in rows) { | ||||
data.push({ | data.push({ | ||||
type: k, | type: k, | ||||
value: rows[k].getValue() | value: rows[k].getValue(), | ||||
initialValue: action_map[k].initialValue || null | |||||
}); | }); | ||||
} | } | ||||
return JX.JSON.stringify(data); | return JX.JSON.stringify(data); | ||||
} | } | ||||
function get_data() { | function get_data() { | ||||
var data = JX.DOM.convertFormToDictionary(form_node); | var data = JX.DOM.convertFormToDictionary(form_node); | ||||
data.__preview__ = 1; | data.__preview__ = 1; | ||||
data[input_node.name] = serialize_actions(); | data[input_node.name] = serialize_actions(); | ||||
return data; | return data; | ||||
} | } | ||||
function restore_draft_actions(drafts) { | function restore_draft_actions(drafts) { | ||||
var draft; | var draft; | ||||
var option; | var option; | ||||
var control; | var control; | ||||
for (var ii = 0; ii < drafts.length; ii++) { | for (var ii = 0; ii < drafts.length; ii++) { | ||||
draft = drafts[ii]; | draft = drafts[ii]; | ||||
option = find_option(draft.type); | option = find_option(draft); | ||||
if (!option) { | if (!option) { | ||||
continue; | continue; | ||||
} | } | ||||
control = add_row(option); | control = add_row(option); | ||||
control.setValue(draft.value); | |||||
} | } | ||||
} | } | ||||
function onresponse(response) { | function onresponse(response) { | ||||
var panel = JX.$(config.panelID); | var panel = JX.$(config.panelID); | ||||
if (!response.xactions.length) { | if (!response.xactions.length) { | ||||
JX.DOM.hide(panel); | JX.DOM.hide(panel); | ||||
} else { | } else { | ||||
JX.DOM.setContent( | JX.DOM.setContent( | ||||
JX.$(config.timelineID), | JX.$(config.timelineID), | ||||
[ | [ | ||||
JX.$H(response.spacer), | JX.$H(response.spacer), | ||||
JX.$H(response.xactions.join(response.spacer)) | JX.$H(response.xactions.join(response.spacer)) | ||||
]); | ]); | ||||
JX.DOM.show(panel); | JX.DOM.show(panel); | ||||
} | } | ||||
} | } | ||||
JX.DOM.listen(form_node, 'submit', null, function() { | JX.DOM.listen(form_node, 'submit', null, function() { | ||||
input_node.value = serialize_actions(); | input_node.value = serialize_actions(); | ||||
}); | }); | ||||
if (config.showPreview) { | if (config.showPreview) { | ||||
var request = new JX.PhabricatorShapedRequest( | var request = new JX.PhabricatorShapedRequest( | ||||
config.actionURI, | config.actionURI, | ||||
onresponse, | onresponse, | ||||
get_data); | get_data); | ||||
var trigger = JX.bind(request, request.trigger); | var trigger = JX.bind(request, request.trigger); | ||||
JX.DOM.listen(form_node, 'keydown', null, trigger); | JX.DOM.listen(form_node, 'keydown', null, trigger); | ||||
var always_trigger = function() { | var always_trigger = function() { | ||||
new JX.Request(config.actionURI, onresponse) | new JX.Request(config.actionURI, onresponse) | ||||
.setData(get_data()) | .setData(get_data()) | ||||
.send(); | .send(); | ||||
}; | }; | ||||
JX.DOM.listen(form_node, 'shouldRefresh', null, always_trigger); | JX.DOM.listen(form_node, 'shouldRefresh', null, always_trigger); | ||||
request.start(); | request.start(); | ||||
} | } | ||||
restore_draft_actions(config.drafts || []); | restore_draft_actions(config.drafts || []); | ||||
}); | }); |