Fix matrics comparison to know when to refresh (#26382)

This commit is contained in:
Ivana Huckova 2020-07-22 13:29:30 +02:00 committed by GitHub
parent f9239a4d6c
commit 85f3a999f3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -15,6 +15,7 @@ export class ElasticQueryCtrl extends QueryCtrl {
esVersion: any;
rawQueryOld: string;
targetMetricsOld: string;
/** @ngInject */
constructor(
@ -51,18 +52,17 @@ export class ElasticQueryCtrl extends QueryCtrl {
}
queryUpdated() {
// As Raw Data and Raw Document have the same request, we need to run refresh if they are updated
const isPossiblyRawDataSwitch = this.target.metrics.some(
(metric: any) => metric.type === 'raw_data' || metric.type === 'raw_document'
);
const newJson = angular.toJson(this.datasource.queryBuilder.build(this.target), true);
if (this.rawQueryOld && newJson !== this.rawQueryOld) {
this.refresh();
} else if (isPossiblyRawDataSwitch) {
const newJsonTargetMetrics = angular.toJson(this.target.metrics);
const newJsonRawQuery = angular.toJson(this.datasource.queryBuilder.build(this.target), true);
if (
(this.rawQueryOld && newJsonRawQuery !== this.rawQueryOld) ||
(this.targetMetricsOld && newJsonTargetMetrics !== this.targetMetricsOld)
) {
this.refresh();
}
this.rawQueryOld = newJson;
this.rawQueryOld = newJsonRawQuery;
this.targetMetricsOld = newJsonTargetMetrics;
this.$rootScope.appEvent(CoreEvents.elasticQueryUpdated);
}