import React from 'react';
import { NavModel, NavModelItem } from '../../nav_model_srv';
import classNames from 'classnames';
import appEvents from 'app/core/app_events';
export interface IProps {
model: NavModel;
}
function TabItem(tab: NavModelItem) {
if (tab.hideFromTabs) {
return (null);
}
let tabClasses = classNames({
'gf-tabs-link': true,
active: tab.active,
});
return (
{tab.text}
);
}
function SelectOption(navItem: NavModelItem) {
if (navItem.hideFromTabs) { // TODO: Rename hideFromTabs => hideFromNav
return (null);
}
return (
);
}
function Navigation({main}: {main: NavModelItem}) {
return ();
}
function SelectNav({main, customCss}: {main: NavModelItem, customCss: string}) {
const defaultSelectedItem = main.children.find(navItem => {
return navItem.active === true;
});
const gotoUrl = evt => {
var element = evt.target;
var url = element.options[element.selectedIndex].value;
appEvents.emit('location-change', {href: url});
};
return ();
}
function Tabs({main, customCss}: {main: NavModelItem, customCss: string}) {
return {main.children.map(TabItem)}
;
}
export default class PageHeader extends React.Component {
constructor(props) {
super(props);
}
renderBreadcrumb(breadcrumbs) {
const breadcrumbsResult = [];
for (let i = 0; i < breadcrumbs.length; i++) {
const bc = breadcrumbs[i];
if (bc.url) {
breadcrumbsResult.push({bc.title});
} else {
breadcrumbsResult.push( / {bc.title});
}
}
return breadcrumbsResult;
}
renderHeaderTitle(main) {
return (
{main.icon && }
{main.img &&
}
{main.text &&
{main.text}
}
{main.breadcrumbs && main.breadcrumbs.length > 0 && (
{this.renderBreadcrumb(main.breadcrumbs)}
)
}
{main.subTitle &&
{main.subTitle}
}
{main.subType && (
{main.subType.text}
)}
);
}
render() {
const { model } = this.props;
if (!model) {
return null;
}
return (
{this.renderHeaderTitle(model.main)}
{model.main.children && }
);
}
}