From c79a68dcd173395859b56b29ca35eba46a6f6037 Mon Sep 17 00:00:00 2001 From: Alexander Zobnin Date: Mon, 31 Jul 2017 18:15:03 +0300 Subject: [PATCH] heatmap: refactor, build cards before rendering --- public/app/plugins/panel/heatmap/heatmap_ctrl.ts | 14 ++++++++++++-- public/app/plugins/panel/heatmap/rendering.ts | 6 +++--- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/public/app/plugins/panel/heatmap/heatmap_ctrl.ts b/public/app/plugins/panel/heatmap/heatmap_ctrl.ts index 37aa9410ea8..03bb46a104f 100644 --- a/public/app/plugins/panel/heatmap/heatmap_ctrl.ts +++ b/public/app/plugins/panel/heatmap/heatmap_ctrl.ts @@ -7,7 +7,7 @@ import TimeSeries from 'app/core/time_series'; import {axesEditor} from './axes_editor'; import {heatmapDisplayEditor} from './display_editor'; import rendering from './rendering'; -import { convertToHeatMap, elasticHistogramToHeatmap, calculateBucketSize, getMinLog} from './heatmap_data_converter'; +import {convertToHeatMap, convertToCards, elasticHistogramToHeatmap, calculateBucketSize, getMinLog} from './heatmap_data_converter'; let X_BUCKET_NUMBER_DEFAULT = 30; let Y_BUCKET_NUMBER_DEFAULT = 10; @@ -188,11 +188,21 @@ 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 + }; + this.data = { buckets: bucketsData, heatmapStats: heatmapStats, xBucketSize: xBucketSize, - yBucketSize: yBucketSize + yBucketSize: yBucketSize, + cards: cardsData, + cardStats: cardStats }; } diff --git a/public/app/plugins/panel/heatmap/rendering.ts b/public/app/plugins/panel/heatmap/rendering.ts index 74b433653f1..8d85186b78e 100644 --- a/public/app/plugins/panel/heatmap/rendering.ts +++ b/public/app/plugins/panel/heatmap/rendering.ts @@ -8,7 +8,7 @@ import {appEvents, contextSrv} from 'app/core/core'; import {tickStep, getScaledDecimals, getFlotTickSize} from 'app/core/utils/ticks'; import d3 from 'd3'; import {HeatmapTooltip} from './heatmap_tooltip'; -import {convertToCards, mergeZeroBuckets} from './heatmap_data_converter'; +import {mergeZeroBuckets} from './heatmap_data_converter'; let MIN_CARD_SIZE = 1, CARD_PADDING = 1, @@ -384,8 +384,8 @@ export default function link(scope, elem, attrs, ctrl) { data.buckets = mergeZeroBuckets(data.buckets, _.min(tick_values)); } - let cardsData = convertToCards(data.buckets); - let maxValueAuto = d3.max(cardsData, card => card.count); + let cardsData = data.cards; + let maxValueAuto = data.cardStats.max; let maxValue = panel.color.max || maxValueAuto; let minValue = panel.color.min || 0;