diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 12:44:51 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 12:44:51 +0000 |
commit | a1ec78bf0dc93d0e05e5f066f1949dc3baecea06 (patch) | |
tree | ee596ce1bc9840661386f96f9b8d1f919a106317 /public/js/loader.js | |
parent | Initial commit. (diff) | |
download | icingaweb2-module-incubator-upstream/0.20.0.tar.xz icingaweb2-module-incubator-upstream/0.20.0.zip |
Adding upstream version 0.20.0.upstream/0.20.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
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); |