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
81 lines (69 loc) • 2.04 kB
JavaScript
require('./main.scss');
import 'babel-core/polyfill';
import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
import {
Router,
useRouterHistory,
} from 'react-router';
import { syncHistoryWithStore } from 'react-router-redux';
import createHashHistory from 'history/lib/createHashHistory';
// Store.
import configureStore from './store/configure_store';
// Guide views.
import AppContainer from './views/app_container';
import HomeView from './views/home/home_view.jsx';
import NotFoundView from './views/not_found/not_found_view.jsx';
import {
Routes,
} from './services';
const store = configureStore();
const browserHistory = useRouterHistory(createHashHistory)({
queryKey: false,
});
const history = syncHistoryWithStore(browserHistory, store);
const childRoutes = Routes.getAppRoutes();
childRoutes.push({
path: '*',
component: NotFoundView,
name: 'Page Not Found',
});
const routes = [{
path: '/',
component: AppContainer,
indexRoute: {
component: HomeView,
source: 'views/home/HomeView.jsx',
},
childRoutes,
}];
// Update document title with route name.
const onRouteEnter = route => {
const leafRoute = route.routes[route.routes.length - 1];
document.title = leafRoute.name ?
`Kibana UI Framework - ${leafRoute.name}` :
'Kibana UI Framework';
};
const syncTitleWithRoutes = routesList => {
if (!routesList) return;
routesList.forEach(route => {
route.onEnter = onRouteEnter; // eslint-disable-line no-param-reassign
if (route.indexRoute) {
// Index routes have a weird relationship with their "parent" routes,
// so it seems we need to give their own onEnter hooks.
route.indexRoute.onEnter = onRouteEnter; // eslint-disable-line no-param-reassign
}
syncTitleWithRoutes(route.childRoutes);
});
};
syncTitleWithRoutes(routes);
ReactDOM.render(
<Provider store={store}>
<Router
history={history}
routes={routes}
/>
</Provider>,
document.getElementById('guide')
);