1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-10 17:02:41 +01:00
phorge-phorge/webroot/rsrc/js/application/differential/behavior-comment-preview.js
epriestley 2a39fd09eb Bring Javelin into Phabricator via git submodule, not copy-and-paste
Summary:
Javelin is currently embedded in Phabricator via copy-and-paste of prebuilt
packages. This is not so great.

Pull it in as a submodule instead and make all the Phabriator resources declare
proper dependency trees. Add Javelin linting.

Test Plan:
I tried to run through pretty much all the JS functionality on the site. This is
still a high-risk change, but I did a pretty thorough test

Differential: inline comments, revealing diffs, list tokenizers, comment
preview, editing/deleting comments, add review action.
Maniphest: list tokenizer, comment actions
Herald: rule editing, tokenizers, add/remove rows

Reviewed By: tomo
Reviewers: aran, tomo, mroch, jungejason, tuomaspelkonen
CC: aran, tomo, epriestley
Differential Revision: 223
2011-05-08 13:20:10 -07:00

70 lines
1.8 KiB
JavaScript

/**
* @provides javelin-behavior-differential-feedback-preview
* @requires javelin-behavior
* javelin-stratcom
* javelin-dom
* javelin-request
* javelin-util
*/
JX.behavior('differential-feedback-preview', function(config) {
var action = JX.$(config.action);
var content = JX.$(config.content);
var preview = JX.$(config.preview);
var aval = null;//action.value;
var cval = null;//content.value;
var defer = null;
var min = null;
var request = null;
function check() {
if (request || (min && (new Date().getTime() < min))) {
// Waiting on an async or just got one back, rate-limit.
return;
}
defer && defer.stop();
if (action.value !== aval || content.value !== cval) {
aval = action.value;
cval = content.value;
request = new JX.Request(config.uri, function(r) {
preview && JX.DOM.setContent(preview, JX.$H(r));
min = new Date().getTime() + 500;
defer && defer.stop();
defer = JX.defer(check, 500);
});
request.listen('finally', function() { request = null; });
request.setData({action : aval, content : cval});
// If we don't get a response back soon, retry on the next action.
request.setTimeout(2000);
request.send();
} else {
defer = JX.defer(check, 2000);
}
}
JX.DOM.listen(content, 'keydown', null, check);
JX.DOM.listen(action, 'change', null, check);
check();
function refreshInlinePreview() {
new JX.Request(config.inlineuri, function(r) {
JX.DOM.setContent(JX.$(config.inline), JX.$H(r));
})
.setTimeout(5000)
.send();
}
JX.Stratcom.listen(
'differential-inline-comment-update',
null,
refreshInlinePreview);
refreshInlinePreview();
});