GeneralTab.tsx 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import React, { PureComponent } from 'react';
  2. import { getAngularLoader, AngularComponent } from 'app/core/services/AngularLoader';
  3. import { EditorTabBody } from './EditorTabBody';
  4. import { PanelModel } from '../panel_model';
  5. import './../../panel/GeneralTabCtrl';
  6. interface Props {
  7. panel: PanelModel;
  8. }
  9. export class GeneralTab extends PureComponent<Props> {
  10. element: any;
  11. component: AngularComponent;
  12. constructor(props) {
  13. super(props);
  14. }
  15. componentDidMount() {
  16. if (!this.element) {
  17. return;
  18. }
  19. const { panel } = this.props;
  20. const loader = getAngularLoader();
  21. const template = '<panel-general-tab />';
  22. const scopeProps = {
  23. ctrl: {
  24. panel: panel,
  25. },
  26. };
  27. this.component = loader.load(this.element, scopeProps, template);
  28. }
  29. componentWillUnmount() {
  30. if (this.component) {
  31. this.component.destroy();
  32. }
  33. }
  34. render() {
  35. const currentDataSource = {
  36. title: 'ProductionDB',
  37. imgSrc: 'public/app/plugins/datasource/prometheus/img/prometheus_logo.svg',
  38. render: () => <h2>hello</h2>,
  39. };
  40. return (
  41. <EditorTabBody main={currentDataSource} toolbarItems={[]}>
  42. <div ref={element => (this.element = element)} style={{ width: '100%' }} />
  43. </EditorTabBody>
  44. );
  45. }
  46. }