Summary: When a JX.Request fails, there's no default error handling. Rather than write some kind of custom stuff, just use JX.Workflow so we get exception dialogs. We have plans to enhance these anyway (see T302). Test Plan: Changed the changeset view controller to throw exceptions. Verified I got un-mysterious exception dialogs when a changeset failed because of an exception in either initial rendering or after hitting "see more". Reviewed By: tomo Reviewers: jungejason, tuomaspelkonen, aran, tomo CC: aran, epriestley, tomo Differential Revision: 679
49 lines
1.3 KiB
JavaScript
49 lines
1.3 KiB
JavaScript
/**
|
|
* @provides javelin-behavior-differential-show-more
|
|
* @requires javelin-behavior
|
|
* javelin-dom
|
|
* javelin-workflow
|
|
* javelin-util
|
|
* javelin-stratcom
|
|
*/
|
|
|
|
JX.behavior('differential-show-more', function(config) {
|
|
|
|
function onresponse(origin, response) {
|
|
var div = JX.$N('div', {}, JX.$H(response));
|
|
var anchor = origin.getNode('context-target');
|
|
var root = anchor.parentNode;
|
|
copyRows(root, div, anchor);
|
|
root.removeChild(anchor);
|
|
}
|
|
|
|
JX.Stratcom.listen(
|
|
'click',
|
|
'show-more',
|
|
function(e) {
|
|
var context = e.getNodes()['context-target'];
|
|
var container = JX.DOM.find(context, 'td');
|
|
JX.DOM.setContent(container, 'Loading...');
|
|
JX.DOM.alterClass(context, 'differential-show-more-loading', true);
|
|
var data = e.getNodeData('show-more');
|
|
data['whitespace'] = config.whitespace;
|
|
new JX.Workflow(config.uri, data)
|
|
.setHandler(JX.bind(null, onresponse, e))
|
|
.start();
|
|
e.kill();
|
|
});
|
|
|
|
});
|
|
|
|
function copyRows(dst, src, before) {
|
|
var rows = JX.DOM.scry(src, 'tr');
|
|
for (var ii = 0; ii < rows.length; ii++) {
|
|
if (before) {
|
|
dst.insertBefore(rows[ii], before);
|
|
} else {
|
|
dst.appendChild(rows[ii]);
|
|
}
|
|
}
|
|
return rows;
|
|
}
|