Sven Klemm 7 лет назад
Родитель
Сommit
bfc751542c
1 измененных файлов с 14 добавлено и 6 удалено
  1. 14 6
      public/app/core/components/sql_part/sql_part_editor.ts

+ 14 - 6
public/app/core/components/sql_part/sql_part_editor.ts

@@ -30,6 +30,7 @@ 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 = [];
 
@@ -53,9 +54,14 @@ export function sqlPartEditorDirective($compile, templateSrv) {
         }
       }
 
-      function switchToLink(paramIndex) {
+      function inputBlur($input, paramIndex) {
+        cancelBlur = setTimeout(function() {
+          switchToLink.call(this, $input, paramIndex);
+        }, 200);
+      }
+
+      function switchToLink($input, paramIndex) {
         /*jshint validthis:true */
-        var $input = $(this);
         var $link = $input.prev();
         var newValue = $input.val();
 
@@ -123,9 +129,11 @@ export function sqlPartEditorDirective($compile, templateSrv) {
           minLength: 0,
           items: 1000,
           updater: function(value) {
-            setTimeout(function() {
-              switchToLink.call($input[0], paramIndex);
-            }, 0);
+            if (value === part.params[paramIndex]) {
+              clearTimeout(cancelBlur);
+              $input.focus();
+              return value;
+            }
             return value;
           },
         });
@@ -169,7 +177,7 @@ export function sqlPartEditorDirective($compile, templateSrv) {
           $paramLink.appendTo($paramsContainer);
           $input.appendTo($paramsContainer);
 
-          $input.blur(_.partial(switchToLink, index));
+          $input.blur(_.partial(inputBlur, $input, index));
           $input.keyup(inputKeyDown);
           $input.keypress(_.partial(inputKeyPress, index));
           $paramLink.click(_.partial(clickFuncParam, index));