var dataset = this.chart.data.datasets[arc._datasetIndex];
var index = arc._index;
- arc._model.backgroundColor = arc.custom && arc.custom.hoverBackgroundColor ? arc.custom.hoverBackgroundColor : helpers.getValueAtIndexOrDefault(dataset.hoverBackgroundColor, index, helpers.color(arc._model.backgroundColor).saturate(0.5).darken(0.1).rgbString());
+ arc._model.backgroundColor = arc.custom && arc.custom.hoverBackgroundColor ? arc.custom.hoverBackgroundColor : helpers.getValueAtIndexOrDefault(dataset.hoverBackgroundColor, index, helpers.getHoverBackgroundColor(arc._model.backgroundColor));
arc._model.borderColor = arc.custom && arc.custom.hoverBorderColor ? arc.custom.hoverBorderColor : helpers.getValueAtIndexOrDefault(dataset.hoverBorderColor, index, helpers.color(arc._model.borderColor).saturate(0.5).darken(0.1).rgbString());
arc._model.borderWidth = arc.custom && arc.custom.hoverBorderWidth ? arc.custom.hoverBorderWidth : helpers.getValueAtIndexOrDefault(dataset.hoverBorderWidth, index, arc._model.borderWidth);
},
fn.apply(_tArg, args);
}
};
-
+ helpers.getHoverBackgroundColor = function(backgroundColor) {
+ return (backgroundColor instanceof CanvasPattern) ?
+ backgroundColor :
+ helpers.color(backgroundColor).saturate(0.5).darken(0.1).rgbString();
+ };
};
});
});
+ describe('Background canvas hover helper', function() {
+ it('should return a CanvasPattern backgroundColor when called with a CanvasPattern', function(done) {
+ var dots = new Image();
+ dots.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAMAAAAolt3jAAAAD1BMVEUAAAD///////////////+PQt5oAAAABXRSTlMAHlFhZsfk/BEAAAAqSURBVHgBY2BgZGJmYmSAAUYWEIDzmcBcJhiXGcxlRpPFrhdmMiqgvX0AcGIBEUAo6UAAAAAASUVORK5CYII=';
+ dots.onload = function() {
+ var chartContext = document.createElement('canvas').getContext('2d');
+ var patternCanvas = document.createElement('canvas');
+ var patternContext = patternCanvas.getContext('2d');
+ var pattern = patternContext.createPattern(dots, 'repeat');
+ patternContext.fillStyle = pattern;
+
+ var backgroundColor = helpers.getHoverBackgroundColor(chartContext.createPattern(patternCanvas, 'repeat'));
+
+ expect(backgroundColor instanceof CanvasPattern).toBe(true);
+
+ done();
+ }
+ });
+
+ it('should return a modified version of backgroundColor when called with a color', function() {
+ var originalColorRGB = 'rgb(70, 191, 189)';
+
+ expect(helpers.getHoverBackgroundColor('#46BFBD')).not.toEqual(originalColorRGB);
+ });
+ });
});