فهرست منبع

fix(opentsdb): blur event triggered twice for metric selector, caused double query to opentsdb after metric name change

Torkel Ödegaard 10 سال پیش
والد
کامیت
6e8d5cd873
2فایلهای تغییر یافته به همراه104 افزوده شده و 128 حذف شده
  1. 104 124
      public/app/plugins/datasource/opentsdb/partials/query.editor.html
  2. 0 4
      public/app/plugins/datasource/opentsdb/queryCtrl.js

+ 104 - 124
public/app/plugins/datasource/opentsdb/partials/query.editor.html

@@ -42,15 +42,9 @@
 			Metric
 		</li>
 		<li>
-			<input type="text"
-				class="input-large tight-form-input"
-				ng-model="target.metric"
-				spellcheck='false'
-				bs-typeahead="suggestMetrics"
-				placeholder="metric name"
-				data-min-length=0 data-items=100
-				ng-model-onblur
-				ng-change="targetBlur()">
+			<input type="text" class="input-large tight-form-input" ng-model="target.metric"
+			spellcheck='false' bs-typeahead="suggestMetrics" placeholder="metric name" data-min-length=0 data-items=100
+			ng-blur="targetBlur()">
 			</input>
 			<a bs-tooltip="target.errors.metric" style="color: rgb(229, 189, 28)" ng-show="target.errors.metric">
 				<i class="fa fa-warning"></i>
@@ -75,11 +69,11 @@
 		</li>
 		<li>
 			<input type="text" class="tight-form-input input-large"
-				ng-model="target.alias"
-				spellcheck='false'
-				placeholder="series alias"
-				data-min-length=0 data-items=100
-				ng-blur="targetBlur()"></input>
+			ng-model="target.alias"
+			spellcheck='false'
+			placeholder="series alias"
+			data-min-length=0 data-items=100
+			ng-blur="targetBlur()"></input>
 		</li>
 	</ul>
 
@@ -94,115 +88,101 @@
 
 		<li>
 			<input type="text" class="input-large tight-form-input"
-				ng-model="target.downsampleInterval"
-				ng-model-onblur
-				ng-change="targetBlur()"
-				placeholder="interval (empty = auto)">
-			</li>
-
-			<li class="tight-form-item">
-				Aggregator
-			</li>
-
-			<li>
-				<select ng-model="target.downsampleAggregator" class="tight-form-input input-small"
-					ng-options="agg for agg in aggregators"
-					ng-change="targetBlur()">
-				</select>
-			</li>
-
-			<li class="tight-form-item">
-				<editor-checkbox text="Disable downsampling" model="target.disableDownsampling" change="targetBlur()"></editor-checkbox>
-			</li>
-
-		</ul>
-		<div class="clearfix"></div>
-	</div>
-
-	<div class="tight-form">
-		<ul class="tight-form-list" role="menu">
-			<li class="tight-form-item tight-form-align" style="width: 86px">
-				Tags
-			</li>
-			<li ng-repeat="(key, value) in target.tags track by $index" class="tight-form-item">
-				{{key}}&nbsp;=&nbsp;{{value}}
-				<a ng-click="removeTag(key)">
-					<i class="fa fa-remove"></i>
-				</a>
-			</li>
+			ng-model="target.downsampleInterval"
+			ng-model-onblur
+			ng-change="targetBlur()"
+			placeholder="interval (empty = auto)"></input>
+		</li>
 
