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
104 lines (88 loc) • 3.34 kB
JavaScript
import _ from 'lodash';
import { format as formatUrl, parse as parseUrl } from 'url';
import modules from 'ui/modules';
import Notifier from 'ui/notify/notifier';
import { UrlOverflowServiceProvider } from '../../error_url_overflow';
const URL_LIMIT_WARN_WITHIN = 1000;
module.exports = function (chrome, internals) {
chrome.getFirstPathSegment = _.noop;
chrome.getBreadcrumbs = _.noop;
chrome.setupAngular = function () {
let kibana = modules.get('kibana');
_.forOwn(chrome.getInjected(), function (val, name) {
kibana.value(name, val);
});
kibana
.value('kbnVersion', internals.version)
.value('buildNum', internals.buildNum)
.value('buildSha', internals.buildSha)
.value('serverName', internals.serverName)
.value('uiSettings', internals.uiSettings)
.value('sessionId', Date.now())
.value('chrome', chrome)
.value('esUrl', (function () {
let a = document.createElement('a');
a.href = chrome.addBasePath('/elasticsearch');
return a.href;
}()))
.value('esAdminUrl', (function () {
const a = document.createElement('a');
a.href = chrome.addBasePath('/es_admin');
return a.href;
}()))
.config(chrome.$setupXsrfRequestInterceptor)
.config(['$compileProvider', function ($compileProvider) {
if (!internals.devMode) {
$compileProvider.debugInfoEnabled(false);
}
}])
.run(($location, $rootScope, Private) => {
chrome.getFirstPathSegment = () => {
return $location.path().split('/')[1];
};
chrome.getBreadcrumbs = () => {
let path = $location.path();
let length = path.length - 1;
// trim trailing slash
if (path.charAt(length) === '/') {
length--;
}
return path.substr(1, length)
.replace(/_/g, ' ') // Present snake-cased breadcrumb names as individual words
.split('/');
};
const notify = new Notifier();
const urlOverflow = Private(UrlOverflowServiceProvider);
const check = (event) => {
if ($location.path() === '/error/url-overflow') return;
try {
if (urlOverflow.check($location.absUrl()) <= URL_LIMIT_WARN_WITHIN) {
notify.directive({
template: `
<p>
The URL has gotten big and may cause Kibana
to stop working. Please either enable the
<code>state:storeInSessionStorage</code>
option in the <a href="#/management/kibana/settings">advanced
settings</a> or simplify the onscreen visuals.
</p>
`
}, {
type: 'error',
actions: [{ text: 'close' }]
});
}
} catch (e) {
const { host, path, search, protocol } = parseUrl(window.location.href);
// rewrite the entire url to force the browser to reload and
// discard any potentially unstable state from before
window.location.href = formatUrl({ host, path, search, protocol, hash: '#/error/url-overflow' });
}
};
$rootScope.$on('$routeUpdate', check);
$rootScope.$on('$routeChangeStart', check);
});
require('../directives')(chrome, internals);
modules.link(kibana);
};
};