summaryrefslogtreecommitdiffstats
path: root/public/js/loader.js
blob: 6cd307395318d1d88707482faf9b2e8e389e024a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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);