QueriesTab.tsx 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import React from 'react';
  2. import { PanelModel } from '../panel_model';
  3. import { DashboardModel } from '../dashboard_model';
  4. import { getAngularLoader, AngularComponent } from 'app/core/services/angular_loader';
  5. interface Props {
  6. panel: PanelModel;
  7. dashboard: DashboardModel;
  8. }
  9. export class QueriesTab extends React.Component<Props, any> {
  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, dashboard } = this.props;
  20. // make sure the panel has datasource & queries properties
  21. panel.datasource = panel.datasource || null;
  22. panel.targets = panel.targets || [{}];
  23. const loader = getAngularLoader();
  24. const template = '<metrics-tab />';
  25. const scopeProps = {
  26. ctrl: {
  27. panel: panel,
  28. dashboard: dashboard,
  29. panelCtrl: {
  30. panel: panel,
  31. dashboard: dashboard,
  32. },
  33. },
  34. };
  35. this.component = loader.load(this.element, scopeProps, template);
  36. }
  37. componentWillUnmount() {
  38. if (this.component) {
  39. this.component.destroy();
  40. }
  41. }
  42. render() {
  43. return <div ref={element => (this.element = element)} className="panel-height-helper" />;
  44. }
  45. }