QueriesTab.tsx 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. // Libraries
  2. import React, { PureComponent } from 'react';
  3. // Services & utils
  4. import { getAngularLoader, AngularComponent } from 'app/core/services/AngularLoader';
  5. // Types
  6. import { PanelModel } from '../panel_model';
  7. import { DashboardModel } from '../dashboard_model';
  8. interface Props {
  9. panel: PanelModel;
  10. dashboard: DashboardModel;
  11. }
  12. export class QueriesTab extends PureComponent<Props> {
  13. element: any;
  14. component: AngularComponent;
  15. constructor(props) {
  16. super(props);
  17. }
  18. componentDidMount() {
  19. if (!this.element) {
  20. return;
  21. }
  22. const { panel, dashboard } = this.props;
  23. const loader = getAngularLoader();
  24. const template = '<metrics-tab />';
  25. const scopeProps = {
  26. ctrl: {
  27. panel: panel,
  28. dashboard: dashboard,
  29. refresh: () => panel.refresh(),
  30. },
  31. };
  32. this.component = loader.load(this.element, scopeProps, template);
  33. }
  34. componentWillUnmount() {
  35. if (this.component) {
  36. this.component.destroy();
  37. }
  38. }
  39. render() {
  40. return <div ref={element => (this.element = element)} className="panel-height-helper" />;
  41. }
  42. }