import React from 'react'; import { PanelModel } from '../panel_model'; import { DashboardModel } from '../dashboard_model'; import { store } from 'app/stores/store'; import { observer } from 'mobx-react'; import { QueriesTab } from './QueriesTab'; import classNames from 'classnames'; interface PanelEditorProps { panel: PanelModel; dashboard: DashboardModel; } interface PanelEditorTab { id: string; text: string; icon: string; } @observer export class PanelEditor extends React.Component { tabs: PanelEditorTab[]; constructor(props) { super(props); this.tabs = [ { id: 'queries', text: 'Queries', icon: 'fa fa-database' }, { id: 'viz', text: 'Visualization', icon: 'fa fa-line-chart' }, ]; } renderQueriesTab() { return ; } renderVizTab() { return

Visualizations

; } onChangeTab = (tab: PanelEditorTab) => { store.view.updateQuery({ tab: tab.id }, false); }; render() { const activeTab: string = store.view.query.get('tab') || 'queries'; return (
    {this.tabs.map(tab => { return ; })}
{activeTab === 'queries' && this.renderQueriesTab()} {activeTab === 'viz' && this.renderVizTab()}
); } } interface TabItemParams { tab: PanelEditorTab; activeTab: string; onClick: (tab: PanelEditorTab) => void; } function TabItem({ tab, activeTab, onClick }: TabItemParams) { const tabClasses = classNames({ 'gf-tabs-link': true, active: activeTab === tab.id, }); return (
  • onClick(tab)}> {tab.text}
  • ); }