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