mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 17:59:23 -04:00
modules util now provides a method for modules to 'subscribe' to it's know modules
This commit is contained in:
parent
7be4d61b96
commit
a8ab11bbd0
3 changed files with 31 additions and 9 deletions
|
@ -9,17 +9,20 @@ define(function (require) {
|
|||
var scopedRequire = require('require');
|
||||
var setup = require('./setup');
|
||||
var configFile = require('../config');
|
||||
var modules = require('modules');
|
||||
|
||||
require('elasticsearch');
|
||||
require('angular-route');
|
||||
|
||||
var kibana = angular.module('kibana', [
|
||||
// list external requirements here (modules created
|
||||
// by the modules util are added automatically)
|
||||
// list external requirements here
|
||||
'elasticsearch',
|
||||
'ngRoute'
|
||||
]);
|
||||
|
||||
// tell the modules util to add it's modules as requirements for kibana
|
||||
modules.link(kibana);
|
||||
|
||||
// proceed once setup is complete
|
||||
setup(function (err) {
|
||||
kibana
|
||||
|
|
|
@ -26,7 +26,8 @@ define(function (require) {
|
|||
// create the setup module, it should require the same things
|
||||
// that kibana currently requires, which should only include the
|
||||
// loaded modules
|
||||
var setup = angular.module('setup', kibana.requires);
|
||||
var setup = angular.module('setup');
|
||||
var unlink = require('modules').link(setup);
|
||||
|
||||
var appEl = document.createElement('div');
|
||||
var kibanaIndexExists;
|
||||
|
@ -45,14 +46,17 @@ define(function (require) {
|
|||
async.apply(initConfig, config)
|
||||
], function (err) {
|
||||
// ready to go, remove the appEl, close services and boot be done
|
||||
appEl.remove();
|
||||
console.log('booting application');
|
||||
angular.element(appEl).remove();
|
||||
|
||||
// stop adding modules to this one
|
||||
unlink();
|
||||
|
||||
console.log('booting kibana');
|
||||
return done(err);
|
||||
});
|
||||
});
|
||||
|
||||
function checkForKibanaIndex(es, done) {
|
||||
console.log('look for kibana index');
|
||||
es.indices.exists({
|
||||
index: configFile.kibanaIndex
|
||||
}, function (err, exists) {
|
||||
|
|
|
@ -1,18 +1,33 @@
|
|||
define(function (require) {
|
||||
var angular = require('angular');
|
||||
var app = require('kibana');
|
||||
var existingModules = {};
|
||||
var _ = require('lodash');
|
||||
var links = [];
|
||||
|
||||
return {
|
||||
link: function (module) {
|
||||
// as modules are defined they will be set as requirements for this app
|
||||
links.push(module);
|
||||
|
||||
// merge in the existing modules
|
||||
module.requires = _.union(module.requires, _.keys(existingModules));
|
||||
|
||||
// function to call that will unlink the module
|
||||
return function unlink() {
|
||||
var i = links.indexOf(module);
|
||||
if (i > -1) links.splice(i, 1);
|
||||
};
|
||||
},
|
||||
get: function (moduleName, requires) {
|
||||
var module = existingModules[moduleName];
|
||||
|
||||
if (module === void 0) {
|
||||
// create the module
|
||||
module = existingModules[moduleName] = angular.module(moduleName, []);
|
||||
// ensure that it is required by kibana
|
||||
app.requires.push(moduleName);
|
||||
// ensure that it is required by linked modules
|
||||
_.each(links, function (app) {
|
||||
if (!~app.requires.indexOf(moduleName)) app.requires.push(moduleName);
|
||||
});
|
||||
}
|
||||
|
||||
if (requires) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue