kibana-with-account
Version:
kibana-with-account is develop based kibana project
60 lines (48 loc) • 1.45 kB
JavaScript
const { startsWith, isString } = require('lodash');
import { parse, format } from 'url';
export default function (chrome, internals) {
chrome.getNavLinks = function () {
return internals.nav;
};
chrome.getLastSubUrlFor = function (url) {
return internals.appUrlStore.getItem(`lastSubUrl:${url}`);
};
chrome.getBasePath = function () {
return internals.basePath || '';
};
chrome.addBasePath = function (url) {
var isUrl = url && isString(url);
if (!isUrl) return url;
var parsed = parse(url);
if (!parsed.host && parsed.pathname) {
if (parsed.pathname[0] === '/') {
parsed.pathname = chrome.getBasePath() + parsed.pathname;
}
}
return format({
protocol: parsed.protocol,
host: parsed.host,
pathname: parsed.pathname,
query: parsed.query,
hash: parsed.hash,
});
};
internals.trackPossibleSubUrl = function (url) {
for (const link of internals.nav) {
if (startsWith(url, link.url)) {
link.lastSubUrl = url;
internals.appUrlStore.setItem(`lastSubUrl:${link.url}`, url);
}
}
};
internals.nav.forEach(link => {
// convert all link urls to absolute urls
var a = document.createElement('a');
a.setAttribute('href', link.url);
link.url = a.href;
link.lastSubUrl = chrome.getLastSubUrlFor(link.url);
if (link.url === chrome.getAppUrl()) {
link.active = true;
}
});
};