import DatasetController from '../core/core.datasetController';
import {
- clipArea, unclipArea, _arrayUnique, isArray, isNullOrUndef,
+ _arrayUnique, isArray, isNullOrUndef,
valueOrDefault, resolveObjectKey, sign, defined
} from '../helpers';
}
}
+ /**
+ * @return {number|boolean}
+ * @protected
+ */
+ getMaxOverflow() {
+ return 0;
+ }
+
/**
* @protected
*/
draw() {
const me = this;
- const chart = me.chart;
const meta = me._cachedMeta;
const vScale = meta.vScale;
const rects = meta.data;
const ilen = rects.length;
let i = 0;
- clipArea(chart.ctx, chart.chartArea);
-
for (; i < ilen; ++i) {
if (me.getParsed(i)[vScale.axis] !== null) {
rects[i].draw(me._ctx);
}
}
-
- unclipArea(chart.ctx);
}
}
const me = this;
const ctx = me.ctx;
const clip = meta._clip;
+ const useClip = !clip.disabled;
const area = me.chartArea;
const args = {
meta,
return;
}
- clipArea(ctx, {
- left: clip.left === false ? 0 : area.left - clip.left,
- right: clip.right === false ? me.width : area.right + clip.right,
- top: clip.top === false ? 0 : area.top - clip.top,
- bottom: clip.bottom === false ? me.height : area.bottom + clip.bottom
- });
+ if (useClip) {
+ clipArea(ctx, {
+ left: clip.left === false ? 0 : area.left - clip.left,
+ right: clip.right === false ? me.width : area.right + clip.right,
+ top: clip.top === false ? 0 : area.top - clip.top,
+ bottom: clip.bottom === false ? me.height : area.bottom + clip.bottom
+ });
+ }
meta.controller.draw();
- unclipArea(ctx);
+ if (useClip) {
+ unclipArea(ctx);
+ }
args.cancelable = false;
me.notifyPlugins('afterDatasetDraw', args);
top: t,
right: r,
bottom: b,
- left: l
+ left: l,
+ disabled: value === false
};
}
expect(chart.scales.y.getMinMax()).toEqual({min: -10, max: 10});
});
});
+
+ describe('clip', function() {
+ it('Should not use ctx.clip when clip=false', function() {
+ var ctx = window.createMockContext();
+ ctx.resetTransform = function() {};
+
+ var chart = window.acquireChart({
+ type: 'bar',
+ data: {
+ labels: ['a', 'b', 'c'],
+ datasets: [{
+ data: [1, 2, 3],
+ clip: false
+ }]
+ }
+ });
+ var orig = chart.ctx;
+
+ // Draw on mock context
+ chart.ctx = ctx;
+ chart.draw();
+
+ chart.ctx = orig;
+
+ expect(ctx.getCalls().filter(x => x.name === 'clip').length).toEqual(0);
+ });
+ });
});