PanelChrome.tsx 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import React, { ComponentClass } from 'react';
  2. import { PanelModel } from '../panel_model';
  3. import { DashboardModel } from '../dashboard_model';
  4. import { PanelHeader } from './PanelHeader';
  5. import { DataPanel, PanelProps, DataPanelWrapper } from './DataPanel';
  6. export interface Props {
  7. panel: PanelModel;
  8. dashboard: DashboardModel;
  9. component: ComponentClass<PanelProps>;
  10. }
  11. interface State {}
  12. // cache DataPanel wrapper components
  13. const dataPanels: { [s: string]: DataPanel } = {};
  14. export class PanelChrome extends React.Component<Props, State> {
  15. panelComponent: DataPanel;
  16. constructor(props) {
  17. super(props);
  18. }
  19. render() {
  20. const { type } = this.props.panel;
  21. let PanelComponent = dataPanels[type];
  22. if (!PanelComponent) {
  23. PanelComponent = dataPanels[type] = DataPanelWrapper(this.props.component);
  24. }
  25. console.log('PanelChrome render', PanelComponent);
  26. return (
  27. <div className="panel-container">
  28. <PanelHeader panel={this.props.panel} dashboard={this.props.dashboard} />
  29. <div className="panel-content">{<PanelComponent type={'test'} queries={[]} isVisible={true} />}</div>
  30. </div>
  31. );
  32. }
  33. }