UNPKG

kibana-123

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

68 lines (57 loc) 2.15 kB
import _ from 'lodash'; import Notifier from 'ui/notify/notifier'; import { NoDefaultIndexPattern, NoDefinedIndexPatterns } from 'ui/errors'; import GetIdsProvider from '../_get_ids'; import CourierDataSourceRootSearchSourceProvider from 'ui/courier/data_source/_root_search_source'; import uiRoutes from 'ui/routes'; let notify = new Notifier({ location: 'Index Patterns' }); module.exports = function (opts) { opts = opts || {}; let whenMissingRedirectTo = opts.whenMissingRedirectTo || null; let defaultRequiredToasts = null; uiRoutes .addSetupWork(function loadDefaultIndexPattern(Private, Promise, $route, config, indexPatterns) { let getIds = Private(GetIdsProvider); let rootSearchSource = Private(CourierDataSourceRootSearchSourceProvider); let route = _.get($route, 'current.$$route'); return getIds() .then(function (patterns) { let defaultId = config.get('defaultIndex'); let defined = !!defaultId; let exists = _.contains(patterns, defaultId); if (defined && !exists) { config.remove('defaultIndex'); defaultId = defined = false; } if (!defined && route.requireDefaultIndex) { // If there is only one index pattern, set it as default if (patterns.length === 1) { defaultId = patterns[0]; config.set('defaultIndex', defaultId); } else { throw new NoDefaultIndexPattern(); } } return notify.event('loading default index pattern', function () { return indexPatterns.get(defaultId).then(function (pattern) { rootSearchSource.getGlobalSource().set('index', pattern); notify.log('index pattern set to', defaultId); }); }); }); }) .afterWork( // success null, // failure function (err, kbnUrl) { let hasDefault = !(err instanceof NoDefaultIndexPattern); if (hasDefault || !whenMissingRedirectTo) throw err; // rethrow kbnUrl.change(whenMissingRedirectTo); if (!defaultRequiredToasts) defaultRequiredToasts = []; else defaultRequiredToasts.push(notify.error(err)); } ); };