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;
+ });
};
}
}