diff --git a/public/app/features/plugins/pluginTemplateQueryComponentLoader.tsx b/public/app/features/plugins/pluginTemplateQueryComponentLoader.tsx index c45cde271c9..ac7d94a3f15 100644 --- a/public/app/features/plugins/pluginTemplateQueryComponentLoader.tsx +++ b/public/app/features/plugins/pluginTemplateQueryComponentLoader.tsx @@ -1,19 +1,9 @@ -import _ from 'lodash'; import coreModule from 'app/core/core_module'; import { importPluginModule } from './plugin_loader'; import React from 'react'; import ReactDOM from 'react-dom'; -import { Provider } from 'react-redux'; import DefaultTemplateQueryCtrl from '../templating/defaultTemplateQueryCtrl'; -function WrapInProvider(Component, props) { - return ( - - - - ); -} - async function loadComponent(module) { const component = await importPluginModule(module); if (!component.TemplateQueryCtrl) { @@ -28,9 +18,13 @@ function pluginTemplateQueryComponentLoader(datasourceSrv) { return { restrict: 'E', link: async (scope, elem) => { - const component = await loadComponent(scope.currentDatasource.meta.module); - const props = { datasourceSrv, query: scope.current.query, isValid: scope.current.isValid }; - ReactDOM.render(WrapInProvider(component, props), elem[0]); + const Component = await loadComponent(scope.currentDatasource.meta.module); + const props = { + datasourceSrv, + query: scope.current.query, + onChange: scope.onQueryChange, + }; + ReactDOM.render(, elem[0]); scope.$on('$destroy', () => { ReactDOM.unmountComponentAtNode(elem[0]); }); diff --git a/public/app/features/templating/defaultTemplateQueryCtrl.tsx b/public/app/features/templating/defaultTemplateQueryCtrl.tsx index 56334590620..85f0ac7ee7d 100644 --- a/public/app/features/templating/defaultTemplateQueryCtrl.tsx +++ b/public/app/features/templating/defaultTemplateQueryCtrl.tsx @@ -2,15 +2,23 @@ import React, { PureComponent } from 'react'; interface Props { query: string; + onChange: (c: string) => void; } -export default class DefaultTemplateQueryCtrl extends PureComponent { +export default class DefaultTemplateQueryCtrl extends PureComponent { constructor(props) { super(props); + this.state = { value: props.query }; + this.handleChange = this.handleChange.bind(this); + this.handleBlur = this.handleBlur.bind(this); } - componentDidMount() { - console.log('componentDidMount'); + handleChange(event) { + this.setState({ value: event.target.value }); + } + + handleBlur(event) { + this.props.onChange(event.target.value); } render() { @@ -20,10 +28,10 @@ export default class DefaultTemplateQueryCtrl extends PureComponent { diff --git a/public/app/features/templating/editor_ctrl.ts b/public/app/features/templating/editor_ctrl.ts index 4bd00a9c1ee..6bdd71620b3 100644 --- a/public/app/features/templating/editor_ctrl.ts +++ b/public/app/features/templating/editor_ctrl.ts @@ -106,6 +106,11 @@ export class VariableEditorCtrl { }); }; + $scope.onQueryChange = value => { + $scope.current.query = value; + $scope.runQuery(); + }; + $scope.edit = variable => { $scope.current = variable; $scope.currentIsNew = false; @@ -173,8 +178,9 @@ export class VariableEditorCtrl { }; $scope.datasourceChanged = async () => { - $scope.currentDatasource = await datasourceSrv.get($scope.current.datasource); - console.log($scope.currentDatasource); + datasourceSrv.get($scope.current.datasource).then(ds => { + $scope.currentDatasource = ds; + }); }; } }