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
65 lines (50 loc) • 1.75 kB
JavaScript
import SearchSourceProvider from 'ui/courier/data_source/search_source';
export default function RootSearchSource(Private, $rootScope, timefilter, Notifier) {
let SearchSource = Private(SearchSourceProvider);
let notify = new Notifier({ location: 'Root Search Source' });
let globalSource = new SearchSource();
globalSource.inherits(false); // this is the final source, it has no parents
globalSource.filter(function (globalSource) {
// dynamic time filter will be called in the _flatten phase of things
return timefilter.get(globalSource.get('index'));
});
let appSource; // set in setAppSource()
resetAppSource();
// when the route changes, clear the appSource
$rootScope.$on('$routeChangeStart', resetAppSource);
/**
* Get the current AppSource
* @return {Promise} - resolved with the current AppSource
*/
function getAppSource() {
return appSource;
}
/**
* Set the current AppSource
* @param {SearchSource} source - The Source that represents the applications "root" search source object
*/
function setAppSource(source) {
appSource = source;
// walk the parent chain until we get to the global source or nothing
// that's where we will attach to the globalSource
let literalRoot = source;
while (literalRoot._parent && literalRoot._parent !== globalSource) {
literalRoot = literalRoot._parent;
}
literalRoot.inherits(globalSource);
}
/**
* Sets the appSource to be a new, empty, SearchSource
* @return {undefined}
*/
function resetAppSource() {
setAppSource(new SearchSource());
}
return {
get: getAppSource,
set: setAppSource,
getGlobalSource: function () {
return globalSource;
}
};
};