67 lines
1.8 KiB
JavaScript
67 lines
1.8 KiB
JavaScript
/** Points **/
|
|
Flotr.addType('points', {
|
|
options: {
|
|
show: false, // => setting to true will show points, false will hide
|
|
radius: 3, // => point radius (pixels)
|
|
lineWidth: 2, // => line width in pixels
|
|
fill: true, // => true to fill the points with a color, false for (transparent) no fill
|
|
fillColor: '#FFFFFF', // => fill color
|
|
fillOpacity: 0.4 // => opacity of color inside the points
|
|
},
|
|
|
|
draw : function (options) {
|
|
var
|
|
context = options.context,
|
|
lineWidth = options.lineWidth,
|
|
shadowSize = options.shadowSize;
|
|
|
|
context.save();
|
|
|
|
if (shadowSize > 0) {
|
|
context.lineWidth = shadowSize / 2;
|
|
|
|
context.strokeStyle = 'rgba(0,0,0,0.1)';
|
|
this.plot(options, shadowSize / 2 + context.lineWidth / 2);
|
|
|
|
context.strokeStyle = 'rgba(0,0,0,0.2)';
|
|
this.plot(options, context.lineWidth / 2);
|
|
}
|
|
|
|
context.lineWidth = options.lineWidth;
|
|
context.strokeStyle = options.color;
|
|
context.fillStyle = options.fillColor || options.color;
|
|
|
|
this.plot(options);
|
|
context.restore();
|
|
},
|
|
|
|
plot : function (options, offset) {
|
|
var
|
|
data = options.data,
|
|
context = options.context,
|
|
xScale = options.xScale,
|
|
yScale = options.yScale,
|
|
i, x, y;
|
|
|
|
for (i = data.length - 1; i > -1; --i) {
|
|
y = data[i][1];
|
|
if (y === null) continue;
|
|
|
|
x = xScale(data[i][0]);
|
|
y = yScale(y);
|
|
|
|
if (x < 0 || x > options.width || y < 0 || y > options.height) continue;
|
|
|
|
context.beginPath();
|
|
if (offset) {
|
|
context.arc(x, y + offset, options.radius, 0, Math.PI, false);
|
|
} else {
|
|
context.arc(x, y, options.radius, 0, 2 * Math.PI, true);
|
|
if (options.fill) context.fill();
|
|
}
|
|
context.stroke();
|
|
context.closePath();
|
|
}
|
|
}
|
|
});
|