var loading = (function () { var exports = {}; exports.make_indicator = function (outer_container, opts) { opts = opts || {}; var container = outer_container; container.empty(); if (opts.abs_positioned !== undefined && opts.abs_positioned) { // Create some additional containers to facilitate absolutely // positioned spinners. var container_id = container.attr('id'); var inner_container = $('
'); container.append(inner_container); container = inner_container; inner_container = $(''); container.append(inner_container); container = inner_container; } var spinner_elem = $(''); spinner_elem.html(templates.render("loader")); container.append(spinner_elem); var text_width = 0; if (opts.text !== undefined && opts.text !== '') { var text_elem = $(''); text_elem.text(opts.text); container.append(text_elem); // See note, below text_width = 20 + text_elem.width(); } // These width calculations are tied to the spinner width and // margins defined via CSS // // TODO: We set white-space to 'nowrap' because under some // unknown circumstances (it happens on Keegan's laptop) the text // width calculation, above, returns a result that's a few pixels // too small. The container's div will be slightly too small, // but that's probably OK for our purposes. container.css({width: 38 + text_width, height: 38}); outer_container.css({display: 'block', 'white-space': 'nowrap'}); outer_container.data("destroying", false); }; exports.destroy_indicator = function (container) { if (container.data("destroying")) { return; } container.data("destroying", true); var spinner = container.data("spinner_obj"); if (spinner !== undefined) { spinner.stop(); } container.removeData("spinner_obj"); container.empty(); container.css({width: 0, height: 0, display: 'none'}); }; return exports; }()); if (typeof module !== 'undefined') { module.exports = loading; }