diff --git a/public/app/core/components/sql_part/sql_part_editor.ts b/public/app/core/components/sql_part/sql_part_editor.ts index 8bac51680ad..56329d58a6c 100644 --- a/public/app/core/components/sql_part/sql_part_editor.ts +++ b/public/app/core/components/sql_part/sql_part_editor.ts @@ -15,7 +15,7 @@ var template = ` /** @ngInject */ export function sqlPartEditorDirective($compile, templateSrv) { - var paramTemplate = ''; + var paramTemplate = ''; return { restrict: 'E', @@ -30,7 +30,6 @@ export function sqlPartEditorDirective($compile, templateSrv) { var partDef = part.def; var $paramsContainer = elem.find('.query-part-parameters'); var debounceLookup = $scope.debounce; - var cancelBlur = null; $scope.partActions = []; @@ -54,23 +53,7 @@ export function sqlPartEditorDirective($compile, templateSrv) { } } - $scope.inputBlur = function(paramIndex) { - cancelBlur = setTimeout($scope.switchToLink, 200); - }; - - $scope.updater = function(value) { - if (value === part.params[paramIndex]) { - clearTimeout(cancelBlur); - $input.focus(); - } - return value; - setTimeout(function() { - $scope.inputBlur.call($input[0], paramIndex); - }, 0); - return value; - }; - - $scope.switchToLink = function(paramIndex) { + function inputBlur(paramIndex) { /*jshint validthis:true */ var $input = $(this); var $link = $input.prev(); @@ -87,12 +70,12 @@ export function sqlPartEditorDirective($compile, templateSrv) { $input.hide(); $link.show(); - }; + } function inputKeyPress(paramIndex, e) { /*jshint validthis:true */ if (e.which === 13) { - $scope.inputBlur.call(this, paramIndex); + inputBlur.call(this, paramIndex); } } @@ -122,12 +105,6 @@ export function sqlPartEditorDirective($compile, templateSrv) { var dynamicOptions = _.map(result, function(op) { return op.value; }); - - // add current value to dropdown if its not in resultset - if (_.indexOf(dynamicOptions, part.params[paramIndex]) === -1) { - dynamicOptions.unshift(part.params[paramIndex]); - } - callback(dynamicOptions); }); }); @@ -139,7 +116,12 @@ export function sqlPartEditorDirective($compile, templateSrv) { source: typeaheadSource, minLength: 0, items: 1000, - updater: $scope.updater, + updater: function(value) { + setTimeout(function() { + inputBlur.call($input[0], paramIndex); + }, 0); + return value; + }, }); var typeahead = $input.data('typeahead'); @@ -175,13 +157,13 @@ export function sqlPartEditorDirective($compile, templateSrv) { } var paramValue = templateSrv.highlightVariablesAsHtml(part.params[index]); - var $paramLink = $('' + paramValue + ''); + var $paramLink = $('' + paramValue + ''); var $input = $(paramTemplate); $paramLink.appendTo($paramsContainer); $input.appendTo($paramsContainer); - $input.blur(_.partial($scope.inputBlur, index)); + $input.blur(_.partial(inputBlur, index)); $input.keyup(inputKeyDown); $input.keypress(_.partial(inputKeyPress, index)); $paramLink.click(_.partial(clickFuncParam, index));