mirror of
https://github.com/chartjs/Chart.js.git
synced 2026-03-06 00:14:03 +01:00
* Element should not have reference to chart * Remove scales from element * Remove deprecated xLabel and yLabel
94 lines
2.1 KiB
JavaScript
94 lines
2.1 KiB
JavaScript
'use strict';
|
|
|
|
var defaults = require('../core/core.defaults');
|
|
var Element = require('../core/core.element');
|
|
var helpers = require('../helpers/index');
|
|
|
|
var valueOrDefault = helpers.valueOrDefault;
|
|
|
|
var defaultColor = defaults.global.defaultColor;
|
|
|
|
defaults._set('global', {
|
|
elements: {
|
|
point: {
|
|
radius: 3,
|
|
pointStyle: 'circle',
|
|
backgroundColor: defaultColor,
|
|
borderColor: defaultColor,
|
|
borderWidth: 1,
|
|
// Hover
|
|
hitRadius: 1,
|
|
hoverRadius: 4,
|
|
hoverBorderWidth: 1
|
|
}
|
|
}
|
|
});
|
|
|
|
function xRange(mouseX) {
|
|
var vm = this._view;
|
|
return vm ? (Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius) : false;
|
|
}
|
|
|
|
function yRange(mouseY) {
|
|
var vm = this._view;
|
|
return vm ? (Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius) : false;
|
|
}
|
|
|
|
module.exports = Element.extend({
|
|
_type: 'point',
|
|
|
|
inRange: function(mouseX, mouseY) {
|
|
var vm = this._view;
|
|
return vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false;
|
|
},
|
|
|
|
inLabelRange: xRange,
|
|
inXRange: xRange,
|
|
inYRange: yRange,
|
|
|
|
getCenterPoint: function() {
|
|
var vm = this._view;
|
|
return {
|
|
x: vm.x,
|
|
y: vm.y
|
|
};
|
|
},
|
|
|
|
getArea: function() {
|
|
return Math.PI * Math.pow(this._view.radius, 2);
|
|
},
|
|
|
|
tooltipPosition: function() {
|
|
var vm = this._view;
|
|
return {
|
|
x: vm.x,
|
|
y: vm.y,
|
|
padding: vm.radius + vm.borderWidth
|
|
};
|
|
},
|
|
|
|
draw: function(chartArea) {
|
|
var vm = this._view;
|
|
var ctx = this._ctx;
|
|
var pointStyle = vm.pointStyle;
|
|
var rotation = vm.rotation;
|
|
var radius = vm.radius;
|
|
var x = vm.x;
|
|
var y = vm.y;
|
|
var globalDefaults = defaults.global;
|
|
var defaultColor = globalDefaults.defaultColor; // eslint-disable-line no-shadow
|
|
|
|
if (vm.skip) {
|
|
return;
|
|
}
|
|
|
|
// Clipping for Points.
|
|
if (chartArea === undefined || helpers.canvas._isPointInArea(vm, chartArea)) {
|
|
ctx.strokeStyle = vm.borderColor || defaultColor;
|
|
ctx.lineWidth = valueOrDefault(vm.borderWidth, globalDefaults.elements.point.borderWidth);
|
|
ctx.fillStyle = vm.backgroundColor || defaultColor;
|
|
helpers.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation);
|
|
}
|
|
}
|
|
});
|