import React, { PureComponent } from 'react'; import classNames from 'classnames'; import { QueriesTab } from './QueriesTab'; import { VisualizationTab } from './VisualizationTab'; import { GeneralTab } from './GeneralTab'; import { AlertTab } from './AlertTab'; import config from 'app/core/config'; import { store } from 'app/store/store'; import { updateLocation } from 'app/core/actions'; import { AngularComponent } from 'app/core/services/AngularLoader'; import { PanelModel } from '../panel_model'; import { DashboardModel } from '../dashboard_model'; import { PanelPlugin } from 'app/types/plugins'; import Tooltip from 'app/core/components/Tooltip/Tooltip'; interface PanelEditorProps { panel: PanelModel; dashboard: DashboardModel; plugin: PanelPlugin; angularPanel?: AngularComponent; onTypeChanged: (newType: PanelPlugin) => void; } interface PanelEditorTab { id: string; text: string; } export class PanelEditor extends PureComponent { constructor(props) { super(props); } onChangeTab = (tab: PanelEditorTab) => { store.dispatch( updateLocation({ query: { tab: tab.id }, partial: true, }) ); this.forceUpdate(); }; renderCurrentTab(activeTab: string) { const { panel, dashboard, onTypeChanged, plugin, angularPanel } = this.props; switch (activeTab) { case 'advanced': return ; case 'queries': return ; case 'alerts': return ; case 'visualization': return ( ); default: return null; } } render() { const { plugin } = this.props; const activeTab = store.getState().location.query.tab || 'queries'; const tabs = [ { id: 'queries', text: 'Queries' }, { id: 'visualization', text: 'Visualization' }, { id: 'advanced', text: 'Panel Options' }, ]; if (config.alertingEnabled && plugin.id === 'graph') { tabs.push({ id: 'alerts', text: 'Alerts', }); } return (
{ //
// //
//
//
//
//
//
}
{tabs.map(tab => { return ; })}
{this.renderCurrentTab(activeTab)}
); } } interface TabItemParams { tab: PanelEditorTab; activeTab: string; onClick: (tab: PanelEditorTab) => void; } function TabItem({ tab, activeTab, onClick }: TabItemParams) { const tabClasses = classNames({ 'panel-editor-tabs__link': true, active: activeTab === tab.id, }); return (
onClick(tab)}>
); }