Explorar o código

Merge pull request #15932 from alexanderzobnin/fix-prom-heatmap-sorting

Heatmap: Fixes Y-axis tick labels being in wrong order for some Prometheus queries
Torkel Ödegaard %!s(int64=6) %!d(string=hai) anos
pai
achega
4ed1fdf754

+ 5 - 4
public/app/plugins/datasource/prometheus/result_transformer.ts

@@ -1,5 +1,6 @@
 import _ from 'lodash';
 import _ from 'lodash';
 import TableModel from 'app/core/table_model';
 import TableModel from 'app/core/table_model';
+import { TimeSeries } from '@grafana/ui';
 
 
 export class ResultTransformer {
 export class ResultTransformer {
   constructor(private templateSrv) {}
   constructor(private templateSrv) {}
@@ -18,10 +19,10 @@ export class ResultTransformer {
       ];
       ];
     } else if (prometheusResult && options.format === 'heatmap') {
     } else if (prometheusResult && options.format === 'heatmap') {
       let seriesList = [];
       let seriesList = [];
-      prometheusResult.sort(sortSeriesByLabel);
       for (const metricData of prometheusResult) {
       for (const metricData of prometheusResult) {
         seriesList.push(this.transformMetricData(metricData, options, options.start, options.end));
         seriesList.push(this.transformMetricData(metricData, options, options.start, options.end));
       }
       }
+      seriesList.sort(sortSeriesByLabel);
       seriesList = this.transformToHistogramOverTime(seriesList);
       seriesList = this.transformToHistogramOverTime(seriesList);
       return seriesList;
       return seriesList;
     } else if (prometheusResult) {
     } else if (prometheusResult) {
@@ -197,13 +198,13 @@ export class ResultTransformer {
   }
   }
 }
 }
 
 
-function sortSeriesByLabel(s1, s2): number {
+function sortSeriesByLabel(s1: TimeSeries, s2: TimeSeries): number {
   let le1, le2;
   let le1, le2;
 
 
   try {
   try {
     // fail if not integer. might happen with bad queries
     // fail if not integer. might happen with bad queries
-    le1 = parseHistogramLabel(s1.metric.le);
-    le2 = parseHistogramLabel(s2.metric.le);
+    le1 = parseHistogramLabel(s1.target);
+    le2 = parseHistogramLabel(s2.target);
   } catch (err) {
   } catch (err) {
     console.log(err);
     console.log(err);
     return 0;
     return 0;

+ 1 - 1
public/app/plugins/panel/heatmap/heatmap_ctrl.ts

@@ -98,7 +98,7 @@ const colorSchemes = [
   { name: 'YlOrRd', value: 'interpolateYlOrRd', invert: 'dark' },
   { name: 'YlOrRd', value: 'interpolateYlOrRd', invert: 'dark' },
 ];
 ];
 
 
-const dsSupportHistogramSort = ['prometheus', 'elasticsearch'];
+const dsSupportHistogramSort = ['elasticsearch'];
 
 
 export class HeatmapCtrl extends MetricsPanelCtrl {
 export class HeatmapCtrl extends MetricsPanelCtrl {
   static templateUrl = 'module.html';
   static templateUrl = 'module.html';