Differential comment previews.
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
/**
|
||||
* @provides javelin-behavior-differential-feedback-preview
|
||||
* @requires javelin-lib-dev
|
||||
*/
|
||||
|
||||
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.HTML(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();
|
||||
});
|
||||
Reference in New Issue
Block a user