diff options
Diffstat (limited to 'public/js/loader.js')
-rw-r--r-- | public/js/loader.js | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/public/js/loader.js b/public/js/loader.js new file mode 100644 index 0000000..6cd3073 --- /dev/null +++ b/public/js/loader.js @@ -0,0 +1,54 @@ +(function(window, $) { + 'use strict'; + + var IncubatorComponentLoader = function () { + this.components = []; + }; + + IncubatorComponentLoader.prototype = { + initialize: function (icinga) { + this.icinga = icinga; + // Trigger module loading - always + icinga.module('incubator'); + $.each(this.components, function (_, component) { + component.initialize(icinga); + }); + icinga.logger.info('Incubator is ready'); + }, + + addComponent: function (component) { + this.components.push(component); + }, + + destroy: function () { + // Eventually: this.unbindEventHandlers(); + + $.each(this.components, function (_, component) { + if (typeof component.destroy === 'function') { + component.destroy(); + } + }); + + this.components = []; + this.icinga = null; + } + }; + + var startup; + var w = window; + function safeLaunch() + { + if (typeof(w.icinga) !== 'undefined' && w.icinga.initialized) { + clearInterval(startup); + w.incubatorComponentLoader.initialize(w.icinga); + } else { + console.log('Incubator module is still waiting for icinga'); + } + } + + $(document).ready(function () { + startup = setInterval(safeLaunch, 30); + safeLaunch(); + }); + w.incubatorComponentLoader = new IncubatorComponentLoader(); +})(window, jQuery); |