DataSourcePluginSettings.tsx 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import React, { PureComponent } from 'react';
  2. import { DataSource, Plugin } from 'app/types';
  3. import { getAngularLoader, AngularComponent } from 'app/core/services/AngularLoader';
  4. import { importPluginModule } from '../plugins/plugin_loader';
  5. interface Props {
  6. dataSource: DataSource;
  7. dataSourceMeta: Plugin;
  8. }
  9. export class DataSourcePluginSettings extends PureComponent<Props> {
  10. element: any;
  11. component: AngularComponent;
  12. componentDidMount() {
  13. if (!this.element) {
  14. return;
  15. }
  16. importPluginModule(this.props.dataSourceMeta.module).then(pluginExports => {
  17. console.log(pluginExports);
  18. });
  19. const loader = getAngularLoader();
  20. const template = '<plugin-component type="datasource-config-ctrl" />';
  21. const scopeProps = {
  22. ctrl: {
  23. dataSourceMeta: this.props.dataSourceMeta,
  24. current: this.props.dataSource,
  25. },
  26. };
  27. this.component = loader.load(this.element, scopeProps, template);
  28. }
  29. render() {
  30. return <div ref={element => (this.element = element)} />;
  31. }
  32. }
  33. export default DataSourcePluginSettings;