heatmap: add heatmap_ctrl tests and fix errors

This commit is contained in:
Alexander Zobnin 2017-03-27 19:04:29 +03:00
parent 0a56db7745
commit c9801595e5
5 changed files with 53 additions and 4 deletions

View File

@ -103,6 +103,7 @@ export class HeatmapCtrl extends MetricsPanelCtrl {
data: any;
series: any;
timeSrv: any;
dataWarning: any;
constructor($scope, $injector, private $rootScope, timeSrv) {
super($scope, $injector);
@ -187,6 +188,29 @@ export class HeatmapCtrl extends MetricsPanelCtrl {
onDataReceived(dataList) {
this.series = dataList.map(this.seriesHandler.bind(this));
this.dataWarning = null;
const datapointsCount = _.reduce(this.series, (sum, series) => {
return sum + series.datapoints.length;
}, 0);
if (datapointsCount === 0) {
this.dataWarning = {
title: 'No data points',
tip: 'No datapoints returned from data query'
};
} else {
for (let series of this.series) {
if (series.isOutsideRange) {
this.dataWarning = {
title: 'Data points outside time range',
tip: 'Can be caused by timezone mismatch or missing time filter in query',
};
break;
}
}
}
this.render();
}
@ -196,13 +220,23 @@ export class HeatmapCtrl extends MetricsPanelCtrl {
}
seriesHandler(seriesData) {
var series = new TimeSeries({
let series = new TimeSeries({
datapoints: seriesData.datapoints,
alias: seriesData.target
});
series.flotpairs = series.getFlotPairs(this.panel.nullPointMode);
series.minLog = getMinLog(series);
let datapoints = seriesData.datapoints || [];
if (datapoints && datapoints.length > 0) {
let last = datapoints[datapoints.length - 1][1];
let from = this.range.from;
if (last - from < -10000) {
series.isOutsideRange = true;
}
}
return series;
}

View File

@ -33,6 +33,8 @@ export class HeatmapTooltip {
}
onMouseOver(e) {
if (!this.panel.tooltip.show || _.isEmpty(this.scope.ctrl.data.buckets)) { return; }
if (!this.tooltip) {
this.add();
this.move(e);

View File

@ -1,5 +1,10 @@
<div class="heatmap-wrapper">
<div class="heatmap-canvas-wrapper">
<div class="datapoints-warning" ng-if="ctrl.dataWarning">
<span class="small" bs-tooltip="ctrl.dataWarning.tip">{{ctrl.dataWarning.title}}</span>
</div>
<div class="heatmap-panel" ng-dblclick="ctrl.zoomOut()"></div>
</div>
<!-- <div class="graph-legend-wrapper" ng-if="ctrl.panel.legend.show" heatmap-legend></div> -->

View File

@ -761,13 +761,19 @@ export default function link(scope, elem, attrs, ctrl) {
}
function render() {
if (!ctrl.data || _.isEmpty(ctrl.data.buckets)) { return; }
data = ctrl.data;
panel = ctrl.panel;
timeRange = ctrl.range;
if (setElementHeight()) {
// Draw default axes and return if no data
if (!data || _.isEmpty(data.buckets)) {
addHeatmapCanvas();
addAxes();
return;
}
addHeatmap();
scope.yScale = yScale;
scope.xScale = xScale;

View File

@ -1,9 +1,11 @@
.heatmap-canvas-wrapper {
position: relative;
// position: relative;
cursor: crosshair;
}
.heatmap-panel {
position: relative;
.axis .tick {
text {
fill: $text-color;