diff --git a/public/app/plugins/panel/heatmap/heatmap_ctrl.ts b/public/app/plugins/panel/heatmap/heatmap_ctrl.ts index 3b8d1fa9d41..b564339673f 100644 --- a/public/app/plugins/panel/heatmap/heatmap_ctrl.ts +++ b/public/app/plugins/panel/heatmap/heatmap_ctrl.ts @@ -191,20 +191,14 @@ export class HeatmapCtrl extends MetricsPanelCtrl { yBucketSize = 1; } - let cardsData = convertToCards(bucketsData); - let maxCardsValue = _.max(_.map(cardsData, 'count')); - let minCardsValue = _.min(_.map(cardsData, 'count')); - let cardStats = { - max: maxCardsValue, - min: minCardsValue - }; + let {cards, cardStats} = convertToCards(bucketsData); this.data = { buckets: bucketsData, heatmapStats: heatmapStats, xBucketSize: xBucketSize, yBucketSize: yBucketSize, - cards: cardsData, + cards: cards, cardStats: cardStats }; } diff --git a/public/app/plugins/panel/heatmap/heatmap_data_converter.ts b/public/app/plugins/panel/heatmap/heatmap_data_converter.ts index ef405ea5508..993c32c0fca 100644 --- a/public/app/plugins/panel/heatmap/heatmap_data_converter.ts +++ b/public/app/plugins/panel/heatmap/heatmap_data_converter.ts @@ -51,6 +51,7 @@ function elasticHistogramToHeatmap(seriesList) { * @return {Array} Array of "card" objects */ function convertToCards(buckets) { + let min = 0, max = 0; let cards = []; _.forEach(buckets, xBucket => { _.forEach(xBucket.buckets, yBucket=> { @@ -62,10 +63,19 @@ function convertToCards(buckets) { count: yBucket.count, }; cards.push(card); + + if (cards.length === 1) { + min = yBucket.count; + max = yBucket.count; + } + + min = yBucket.count < min ? yBucket.count : min; + max = yBucket.count > max ? yBucket.count : max; }); }); - return cards; + let cardStats = {min, max}; + return {cards, cardStats}; } /** diff --git a/public/app/plugins/panel/heatmap/specs/renderer_specs.ts b/public/app/plugins/panel/heatmap/specs/renderer_specs.ts index 884ee1e81f4..01d09a84228 100644 --- a/public/app/plugins/panel/heatmap/specs/renderer_specs.ts +++ b/public/app/plugins/panel/heatmap/specs/renderer_specs.ts @@ -114,14 +114,8 @@ describe('grafanaHeatmap', function () { let bucketsData = convertToHeatMap(ctx.series, ctx.data.yBucketSize, ctx.data.xBucketSize, logBase); ctx.data.buckets = bucketsData; - let cardsData = convertToCards(bucketsData); - let maxCardsValue = _.max(_.map(cardsData, 'count')); - let minCardsValue = _.min(_.map(cardsData, 'count')); - let cardStats = { - max: maxCardsValue, - min: minCardsValue - }; - ctx.data.cards = cardsData; + let {cards, cardStats} = convertToCards(bucketsData); + ctx.data.cards = cards; ctx.data.cardStats = cardStats; let elemHtml = `