UNPKG

@spalger/kibana

Version:

Kibana is an open source (Apache Licensed), browser based analytics and search dashboard for Elasticsearch. Kibana is a snap to setup and start using. Kibana strives to be easy to get started with, while also being flexible and powerful, just like Elastic

66 lines (58 loc) 2.2 kB
define(function (require) { return function routeSetup(Promise, config, $route, kbnUrl, courier, Notifier, Private, $rootScope) { var _ = require('lodash'); var errors = require('ui/errors'); var NoDefaultIndexPattern = errors.NoDefaultIndexPattern; var NoDefinedIndexPatterns = errors.NoDefinedIndexPatterns; var firstNoDefaultError = true; var rootSearchSource = Private(require('ui/courier/data_source/_root_search_source')); var allowedRoutesRE = /^\/settings\//; var notify = new Notifier(); return { routeSetupWork: function () { return Promise.all([ config.init(), courier.SearchSource.ready, $rootScope.kibana && $rootScope.kibana.ready ]) .then(function () { var path = _.get($route, 'current.$$route.originalPath'); var defaultIndexRequired = path && !path.match(allowedRoutesRE); return courier.indexPatterns.getIds() .then(function (patterns) { var defined = !!config.get('defaultIndex'); var exists = _.contains(patterns, config.get('defaultIndex')); if (defined && !exists) { config.clear('defaultIndex'); defined = false; } if (!defined) { if (defaultIndexRequired) { throw new NoDefaultIndexPattern(); } else { firstNoDefaultError = false; } } return rootSearchSource.loadDefault(); }); }); }, handleKnownError: function (err) { if (err instanceof NoDefaultIndexPattern || err instanceof NoDefinedIndexPatterns) { // .change short circuits the routes by calling $route.refresh(). We can safely swallow this error // after reporting it to the user kbnUrl.change('/settings/indices'); if (err instanceof NoDefaultIndexPattern) { if (firstNoDefaultError) { firstNoDefaultError = false; } else { notify.error(err); } } } else { return Promise.reject(err); } } }; }; });