}
};
-var _isNullOrNaN = function(x) {
+DygraphCanvasRenderer.isNullOrNaN_ = function(x) {
return (x === null || isNaN(x));
};
DygraphCanvasRenderer.prototype._drawStyledLine = function(
ctx, i, setName, color, strokeWidth, strokePattern, drawPoints,
drawPointCallback, pointSize) {
+ // TODO(konigsberg): Compute attributes outside this method call.
var stepPlot = this.attr_("stepPlot");
var firstIndexInSet = this.layout.setPointsOffsets[i];
var setLength = this.layout.setPointsLengths[i];
point = points[firstIndexInSet + j];
nextY = (next(j) < setLength) ?
points[firstIndexInSet + next(j)].canvasy : null;
- if (_isNullOrNaN(point.canvasy)) {
+ if (DygraphCanvasRenderer.isNullOrNaN_(point.canvasy)) {
if (stepPlot && prevX !== null) {
// Draw a horizontal line to the start of the missing data
ctx.beginPath();
} else {
// A point is "isolated" if it is non-null but both the previous
// and next points are null.
- var isIsolated = (!prevX && _isNullOrNaN(nextY));
+ var isIsolated = (!prevX && DygraphCanvasRenderer.isNullOrNaN_(nextY));
if (drawGapPoints) {
// Also consider a point to be is "isolated" if it's adjacent to a
// null point, excluding the graph edges.
if ((j > 0 && !prevX) ||
- (next(j) < setLength && _isNullOrNaN(nextY))) {
+ (next(j) < setLength && DygraphCanvasRenderer.isNullOrNaN_(nextY))) {
isIsolated = true;
}
}
for (var j = firstIndexInSet; j < firstIndexInSet + setLength; ++j) {
var point = points[j];
nextY = (j + 1 < firstIndexInSet + setLength) ? points[j + 1].canvasy : null;
- if (_isNullOrNaN(point.canvasy)) {
+ if (DygraphCanvasRenderer.isNullOrNaN_(point.canvasy)) {
prevX = prevY = null;
} else {
- var isIsolated = (!prevX && _isNullOrNaN(nextY));
+ var isIsolated = (!prevX && DygraphCanvasRenderer.isNullOrNaN_(nextY));
if (drawGapPoints) {
// Also consider a point to be is "isolated" if it's adjacent to a
// null point, excluding the graph edges.
if ((j > firstIndexInSet && !prevX) ||
- ((j + 1 < firstIndexInSet + setLength) && _isNullOrNaN(nextY))) {
+ ((j + 1 < firstIndexInSet + setLength) && DygraphCanvasRenderer.isNullOrNaN_(nextY))) {
isIsolated = true;
}
}
var borderWidth = this.dygraph_.attr_("strokeBorderWidth", setName);
var drawPointCallback = this.dygraph_.attr_("drawPointCallback", setName) ||
Dygraph.Circles.DEFAULT;
+
+ // TODO(konigsberg): Turn this into one call, and then consider inlining drawStyledLine.
if (borderWidth && strokeWidth) {
this._drawStyledLine(ctx, i, setName,
this.dygraph_.attr_("strokeBorderColor", setName),