Commit 1ec0fae8 by arjun810

Merge pull request #891 from MITx/feature/victor/capa-ajax

Feature/victor/capa ajax
parents ccc5e577 db8639e0
......@@ -41,12 +41,17 @@ class @JavascriptLoader
callbackCalled = true
callback() if callback?
# Keep a map of what sources we're loaded from, and don't do it twice.
loaded = {}
placeholders.each (index, placeholder) ->
# TODO: Check if the script already exists in DOM. If so, (1) copy it
# into memory; (2) delete the DOM script element; (3) reappend it.
# This would prevent memory bloat and save a network request.
src = $(placeholder).attr("data-src")
if src not of loaded
loaded[src] = true
s = document.createElement('script')
s.setAttribute('src', $(placeholder).attr("data-src"))
s.setAttribute('src', src)
s.setAttribute('type', "text/javascript")
s.onload = completionHandlerGenerator(index)
......@@ -57,4 +62,9 @@ class @JavascriptLoader
# Need to use the DOM elements directly or the scripts won't execute
# properly.
$('head')[0].appendChild(s)
else
# just call the completion callback directly, without reloading the file
completionHandlerGenerator(index)()
$(placeholder).remove()
(function () {
var preview_div = $('.chemicalequationinput .equation');
$('.chemicalequationinput input').bind("input", function(eventObject) {
$.get("/preview/chemcalc/", {"formula" : this.value}, function(response) {
update = function() {
preview_div = $(this).siblings('div.equation');
function create_handler(saved_div) {
return (function(response) {
if (response.error) {
preview_div.html("<span class='error'>" + response.error + "</span>");
saved_div.html("<span class='error'>" + response.error + "</span>");
} else {
preview_div.html(response.preview);
saved_div.html(response.preview);
}
});
});
}
$.get("/preview/chemcalc/", {"formula" : this.value}, create_handler(preview_div));
}
inputs = $('.chemicalequationinput input');
// update on load
inputs.each(update);
// and on every change
inputs.bind("input", update);
}).call(this);
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment