From 07cb622729537f6cccc8f31c7ace06dc2e2ddeff Mon Sep 17 00:00:00 2001 From: Jon Ferreira Date: Wed, 10 Oct 2018 13:06:05 -0400 Subject: [PATCH] Add code to flot that plots any datapoints which to not have neighbors as 0.5 radius points - fixes https://github.com/grafana/grafana/issues/13605 --- public/vendor/flot/jquery.flot.js | 42 +++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/public/vendor/flot/jquery.flot.js b/public/vendor/flot/jquery.flot.js index 8ee09e25c41..38be4dd8681 100644 --- a/public/vendor/flot/jquery.flot.js +++ b/public/vendor/flot/jquery.flot.js @@ -2271,9 +2271,51 @@ Licensed under the MIT license. }); } + function drawOrphanedPoints(series) { + /* Filters series data for points with no neighbors before or after + * and plots single 0.5 radius points for them so that they are displayed. + */ + var abandonedPoints = []; + var beforeX = null; + var afterX = null; + var datapoints = series.datapoints; + // find any points with no neighbors before or after + var emptyPoints = []; + for (var j = 0; j < datapoints.pointsize - 2; j++) { + emptyPoints.push(0); + } + for (var i = 0; i < datapoints.points.length; i += datapoints.pointsize) { + var x = datapoints.points[i], y = datapoints.points[i + 1]; + if (i === datapoints.points.length - datapoints.pointsize) { + afterX = null; + } else { + afterX = datapoints.points[i + datapoints.pointsize]; + } + if (x !== null && y !== null && beforeX === null && afterX === null) { + abandonedPoints.push(x); + abandonedPoints.push(y); + abandonedPoints.push.apply(abandonedPoints, emptyPoints); + } + beforeX = x; + + } + var olddatapoints = datapoints.points + datapoints.points = abandonedPoints; + + series.points.radius = series.lines.lineWidth/2; + // plot the orphan points with a radius of lineWidth/2 + drawSeriesPoints(series); + // reset old info + datapoints.points = olddatapoints; + } + function drawSeries(series) { if (series.lines.show) drawSeriesLines(series); + if (!series.points.show && !series.bars.show) { + // not necessary if user wants points displayed for everything + drawOrphanedPoints(series); + } if (series.bars.show) drawSeriesBars(series); if (series.points.show)