-			<li class="tight-form-item" ng-hide="addTagMode">
-				<a ng-click="addTag()">
-					<i class="fa fa-plus"></i>
-				</a>
-			</li>
-
-			<li ng-show="addTagMode">
-				<input type="text" class="input-small tight-form-input"
-					spellcheck='false'
-					bs-typeahead="suggestTagKeys"
-					data-min-length=0 data-items=100
-					ng-model="target.currentTagKey"
-					placeholder="key">
-					<input type="text"
-						class="input-small tight-form-input"
-						spellcheck='false'
-						bs-typeahead="suggestTagValues"
-						data-min-length=0 data-items=100
-						ng-model="target.currentTagValue"
-						placeholder="value">
-					</input>
-					<a ng-click="addTag()">
-						add tag
-					</a>
-					<a bs-tooltip="target.errors.tags"
-						style="color: rgb(229, 189, 28)"
-						ng-show="target.errors.tags">
-						<i class="fa fa-warning"></i>
-					</a>
-				</li>
-			</ul>
-			<div class="clearfix"></div>
-		</div>
-
-		<div class="tight-form">
-			<ul class="tight-form-list" role="menu">
-				<li class="tight-form-item tight-form-align" style="width: 86px">
-					<editor-checkbox text="Rate" model="target.shouldComputeRate" change="targetBlur()"></editor-checkbox>
-				</li>
-
-				<li class="tight-form-item" ng-hide="!target.shouldComputeRate">
-					<editor-checkbox text="Counter" model="target.isCounter" change="targetBlur()"></editor-checkbox>
-				</li>
-
-				<li class="tight-form-item" ng-hide="!target.isCounter">
-					Counter Max:
-				</li>
-
-				<li ng-hide="!target.isCounter">
-					<input type="text" class="tight-form-input input-small"
-						ng-disabled="!target.shouldComputeRate"
-						ng-model="target.counterMax"
-						spellcheck='false'
-						placeholder="max value"
-						ng-model-onblur
-						ng-blur="targetBlur()"></input>
-				</li>
-				<li class="tight-form-item" ng-hide="!target.isCounter">
-					Reset Value:
-				</li>
-				<li ng-hide="!target.isCounter">
-					<input type="text" class="tight-form-input input-small"
-						ng-disabled="!target.shouldComputeRate"
-						ng-model="target.counterResetValue"
-						spellcheck='false'
-						placeholder="reset value"
-						ng-model-onblur
-						ng-blur="targetBlur()"></input>
-				</li>
-			</ul>
-
-			<div class="clearfix"></div>
-		</div>
-	</div>
+		<li class="tight-form-item">
+			Aggregator
+		</li>
+
+		<li>
+			<select ng-model="target.downsampleAggregator" class="tight-form-input input-small"
+				ng-options="agg for agg in aggregators"
+				ng-change="targetBlur()">
+			</select>
+		</li>
+
+		<li class="tight-form-item">
+			<editor-checkbox text="Disable downsampling" model="target.disableDownsampling" change="targetBlur()"></editor-checkbox>
+		</li>
+
+	</ul>
+	<div class="clearfix"></div>
+</div>
+
+<div class="tight-form">
+	<ul class="tight-form-list" role="menu">
+		<li class="tight-form-item tight-form-align" style="width: 86px">
+			Tags
+		</li>
+		<li ng-repeat="(key, value) in target.tags track by $index" class="tight-form-item">
+			{{key}}&nbsp;=&nbsp;{{value}}
+			<a ng-click="removeTag(key)">
+				<i class="fa fa-remove"></i>
+			</a>
+		</li>
+
+		<li class="tight-form-item" ng-hide="addTagMode">
+			<a ng-click="addTag()">
+				<i class="fa fa-plus"></i>
+			</a>
+		</li>
+
+		<li ng-show="addTagMode">
+			<input type="text" class="input-small tight-form-input" spellcheck='false'
+			bs-typeahead="suggestTagKeys" data-min-length=0 data-items=100
+			ng-model="target.currentTagKey" placeholder="key"></input>
+
+			<input type="text" class="input-small tight-form-input"
+			spellcheck='false' bs-typeahead="suggestTagValues"
+			data-min-length=0 data-items=100 ng-model="target.currentTagValue" placeholder="value">
+			</input>
+			<a ng-click="addTag()">
+				add tag
+			</a>
+			<a bs-tooltip="target.errors.tags"
+				style="color: rgb(229, 189, 28)"
+				ng-show="target.errors.tags">
+				<i class="fa fa-warning"></i>
+			</a>
+		</li>
+	</ul>
+	<div class="clearfix"></div>
+</div>
+
+<div class="tight-form">
+	<ul class="tight-form-list" role="menu">
+		<li class="tight-form-item tight-form-align" style="width: 86px">
+			<editor-checkbox text="Rate" model="target.shouldComputeRate" change="targetBlur()"></editor-checkbox>
+		</li>
+
+		<li class="tight-form-item" ng-hide="!target.shouldComputeRate">
+			<editor-checkbox text="Counter" model="target.isCounter" change="targetBlur()"></editor-checkbox>
+		</li>
+
+		<li class="tight-form-item" ng-hide="!target.isCounter">
+			Counter Max:
+		</li>
+
+		<li ng-hide="!target.isCounter">
+			<input type="text" class="tight-form-input input-small" ng-disabled="!target.shouldComputeRate"
+			ng-model="target.counterMax" spellcheck='false'
+			placeholder="max value" ng-model-onblur
+			ng-blur="targetBlur()"></input>
+		</li>
+		<li class="tight-form-item" ng-hide="!target.isCounter">
+			Reset Value:
+		</li>
+		<li ng-hide="!target.isCounter">
+			<input type="text" class="tight-form-input input-small" ng-disabled="!target.shouldComputeRate"
+			ng-model="target.counterResetValue" spellcheck='false'
+			placeholder="reset value" ng-model-onblur
+			ng-blur="targetBlur()"></input>
+		</li>
+	</ul>
+
+	<div class="clearfix"></div>
 </div>

+ 0 - 4
public/app/plugins/datasource/opentsdb/queryCtrl.js

@@ -21,10 +21,6 @@ function (angular, _, kbn) {
       if (!$scope.target.downsampleAggregator) {
         $scope.target.downsampleAggregator = 'avg';
       }
-
-      $scope.$on('typeahead-updated', function() {
-        $timeout($scope.targetBlur);
-      });
     };
 
     $scope.targetBlur = function() {