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

Heatmap: Fixes Y-axis tick labels being in wrong order for some Prometheus queries
pull/15912/head^2
Torkel Ödegaard 6 years ago committed by GitHub
commit 4ed1fdf754
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 9
      public/app/plugins/datasource/prometheus/result_transformer.ts
  2. 2
      public/app/plugins/panel/heatmap/heatmap_ctrl.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); le1 = parseHistogramLabel(s1.target);
le2 = parseHistogramLabel(s2.metric.le); le2 = parseHistogramLabel(s2.target);
} catch (err) { } catch (err) {
console.log(err); console.log(err);
return 0; return 0;

@ -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';

Loading…
Cancel
Save