From 9105c2328893e160561f2a23d73b8e241a2d0de7 Mon Sep 17 00:00:00 2001 From: stockiNail Date: Mon, 30 May 2022 12:49:53 +0200 Subject: [PATCH 01/18] Enable the line curve in the line annotation --- src/helpers/helpers.chart.js | 41 +++++++++++ src/helpers/helpers.options.js | 25 +++---- src/types/box.js | 4 +- src/types/label.js | 4 +- src/types/line.js | 122 ++++++++++++++++++++++----------- 5 files changed, 140 insertions(+), 56 deletions(-) diff --git a/src/helpers/helpers.chart.js b/src/helpers/helpers.chart.js index f29086f08..15f20bf53 100644 --- a/src/helpers/helpers.chart.js +++ b/src/helpers/helpers.chart.js @@ -143,6 +143,41 @@ export function resolvePointProperties(chart, options) { } return getChartCircle(chart, options); } +/** + * @param {Chart} chart + * @param {LineAnnotationOptions} options + * @returns {AnnotationBoxModel} + */ +export function resolveLineProperties(chart, options) { + const {scales, chartArea} = chart; + const scale = scales[options.scaleID]; + const area = {x: chartArea.left, y: chartArea.top, x2: chartArea.right, y2: chartArea.bottom}; + let min, max; + + if (scale) { + min = scaleValue(scale, options.value, NaN); + max = scaleValue(scale, options.endValue, min); + if (scale.isHorizontal()) { + area.x = min; + area.x2 = max; + } else { + area.y = min; + area.y2 = max; + } + } else { + const xScale = scales[retrieveScaleID(scales, options, 'xScaleID')]; + const yScale = scales[retrieveScaleID(scales, options, 'yScaleID')]; + + if (xScale) { + applyScaleValueToDimension(area, xScale, {min: options.xMin, max: options.xMax, start: xScale.left, end: xScale.right, startProp: 'x', endProp: 'x2'}); + } + + if (yScale) { + applyScaleValueToDimension(area, yScale, {min: options.yMin, max: options.yMax, start: yScale.bottom, end: yScale.top, startProp: 'y', endProp: 'y2'}); + } + } + return area; +} function getChartCircle(chart, options) { const point = getChartPoint(chart, options); @@ -166,3 +201,9 @@ function getChartDimensionByScale(scale, options) { end: Math.max(result.start, result.end) }; } + +function applyScaleValueToDimension(area, scale, options) { + const dim = getDimensionByScale(scale, options); + area[options.startProp] = dim.start; + area[options.endProp] = dim.end; +} diff --git a/src/helpers/helpers.options.js b/src/helpers/helpers.options.js index b800d02e0..6b56007c7 100644 --- a/src/helpers/helpers.options.js +++ b/src/helpers/helpers.options.js @@ -2,7 +2,8 @@ import {isObject, valueOrDefault, defined} from 'chart.js/helpers'; import {clamp} from './helpers.core'; const isPercentString = (s) => typeof s === 'string' && s.endsWith('%'); -const toPercent = (s) => clamp(parseFloat(s) / 100, 0, 1); +const toPercent = (s) => parseFloat(s) / 100; +const toPositivePercent = (s) => clamp(toPercent(s), 0, 1); /** * @typedef { import('../../types/options').AnnotationPointCoordinates } AnnotationPointCoordinates @@ -13,7 +14,6 @@ const toPercent = (s) => clamp(parseFloat(s) / 100, 0, 1); /** * @param {number} size * @param {number|string} position - * @param {number} to * @returns {number} */ export function getRelativePosition(size, position) { @@ -24,7 +24,7 @@ export function getRelativePosition(size, position) { return size; } if (isPercentString(position)) { - return toPercent(position) * size; + return toPositivePercent(position) * size; } return size / 2; } @@ -32,14 +32,14 @@ export function getRelativePosition(size, position) { /** * @param {number} size * @param {number|string} value - * @param {number} to + * @param {boolean} [positivePercent=true] * @returns {number} */ -export function getSize(size, value) { +export function getSize(size, value, positivePercent = true) { if (typeof value === 'number') { return value; } else if (isPercentString(value)) { - return toPercent(value) * size; + return (positivePercent ? toPositivePercent(value) : toPercent(value)) * size; } return size; } @@ -61,17 +61,18 @@ export function calculateTextAlignment(size, options) { } /** - * @param {LabelPositionObject|string} value - * @returns {LabelPositionObject} + * @param {{x: number|string, y: number|string}|string|number} value + * @param {string|number} defaultValue + * @returns {{x: number|string, y: number|string}} */ -export function toPosition(value) { +export function toPointOption(value, defaultValue) { if (isObject(value)) { return { - x: valueOrDefault(value.x, 'center'), - y: valueOrDefault(value.y, 'center'), + x: valueOrDefault(value.x, defaultValue), + y: valueOrDefault(value.y, defaultValue), }; } - value = valueOrDefault(value, 'center'); + value = valueOrDefault(value, defaultValue); return { x: value, y: value diff --git a/src/types/box.js b/src/types/box.js index 32a726e74..1ce06b314 100644 --- a/src/types/box.js +++ b/src/types/box.js @@ -1,6 +1,6 @@ import {Element} from 'chart.js'; import {toPadding, toRadians} from 'chart.js/helpers'; -import {drawBox, getRelativePosition, measureLabelSize, resolveBoxProperties, toPosition, inBoxRange, rotated, translate, getElementCenterPoint} from '../helpers'; +import {drawBox, getRelativePosition, measureLabelSize, resolveBoxProperties, toPointOption, inBoxRange, rotated, translate, getElementCenterPoint} from '../helpers'; export default class BoxAnnotation extends Element { @@ -148,7 +148,7 @@ function resolveLabelElementProperties(chart, properties, options) { const label = options.label; label.backgroundColor = 'transparent'; label.callout.display = false; - const position = toPosition(label.position); + const position = toPointOption(label.position, 'center'); const padding = toPadding(label.padding); const labelSize = measureLabelSize(chart.ctx, label); const x = calculateX({properties, options}, labelSize, position, padding); diff --git a/src/types/label.js b/src/types/label.js index 169f43d2e..f477ecb52 100644 --- a/src/types/label.js +++ b/src/types/label.js @@ -1,5 +1,5 @@ import {Element} from 'chart.js'; -import {drawBox, drawLabel, measureLabelSize, getChartPoint, toPosition, setBorderStyle, getSize, inBoxRange, isBoundToPoint, resolveBoxProperties, getRelativePosition, translate, rotated, getElementCenterPoint} from '../helpers'; +import {drawBox, drawLabel, measureLabelSize, getChartPoint, toPointOption, setBorderStyle, getSize, inBoxRange, isBoundToPoint, resolveBoxProperties, getRelativePosition, translate, rotated, getElementCenterPoint} from '../helpers'; import {toPadding, toRadians, distanceBetweenPoints} from 'chart.js/helpers'; const positions = ['left', 'bottom', 'top', 'right']; @@ -121,7 +121,7 @@ LabelAnnotation.defaultRoutes = { function measureRect(point, size, options, padding) { const width = size.width + padding.width + options.borderWidth; const height = size.height + padding.height + options.borderWidth; - const position = toPosition(options.position); + const position = toPointOption(options.position, 'center'); const x = calculatePosition(point.x, width, options.xAdjust, position.x); const y = calculatePosition(point.y, height, options.yAdjust, position.y); diff --git a/src/types/line.js b/src/types/line.js index 78504d45f..b0b4fb8a4 100644 --- a/src/types/line.js +++ b/src/types/line.js @@ -1,6 +1,6 @@ import {Element} from 'chart.js'; -import {PI, toRadians, toDegrees, toPadding} from 'chart.js/helpers'; -import {EPSILON, clamp, scaleValue, measureLabelSize, getRelativePosition, setBorderStyle, setShadowStyle, getElementCenterPoint, retrieveScaleID, getDimensionByScale} from '../helpers'; +import {PI, toRadians, toDegrees, toPadding, distanceBetweenPoints} from 'chart.js/helpers'; +import {EPSILON, clamp, measureLabelSize, getRelativePosition, setBorderStyle, setShadowStyle, getElementCenterPoint, toPointOption, getSize, resolveLineProperties} from '../helpers'; const pointInLine = (p1, p2, t) => ({x: p1.x + t * (p2.x - p1.x), y: p1.y + t * (p2.y - p1.y)}); const interpolateX = (y, p1, p2) => pointInLine(p1, p2, Math.abs((y - p1.y) / (p2.y - p1.y))).x; @@ -13,6 +13,14 @@ export default class LineAnnotation extends Element { inRange(mouseX, mouseY, axis, useFinalPosition) { const hBorderWidth = this.options.borderWidth / 2; if (axis !== 'x' && axis !== 'y') { + const path = this.path; + if (path) { + const ctx = this.$context.chart.ctx; + setBorderStyle(ctx, this.options); + const result = ctx.isPointInStroke(path, mouseX, mouseY); + ctx.restore(); + return result; + } const epsilon = sqr(hBorderWidth); const point = {mouseX, mouseY}; return intersects(this, point, epsilon, useFinalPosition) || isOnLabel(this, point, useFinalPosition); @@ -26,7 +34,7 @@ export default class LineAnnotation extends Element { } draw(ctx) { - const {x, y, x2, y2, options} = this; + const {x, y, x2, y2, cp, options} = this; ctx.save(); if (!setBorderStyle(ctx, options)) { @@ -34,10 +42,14 @@ export default class LineAnnotation extends Element { return ctx.restore(); } setShadowStyle(ctx, options); + + if (options.curve && cp) { + drawCurve(ctx, this, cp); + return; + } + const {startOpts, endOpts, startAdjust, endAdjust} = getArrowHeads(this); const angle = Math.atan2(y2 - y, x2 - x); const length = Math.sqrt(Math.pow(x2 - x, 2) + Math.pow(y2 - y, 2)); - const {startOpts, endOpts, startAdjust, endAdjust} = getArrowHeads(this); - ctx.translate(x, y); ctx.rotate(angle); ctx.beginPath(); @@ -55,33 +67,7 @@ export default class LineAnnotation extends Element { } resolveElementProperties(chart, options) { - const {scales, chartArea} = chart; - const scale = scales[options.scaleID]; - const area = {x: chartArea.left, y: chartArea.top, x2: chartArea.right, y2: chartArea.bottom}; - let min, max; - - if (scale) { - min = scaleValue(scale, options.value, NaN); - max = scaleValue(scale, options.endValue, min); - if (scale.isHorizontal()) { - area.x = min; - area.x2 = max; - } else { - area.y = min; - area.y2 = max; - } - } else { - const xScale = scales[retrieveScaleID(scales, options, 'xScaleID')]; - const yScale = scales[retrieveScaleID(scales, options, 'yScaleID')]; - - if (xScale) { - applyScaleValueToDimension(area, xScale, {min: options.xMin, max: options.xMax, start: xScale.left, end: xScale.right, startProp: 'x', endProp: 'x2'}); - } - - if (yScale) { - applyScaleValueToDimension(area, yScale, {min: options.yMin, max: options.yMax, start: yScale.bottom, end: yScale.top, startProp: 'y', endProp: 'y2'}); - } - } + const area = resolveLineProperties(chart, options); const {x, y, x2, y2} = area; const inside = isLineInArea(area, chart.chartArea); const properties = inside @@ -92,6 +78,11 @@ export default class LineAnnotation extends Element { if (!inside) { options.label.display = false; } + if (options.curve) { + const p1 = {x: properties.x, y: properties.y}; + const p2 = {x: properties.x2, y: properties.y2}; + properties.cp = getControlPoint(properties, options, distanceBetweenPoints(p1, p2) / 2); + } properties.elements = [{ type: 'label', optionScope: 'label', @@ -134,6 +125,8 @@ LineAnnotation.defaults = { borderDashOffset: 0, borderShadowColor: 'transparent', borderWidth: 2, + curve: false, + controlPoint: '100%', display: true, endValue: undefined, label: { @@ -206,6 +199,15 @@ LineAnnotation.defaultRoutes = { borderColor: 'color' }; +function getControlPoint(properties, options, distance) { + const {centerX, centerY} = properties; + const cp = toPointOption(options.controlPoint, '100%'); + return { + x: centerX + getSize(distance, cp.x, false), + y: centerY + getSize(distance, cp.y, false) + }; +} + function isLineInArea({x, y, x2, y2}, {top, right, bottom, left}) { return !( (x < left && x2 < left) || @@ -267,12 +269,6 @@ function isOnLabel(element, {mouseX, mouseY}, useFinalPosition, axis) { return label.options.display && label.inRange(mouseX, mouseY, axis, useFinalPosition); } -function applyScaleValueToDimension(area, scale, options) { - const dim = getDimensionByScale(scale, options); - area[options.startProp] = dim.start; - area[options.endProp] = dim.end; -} - function resolveLabelElementProperties(chart, properties, options) { // TODO to remove by another PR to enable callout for line label options.callout.display = false; @@ -296,10 +292,11 @@ function calculateLabelPosition(properties, label, sizes, chartArea) { const {xAdjust, yAdjust} = label; const p1 = {x: properties.x, y: properties.y}; const p2 = {x: properties.x2, y: properties.y2}; - const rotation = label.rotation === 'auto' ? calculateAutoRotation(properties) : toRadians(label.rotation); + const cp = properties.cp; + const rotation = !cp && label.rotation === 'auto' ? calculateAutoRotation(properties) : toRadians(label.rotation); const size = rotatedSize(width, height, rotation); const t = calculateT(properties, label, {labelSize: size, padding}, chartArea); - const pt = pointInLine(p1, p2, t); + const pt = cp ? pointInCurve(p1, cp, p2, t) : pointInLine(p1, p2, t); const xCoordinateSizes = {size: size.w, min: chartArea.left, max: chartArea.right, padding: padding.left}; const yCoordinateSizes = {size: size.h, min: chartArea.top, max: chartArea.bottom, padding: padding.top}; const centerX = adjustLabelCoordinate(pt.x, xCoordinateSizes) + xAdjust; @@ -423,3 +420,48 @@ function drawArrowHead(ctx, offset, adjust, arrowOpts) { } ctx.stroke(); } + +// http://www.independent-software.com/determining-coordinates-on-a-html-canvas-bezier-curve.html +function pointInCurve(start, cp, end, t) { + return { + x: (1 - t) * (1 - t) * start.x + 2 * (1 - t) * t * cp.x + t * t * end.x, + y: (1 - t) * (1 - t) * start.y + 2 * (1 - t) * t * cp.y + t * t * end.y + }; +} + +function angleInCurve(start, cp, end, t) { + const dx = 2 * (1 - t) * (cp.x - start.x) + 2 * t * (end.x - cp.x); + const dy = 2 * (1 - t) * (cp.y - start.y) + 2 * t * (end.y - cp.y); + return -Math.atan2(dx, dy) + 0.5 * PI; +} + +function drawArrowHeadOnCurve(ctx, {x, y}, {angle, adjust}, arrowOpts) { + if (!arrowOpts || !arrowOpts.display) { + return; + } + ctx.save(); + ctx.translate(x, y); + ctx.rotate(angle); + drawArrowHead(ctx, 0, -adjust, arrowOpts); + ctx.restore(); +} + +function drawCurve(ctx, element, cp) { + const {x, y, x2, y2, options} = element; + const {startOpts, endOpts, startAdjust, endAdjust} = getArrowHeads(element); + const p1 = {x, y}; + const p2 = {x: x2, y: y2}; + const startAngle = angleInCurve(p1, cp, p2, 0); + const endAngle = angleInCurve(p1, cp, p2, 1) - PI; + + const path = new Path2D(); + ctx.beginPath(); + path.moveTo(x, y); + path.quadraticCurveTo(cp.x, cp.y, x2, y2); + ctx.shadowColor = options.borderShadowColor; + ctx.stroke(path); + ctx.restore(); + element.path = path; + drawArrowHeadOnCurve(ctx, p1, {angle: startAngle, adjust: startAdjust}, startOpts); + drawArrowHeadOnCurve(ctx, p2, {angle: endAngle, adjust: endAdjust}, endOpts); +} From 40546551a4146ec5789328dbe919e9bee4d71ac0 Mon Sep 17 00:00:00 2001 From: stockiNail Date: Mon, 30 May 2022 15:50:52 +0200 Subject: [PATCH 02/18] fixes some CC issues --- src/types/line.js | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/src/types/line.js b/src/types/line.js index b0b4fb8a4..c884032da 100644 --- a/src/types/line.js +++ b/src/types/line.js @@ -7,6 +7,11 @@ const interpolateX = (y, p1, p2) => pointInLine(p1, p2, Math.abs((y - p1.y) / (p const interpolateY = (x, p1, p2) => pointInLine(p1, p2, Math.abs((x - p1.x) / (p2.x - p1.x))).y; const sqr = v => v * v; const rangeLimit = (mouseX, mouseY, {x, y, x2, y2}, axis) => axis === 'y' ? {start: Math.min(y, y2), end: Math.max(y, y2), value: mouseY} : {start: Math.min(x, x2), end: Math.max(x, x2), value: mouseX}; +// http://www.independent-software.com/determining-coordinates-on-a-html-canvas-bezier-curve.html +const coordInCurve = (start, cp, end, t) => (1 - t) * (1 - t) * start + 2 * (1 - t) * t * cp + t * t * end; +const pointInCurve = (start, cp, end, t) => ({x: coordInCurve(start.x, cp.x, end.x, t), y: coordInCurve(start.y, cp.y, end.y, t)}); +const coordAngleInCurve = (start, cp, end, t) => 2 * (1 - t) * (cp - start) + 2 * t * (end - cp); +const angleInCurve = (start, cp, end, t) => -Math.atan2(coordAngleInCurve(start.x, cp.x, end.x, t), coordAngleInCurve(start.y, cp.y, end.y, t)) + 0.5 * PI; export default class LineAnnotation extends Element { @@ -25,8 +30,7 @@ export default class LineAnnotation extends Element { const point = {mouseX, mouseY}; return intersects(this, point, epsilon, useFinalPosition) || isOnLabel(this, point, useFinalPosition); } - const limit = rangeLimit(mouseX, mouseY, this.getProps(['x', 'y', 'x2', 'y2'], useFinalPosition), axis); - return (limit.value >= limit.start - hBorderWidth && limit.value <= limit.end + hBorderWidth) || isOnLabel(this, {mouseX, mouseY}, useFinalPosition, axis); + return inYorXAxisRange(this, {mouseX, mouseY}, axis, {hBorderWidth, useFinalPosition}); } getCenterPoint(useFinalPosition) { @@ -208,6 +212,11 @@ function getControlPoint(properties, options, distance) { }; } +function inYorXAxisRange(element, {mouseX, mouseY}, axis, {hBorderWidth, useFinalPosition}) { + const limit = rangeLimit(mouseX, mouseY, element.getProps(['x', 'y', 'x2', 'y2'], useFinalPosition), axis); + return (limit.value >= limit.start - hBorderWidth && limit.value <= limit.end + hBorderWidth) || isOnLabel(element, {mouseX, mouseY}, useFinalPosition, axis); +} + function isLineInArea({x, y, x2, y2}, {top, right, bottom, left}) { return !( (x < left && x2 < left) || @@ -421,20 +430,6 @@ function drawArrowHead(ctx, offset, adjust, arrowOpts) { ctx.stroke(); } -// http://www.independent-software.com/determining-coordinates-on-a-html-canvas-bezier-curve.html -function pointInCurve(start, cp, end, t) { - return { - x: (1 - t) * (1 - t) * start.x + 2 * (1 - t) * t * cp.x + t * t * end.x, - y: (1 - t) * (1 - t) * start.y + 2 * (1 - t) * t * cp.y + t * t * end.y - }; -} - -function angleInCurve(start, cp, end, t) { - const dx = 2 * (1 - t) * (cp.x - start.x) + 2 * t * (end.x - cp.x); - const dy = 2 * (1 - t) * (cp.y - start.y) + 2 * t * (end.y - cp.y); - return -Math.atan2(dx, dy) + 0.5 * PI; -} - function drawArrowHeadOnCurve(ctx, {x, y}, {angle, adjust}, arrowOpts) { if (!arrowOpts || !arrowOpts.display) { return; From 45de0484e6824621872e8c1f5fe114ddd8c86245 Mon Sep 17 00:00:00 2001 From: stockiNail Date: Mon, 30 May 2022 16:39:04 +0200 Subject: [PATCH 03/18] changes cp calculation --- src/types/line.js | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/src/types/line.js b/src/types/line.js index c884032da..140f73128 100644 --- a/src/types/line.js +++ b/src/types/line.js @@ -1,6 +1,6 @@ import {Element} from 'chart.js'; import {PI, toRadians, toDegrees, toPadding, distanceBetweenPoints} from 'chart.js/helpers'; -import {EPSILON, clamp, measureLabelSize, getRelativePosition, setBorderStyle, setShadowStyle, getElementCenterPoint, toPointOption, getSize, resolveLineProperties} from '../helpers'; +import {EPSILON, clamp, rotated, measureLabelSize, getRelativePosition, setBorderStyle, setShadowStyle, getElementCenterPoint, toPointOption, getSize, resolveLineProperties} from '../helpers'; const pointInLine = (p1, p2, t) => ({x: p1.x + t * (p2.x - p1.x), y: p1.y + t * (p2.y - p1.y)}); const interpolateX = (y, p1, p2) => pointInLine(p1, p2, Math.abs((y - p1.y) / (p2.y - p1.y))).x; @@ -18,16 +18,16 @@ export default class LineAnnotation extends Element { inRange(mouseX, mouseY, axis, useFinalPosition) { const hBorderWidth = this.options.borderWidth / 2; if (axis !== 'x' && axis !== 'y') { + const point = {mouseX, mouseY}; const path = this.path; if (path) { const ctx = this.$context.chart.ctx; setBorderStyle(ctx, this.options); - const result = ctx.isPointInStroke(path, mouseX, mouseY); + const result = ctx.isPointInStroke(path, mouseX, mouseY) || isOnLabel(this, point, useFinalPosition); ctx.restore(); return result; } const epsilon = sqr(hBorderWidth); - const point = {mouseX, mouseY}; return intersects(this, point, epsilon, useFinalPosition) || isOnLabel(this, point, useFinalPosition); } return inYorXAxisRange(this, {mouseX, mouseY}, axis, {hBorderWidth, useFinalPosition}); @@ -49,7 +49,7 @@ export default class LineAnnotation extends Element { if (options.curve && cp) { drawCurve(ctx, this, cp); - return; + return ctx.restore(); } const {startOpts, endOpts, startAdjust, endAdjust} = getArrowHeads(this); const angle = Math.atan2(y2 - y, x2 - x); @@ -85,7 +85,7 @@ export default class LineAnnotation extends Element { if (options.curve) { const p1 = {x: properties.x, y: properties.y}; const p2 = {x: properties.x2, y: properties.y2}; - properties.cp = getControlPoint(properties, options, distanceBetweenPoints(p1, p2) / 2); + properties.cp = getControlPoint(properties, options, distanceBetweenPoints(p1, p2)); } properties.elements = [{ type: 'label', @@ -130,7 +130,9 @@ LineAnnotation.defaults = { borderShadowColor: 'transparent', borderWidth: 2, curve: false, - controlPoint: '100%', + controlPoint: { + y: '-50%' + }, display: true, endValue: undefined, label: { @@ -203,15 +205,6 @@ LineAnnotation.defaultRoutes = { borderColor: 'color' }; -function getControlPoint(properties, options, distance) { - const {centerX, centerY} = properties; - const cp = toPointOption(options.controlPoint, '100%'); - return { - x: centerX + getSize(distance, cp.x, false), - y: centerY + getSize(distance, cp.y, false) - }; -} - function inYorXAxisRange(element, {mouseX, mouseY}, axis, {hBorderWidth, useFinalPosition}) { const limit = rangeLimit(mouseX, mouseY, element.getProps(['x', 'y', 'x2', 'y2'], useFinalPosition), axis); return (limit.value >= limit.start - hBorderWidth && limit.value <= limit.end + hBorderWidth) || isOnLabel(element, {mouseX, mouseY}, useFinalPosition, axis); @@ -430,6 +423,17 @@ function drawArrowHead(ctx, offset, adjust, arrowOpts) { ctx.stroke(); } +function getControlPoint(properties, options, distance) { + const {x, y, x2, y2, centerX, centerY} = properties; + const angle = Math.atan2(y2 - y, x2 - x); + const cp = toPointOption(options.controlPoint, 0); + const point = { + x: centerX + getSize(distance, cp.x, false), + y: centerY + getSize(distance, cp.y, false) + }; + return rotated(point, {x: centerX, y: centerY}, angle); +} + function drawArrowHeadOnCurve(ctx, {x, y}, {angle, adjust}, arrowOpts) { if (!arrowOpts || !arrowOpts.display) { return; @@ -455,7 +459,6 @@ function drawCurve(ctx, element, cp) { path.quadraticCurveTo(cp.x, cp.y, x2, y2); ctx.shadowColor = options.borderShadowColor; ctx.stroke(path); - ctx.restore(); element.path = path; drawArrowHeadOnCurve(ctx, p1, {angle: startAngle, adjust: startAdjust}, startOpts); drawArrowHeadOnCurve(ctx, p2, {angle: endAngle, adjust: endAdjust}, endOpts); From 77c6872e0e7b713dc9ab47219d6ec685e989f82a Mon Sep 17 00:00:00 2001 From: stockiNail Date: Mon, 30 May 2022 16:49:01 +0200 Subject: [PATCH 04/18] re-enables auto rotation of label on curve --- src/types/line.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/types/line.js b/src/types/line.js index 140f73128..ae2d2d6d0 100644 --- a/src/types/line.js +++ b/src/types/line.js @@ -294,11 +294,10 @@ function calculateLabelPosition(properties, label, sizes, chartArea) { const {xAdjust, yAdjust} = label; const p1 = {x: properties.x, y: properties.y}; const p2 = {x: properties.x2, y: properties.y2}; - const cp = properties.cp; - const rotation = !cp && label.rotation === 'auto' ? calculateAutoRotation(properties) : toRadians(label.rotation); + const rotation = label.rotation === 'auto' ? calculateAutoRotation(properties) : toRadians(label.rotation); const size = rotatedSize(width, height, rotation); const t = calculateT(properties, label, {labelSize: size, padding}, chartArea); - const pt = cp ? pointInCurve(p1, cp, p2, t) : pointInLine(p1, p2, t); + const pt = properties.cp ? pointInCurve(p1, properties.cp, p2, t) : pointInLine(p1, p2, t); const xCoordinateSizes = {size: size.w, min: chartArea.left, max: chartArea.right, padding: padding.left}; const yCoordinateSizes = {size: size.h, min: chartArea.top, max: chartArea.bottom, padding: padding.top}; const centerX = adjustLabelCoordinate(pt.x, xCoordinateSizes) + xAdjust; From f5b7a6ff18b14d3a9f6236e4a1dd0220e8e293d8 Mon Sep 17 00:00:00 2001 From: stockiNail Date: Tue, 31 May 2022 14:27:23 +0200 Subject: [PATCH 05/18] adds test cases --- src/types/line.js | 15 +- test/fixtures/line/curveArrowHeads.js | 215 ++++++++++++++++++ test/fixtures/line/curveArrowHeads.png | Bin 0 -> 60538 bytes test/fixtures/line/curveCPHorizontal.js | 145 ++++++++++++ test/fixtures/line/curveCPHorizontal.png | Bin 0 -> 42722 bytes .../fixtures/line/curveCPHorizontalPercent.js | 145 ++++++++++++ .../line/curveCPHorizontalPercent.png | Bin 0 -> 54186 bytes test/fixtures/line/curveCPVertical.js | 146 ++++++++++++ test/fixtures/line/curveCPVertical.png | Bin 0 -> 67940 bytes test/fixtures/line/curveCPVerticalPercent.js | 145 ++++++++++++ test/fixtures/line/curveCPVerticalPercent.png | Bin 0 -> 68674 bytes test/fixtures/line/curvePosition.js | 127 +++++++++++ test/fixtures/line/curvePosition.png | Bin 0 -> 36041 bytes test/fixtures/line/curvePositionPercent.js | 198 ++++++++++++++++ test/fixtures/line/curvePositionPercent.png | Bin 0 -> 47035 bytes test/index.js | 4 +- test/specs/line.spec.js | 71 ++++++ test/utils.js | 13 ++ 18 files changed, 1217 insertions(+), 7 deletions(-) create mode 100644 test/fixtures/line/curveArrowHeads.js create mode 100644 test/fixtures/line/curveArrowHeads.png create mode 100644 test/fixtures/line/curveCPHorizontal.js create mode 100644 test/fixtures/line/curveCPHorizontal.png create mode 100644 test/fixtures/line/curveCPHorizontalPercent.js create mode 100644 test/fixtures/line/curveCPHorizontalPercent.png create mode 100644 test/fixtures/line/curveCPVertical.js create mode 100644 test/fixtures/line/curveCPVertical.png create mode 100644 test/fixtures/line/curveCPVerticalPercent.js create mode 100644 test/fixtures/line/curveCPVerticalPercent.png create mode 100644 test/fixtures/line/curvePosition.js create mode 100644 test/fixtures/line/curvePosition.png create mode 100644 test/fixtures/line/curvePositionPercent.js create mode 100644 test/fixtures/line/curvePositionPercent.png diff --git a/src/types/line.js b/src/types/line.js index ae2d2d6d0..86f2fd092 100644 --- a/src/types/line.js +++ b/src/types/line.js @@ -19,9 +19,8 @@ export default class LineAnnotation extends Element { const hBorderWidth = this.options.borderWidth / 2; if (axis !== 'x' && axis !== 'y') { const point = {mouseX, mouseY}; - const path = this.path; + const {path, ctx} = this; if (path) { - const ctx = this.$context.chart.ctx; setBorderStyle(ctx, this.options); const result = ctx.isPointInStroke(path, mouseX, mouseY) || isOnLabel(this, point, useFinalPosition); ctx.restore(); @@ -446,19 +445,23 @@ function drawArrowHeadOnCurve(ctx, {x, y}, {angle, adjust}, arrowOpts) { function drawCurve(ctx, element, cp) { const {x, y, x2, y2, options} = element; + const length = Math.sqrt(Math.pow(x2 - x, 2) + Math.pow(y2 - y, 2)); const {startOpts, endOpts, startAdjust, endAdjust} = getArrowHeads(element); const p1 = {x, y}; const p2 = {x: x2, y: y2}; const startAngle = angleInCurve(p1, cp, p2, 0); const endAngle = angleInCurve(p1, cp, p2, 1) - PI; + const ps = pointInCurve(p1, cp, p2, startAdjust / length); + const pe = pointInCurve(p1, cp, p2, 1 - endAdjust / length); const path = new Path2D(); ctx.beginPath(); - path.moveTo(x, y); - path.quadraticCurveTo(cp.x, cp.y, x2, y2); + path.moveTo(ps.x, ps.y); + path.quadraticCurveTo(cp.x, cp.y, pe.x, pe.y); ctx.shadowColor = options.borderShadowColor; ctx.stroke(path); element.path = path; - drawArrowHeadOnCurve(ctx, p1, {angle: startAngle, adjust: startAdjust}, startOpts); - drawArrowHeadOnCurve(ctx, p2, {angle: endAngle, adjust: endAdjust}, endOpts); + element.ctx = ctx; + drawArrowHeadOnCurve(ctx, ps, {angle: startAngle, adjust: startAdjust}, startOpts); + drawArrowHeadOnCurve(ctx, pe, {angle: endAngle, adjust: endAdjust}, endOpts); } diff --git a/test/fixtures/line/curveArrowHeads.js b/test/fixtures/line/curveArrowHeads.js new file mode 100644 index 000000000..aead8ebae --- /dev/null +++ b/test/fixtures/line/curveArrowHeads.js @@ -0,0 +1,215 @@ +module.exports = { + config: { + type: 'scatter', + options: { + layout: { + padding: 20 + }, + scales: { + x: { + display: true, + min: 0, + max: 100, + ticks: { + display: false + } + }, + y: { + display: true, + min: 0, + max: 100, + ticks: { + display: false + } + } + }, + plugins: { + annotation: { + clip: false, + annotations: { + arrow: { + type: 'line', + scaleID: 'y', + value: 0, + endValue: 80, + curve: true, + controlPoint: { + y: -90 + }, + borderWidth: 5, + label: { + rotation: 'auto', + backgroundColor: 'red', + content: 'start: true, end: true', + display: true + }, + arrowHeads: { + start: { + display: true, + length: 30, + width: 15 + }, + end: { + display: true, + length: 30, + width: 15 + } + } + }, + arrow1: { + type: 'line', + xMin: 90, + yMin: 10, + xMax: 80, + yMax: 50, + curve: true, + borderWidth: 5, + label: { + rotation: 'auto', + backgroundColor: 'red', + content: 'start: true', + display: true + }, + arrowHeads: { + start: { + display: true, + length: 30, + width: 15 + }, + } + }, + arrow2: { + type: 'line', + xMin: 30, + yMin: 80, + xMax: 60, + yMax: 85, + curve: true, + borderWidth: 5, + label: { + rotation: 'auto', + backgroundColor: 'red', + content: 'end: true', + display: true + }, + arrowHeads: { + end: { + display: true, + length: 30, + width: 15 + }, + }, + }, + arrow4: { + type: 'line', + xMin: 10, + yMin: 60, + xMax: 30, + yMax: 70, + curve: true, + borderWidth: 5, + label: { + position: '0%', + rotation: 'auto', + backgroundColor: 'red', + content: 'end: width 30', + display: true + }, + arrowHeads: { + end: { + display: true, + length: 40, + width: 30 + }, + }, + }, + arrow5: { + type: 'line', + xMin: 10, + yMin: 30, + xMax: 40, + yMax: 50, + curve: true, + borderWidth: 0, + label: { + rotation: 'auto', + backgroundColor: 'red', + content: 'borderWidth 0', + display: true + }, + arrowHeads: { + start: { + display: true, + length: 15, + width: 5 + }, + end: { + display: true, + length: 15, + width: 5 + } + } + }, + arrow6: { + type: 'line', + xMin: 30, + yMin: 8, + xMax: 70, + yMax: 8, + curve: true, + borderWidth: 1, + label: { + rotation: 'auto', + backgroundColor: 'red', + content: 'horizontal', + display: true + }, + arrowHeads: { + start: { + display: true, + length: 15, + width: 5 + }, + end: { + display: true, + length: 15, + width: 5 + } + } + }, + arrow7: { + type: 'line', + xMin: 10, + yMin: 70, + xMax: 10, + yMax: 98, + curve: true, + borderWidth: 1, + label: { + rotation: 'auto', + backgroundColor: 'red', + content: 'vertical', + display: true + }, + arrowHeads: { + start: { + display: true, + length: 15, + width: 5 + }, + end: { + display: true, + length: 15, + width: 5 + } + } + } + } + } + } + } + }, + options: { + spriteText: true + } +}; diff --git a/test/fixtures/line/curveArrowHeads.png b/test/fixtures/line/curveArrowHeads.png new file mode 100644 index 0000000000000000000000000000000000000000..21cfe6181959fb3f622ec08efefa7110674bab5f GIT binary patch literal 60538 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 LpE52tB!vG5!U^1^ literal 0 HcmV?d00001 diff --git a/test/fixtures/line/curveCPHorizontal.js b/test/fixtures/line/curveCPHorizontal.js new file mode 100644 index 000000000..ebf0a5a13 --- /dev/null +++ b/test/fixtures/line/curveCPHorizontal.js @@ -0,0 +1,145 @@ +module.exports = { + tolerance: 0.0025, + config: { + type: 'scatter', + options: { + scales: { + x: { + display: true, + min: 0, + max: 100 + }, + y: { + display: true, + min: 0, + max: 100 + } + }, + plugins: { + annotation: { + clip: false, + annotations: { + l0: { + type: 'line', + scaleID: 'y', + value: 0, + curve: true, + controlPoint: { + y: -20 + }, + borderColor: 'black', + borderWidth: 5, + label: { + backgroundColor: 'black', + content: 'y: -20', + display: true + } + }, + l1: { + type: 'line', + scaleID: 'y', + value: 10, + curve: true, + controlPoint: { + y: -40 + }, + borderColor: 'black', + borderWidth: 5, + label: { + backgroundColor: 'black', + content: 'y: -40', + display: true + } + }, + l2: { + type: 'line', + scaleID: 'y', + value: 20, + curve: true, + controlPoint: { + x: -250, + y: -60 + }, + borderColor: 'black', + borderWidth: 5, + label: { + backgroundColor: 'black', + content: 'x: -250, y: -60', + display: true + } + }, + l3: { + type: 'line', + scaleID: 'y', + value: 40, + curve: true, + controlPoint: { + x: 250, + y: -60 + }, + borderColor: 'black', + borderWidth: 5, + label: { + backgroundColor: 'black', + content: 'x: 250, y: -60', + display: true + } + }, + l4: { + type: 'line', + scaleID: 'y', + value: 75, + curve: true, + controlPoint: { + x: -250, + y: 60 + }, + borderColor: 'black', + borderWidth: 5, + label: { + backgroundColor: 'black', + content: 'x: -250, y: 60', + display: true + } + }, + l5: { + type: 'line', + scaleID: 'y', + value: 90, + curve: true, + controlPoint: { + y: 60 + }, + borderColor: 'black', + borderWidth: 5, + label: { + backgroundColor: 'black', + content: 'y: 60', + display: true + } + }, + l6: { + type: 'line', + scaleID: 'y', + value: 100, + curve: true, + controlPoint: { + y: 20 + }, + borderColor: 'black', + borderWidth: 5, + label: { + backgroundColor: 'black', + content: 'y: 20', + display: true + } + }, + } + } + } + } + }, + options: { + spriteText: true + } +}; diff --git a/test/fixtures/line/curveCPHorizontal.png b/test/fixtures/line/curveCPHorizontal.png new file mode 100644 index 0000000000000000000000000000000000000000..181a07c199e4710fdc76a6a2e27879d88ecffad9 GIT binary patch literal 42722 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 HZ2tcMFqZm? literal 0 HcmV?d00001 diff --git a/test/fixtures/line/curveCPHorizontalPercent.js b/test/fixtures/line/curveCPHorizontalPercent.js new file mode 100644 index 000000000..ac2536481 --- /dev/null +++ b/test/fixtures/line/curveCPHorizontalPercent.js @@ -0,0 +1,145 @@ +module.exports = { + tolerance: 0.0025, + config: { + type: 'scatter', + options: { + scales: { + x: { + display: true, + min: 0, + max: 100 + }, + y: { + display: true, + min: 0, + max: 100 + } + }, + plugins: { + annotation: { + clip: false, + annotations: { + l0: { + type: 'line', + scaleID: 'y', + value: 0, + curve: true, + controlPoint: { + y: '-10%' + }, + borderColor: 'black', + borderWidth: 5, + label: { + backgroundColor: 'black', + content: 'y: -10%', + display: true + } + }, + l1: { + type: 'line', + scaleID: 'y', + value: 10, + curve: true, + controlPoint: { + y: '-20%' + }, + borderColor: 'black', + borderWidth: 5, + label: { + backgroundColor: 'black', + content: 'y: -20%', + display: true + } + }, + l2: { + type: 'line', + scaleID: 'y', + value: 20, + curve: true, + controlPoint: { + x: '-50%', + y: '-40%' + }, + borderColor: 'black', + borderWidth: 5, + label: { + backgroundColor: 'black', + content: 'x: -50%, y: -40%', + display: true + } + }, + l3: { + type: 'line', + scaleID: 'y', + value: 40, + curve: true, + controlPoint: { + x: '+50%', + y: '-40%' + }, + borderColor: 'black', + borderWidth: 5, + label: { + backgroundColor: 'black', + content: 'x: +50%, y: -40%', + display: true + } + }, + l4: { + type: 'line', + scaleID: 'y', + value: 75, + curve: true, + controlPoint: { + x: '-50%', + y: '40%' + }, + borderColor: 'black', + borderWidth: 5, + label: { + backgroundColor: 'black', + content: 'x: -50%, y: 40%', + display: true + } + }, + l5: { + type: 'line', + scaleID: 'y', + value: 80, + curve: true, + controlPoint: { + y: '20%' + }, + borderColor: 'black', + borderWidth: 5, + label: { + backgroundColor: 'black', + content: 'y: 20%', + display: true + } + }, + l6: { + type: 'line', + scaleID: 'y', + value: 100, + curve: true, + controlPoint: { + y: '40%' + }, + borderColor: 'black', + borderWidth: 5, + label: { + backgroundColor: 'black', + content: 'y: 40%', + display: true + } + }, + } + } + } + } + }, + options: { + spriteText: true + } +}; diff --git a/test/fixtures/line/curveCPHorizontalPercent.png b/test/fixtures/line/curveCPHorizontalPercent.png new file mode 100644 index 0000000000000000000000000000000000000000..136d9e8ae52abd8e517afab1775ebdf81593d5a4 GIT binary patch literal 54186 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

}WFCViplVKx5O7YlnZ)2NrNEognPbeZj=mdkW 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 O{-`NwE7r(chyPyzSWbHY literal 0 HcmV?d00001 diff --git a/test/fixtures/line/curveCPVertical.js b/test/fixtures/line/curveCPVertical.js new file mode 100644 index 000000000..2992b3149 --- /dev/null +++ b/test/fixtures/line/curveCPVertical.js @@ -0,0 +1,146 @@ +module.exports = { + tolerance: 0.0025, + config: { + type: 'scatter', + options: { + scales: { + x: { + display: true, + min: 0, + max: 100 + }, + y: { + display: true, + min: 0, + max: 100 + } + }, + plugins: { + annotation: { + clip: false, + annotations: { + l0: { + type: 'line', + scaleID: 'x', + value: 0, + curve: true, + controlPoint: { + y: -20 + }, + borderColor: 'black', + borderWidth: 5, + label: { + backgroundColor: 'black', + content: 'y: -20', + display: true + } + }, + l1: { + type: 'line', + scaleID: 'x', + value: 10, + curve: true, + controlPoint: { + y: -40 + }, + borderColor: 'black', + borderWidth: 5, + label: { + backgroundColor: 'black', + content: 'y: -40', + position: 'end', + display: true + } + }, + l2: { + type: 'line', + scaleID: 'x', + value: 20, + curve: true, + controlPoint: { + x: -250, + y: -60 + }, + borderColor: 'black', + borderWidth: 5, + label: { + backgroundColor: 'black', + content: 'x: -250, y: -60', + display: true + } + }, + l3: { + type: 'line', + scaleID: 'x', + value: 40, + curve: true, + controlPoint: { + x: 250, + y: -60 + }, + borderColor: 'black', + borderWidth: 5, + label: { + backgroundColor: 'black', + content: 'x: 250, y: -60', + display: true + } + }, + l4: { + type: 'line', + scaleID: 'x', + value: 75, + curve: true, + controlPoint: { + x: -250, + y: 60 + }, + borderColor: 'black', + borderWidth: 5, + label: { + backgroundColor: 'black', + content: 'x: -250, y: 60', + display: true + } + }, + l5: { + type: 'line', + scaleID: 'x', + value: 90, + curve: true, + controlPoint: { + y: 60 + }, + borderColor: 'black', + borderWidth: 5, + label: { + backgroundColor: 'black', + content: 'y: 60', + display: true + } + }, + l6: { + type: 'line', + scaleID: 'x', + value: 100, + curve: true, + controlPoint: { + y: 20 + }, + borderColor: 'black', + borderWidth: 5, + label: { + backgroundColor: 'black', + content: 'y: 20', + display: true + } + }, + } + } + } + } + }, + options: { + spriteText: true + } +}; diff --git a/test/fixtures/line/curveCPVertical.png b/test/fixtures/line/curveCPVertical.png new file mode 100644 index 0000000000000000000000000000000000000000..84105ad5eecbc400d33712f6fa007021f4c4f6e4 GIT binary patch literal 67940 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

TjX1*H9dtUrlfeQE{R}U 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/line/curveCPVerticalPercent.js b/test/fixtures/line/curveCPVerticalPercent.js new file mode 100644 index 000000000..197340875 --- /dev/null +++ b/test/fixtures/line/curveCPVerticalPercent.js @@ -0,0 +1,145 @@ +module.exports = { + tolerance: 0.0025, + config: { + type: 'scatter', + options: { + scales: { + x: { + display: true, + min: 0, + max: 100 + }, + y: { + display: true, + min: 0, + max: 100 + } + }, + plugins: { + annotation: { + clip: false, + annotations: { + l0: { + type: 'line', + scaleID: 'x', + value: 0, + curve: true, + controlPoint: { + y: '-10%' + }, + borderColor: 'black', + borderWidth: 5, + label: { + backgroundColor: 'black', + content: 'y: -10%', + display: true + } + }, + l1: { + type: 'line', + scaleID: 'x', + value: 10, + curve: true, + controlPoint: { + y: '-20%' + }, + borderColor: 'black', + borderWidth: 5, + label: { + backgroundColor: 'black', + content: 'y: -40%', + display: true + } + }, + l2: { + type: 'line', + scaleID: 'x', + value: 20, + curve: true, + controlPoint: { + x: '-50%', + y: '-40%' + }, + borderColor: 'black', + borderWidth: 5, + label: { + backgroundColor: 'black', + content: 'x: -50%, y: -40%', + display: true + } + }, + l3: { + type: 'line', + scaleID: 'x', + value: 40, + curve: true, + controlPoint: { + x: '+50%', + y: '-40%' + }, + borderColor: 'black', + borderWidth: 5, + label: { + backgroundColor: 'black', + content: 'x: +50%, y: -40%', + display: true + } + }, + l4: { + type: 'line', + scaleID: 'x', + value: 75, + curve: true, + controlPoint: { + x: '-50%', + y: '40%' + }, + borderColor: 'black', + borderWidth: 5, + label: { + backgroundColor: 'black', + content: 'x: -50%, y: 40%', + display: true + } + }, + l5: { + type: 'line', + scaleID: 'x', + value: 80, + curve: true, + controlPoint: { + y: '20%' + }, + borderColor: 'black', + borderWidth: 5, + label: { + backgroundColor: 'black', + content: 'y: 20%', + display: true + } + }, + l6: { + type: 'line', + scaleID: 'x', + value: 100, + curve: true, + controlPoint: { + y: '40%' + }, + borderColor: 'black', + borderWidth: 5, + label: { + backgroundColor: 'black', + content: 'y: 40%', + display: true + } + }, + } + } + } + } + }, + options: { + spriteText: true + } +}; diff --git a/test/fixtures/line/curveCPVerticalPercent.png b/test/fixtures/line/curveCPVerticalPercent.png new file mode 100644 index 0000000000000000000000000000000000000000..676b89f7fe8f9e2a44241f35a8f5e83c6d1bbdba GIT binary patch literal 68674 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 O3oNfLS0!Wm@&5o{lJH>w literal 0 HcmV?d00001 diff --git a/test/fixtures/line/curvePosition.js b/test/fixtures/line/curvePosition.js new file mode 100644 index 000000000..f5c84ebd3 --- /dev/null +++ b/test/fixtures/line/curvePosition.js @@ -0,0 +1,127 @@ +module.exports = { + config: { + type: 'scatter', + options: { + scales: { + x: { + display: false, + min: 0, + max: 100 + }, + y: { + display: false, + min: 0, + max: 100 + } + }, + plugins: { + annotation: { + annotations: { + left: { + type: 'line', + scaleID: 'y', + value: 25, + curve: true, + controlPoint: { + y: -90 + }, + borderColor: 'black', + borderWidth: 5, + label: { + position: 'start', + backgroundColor: 'black', + content: 'start', + display: true, + z: 1 + }, + }, + hCenter: { + type: 'line', + scaleID: 'y', + value: 50, + curve: true, + controlPoint: { + y: -90 + }, + borderColor: 'black', + borderWidth: 5, + label: { + position: 'center', + backgroundColor: 'black', + content: 'center', + display: true, + z: 1 + }, + }, + right: { + type: 'line', + scaleID: 'y', + value: 75, + curve: true, + controlPoint: { + y: -90 + }, + borderColor: 'black', + borderWidth: 5, + label: { + position: 'end', + backgroundColor: 'black', + content: 'end', + display: true, + z: 1 + }, + }, + top: { + type: 'line', + scaleID: 'x', + value: 15, + curve: true, + borderColor: 'red', + borderWidth: 5, + label: { + position: 'start', + backgroundColor: 'red', + content: 'start', + display: true, + z: 1 + } + }, + vCenter: { + type: 'line', + scaleID: 'x', + value: 25, + curve: true, + borderColor: 'red', + borderWidth: 5, + label: { + position: 'center', + backgroundColor: 'red', + content: 'center', + display: true, + z: 1 + } + }, + bottom: { + type: 'line', + scaleID: 'x', + value: 35, + curve: true, + borderColor: 'red', + borderWidth: 5, + label: { + position: 'end', + backgroundColor: 'red', + content: 'end', + display: true, + z: 1 + } + } + } + } + } + } + }, + options: { + spriteText: true + } +}; diff --git a/test/fixtures/line/curvePosition.png b/test/fixtures/line/curvePosition.png new file mode 100644 index 0000000000000000000000000000000000000000..8e997dd3bbe228ae60bf5c5c086d078eee91b3f5 GIT binary patch literal 36041 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 P2z)6ksLPkjnT7rz5P1s# literal 0 HcmV?d00001 diff --git a/test/index.js b/test/index.js index 47a0dcd4c..f857d2732 100644 --- a/test/index.js +++ b/test/index.js @@ -1,6 +1,6 @@ import {acquireChart, addMatchers, releaseCharts, specsFromFixtures, triggerMouseEvent, afterEvent} from 'chartjs-test-utils'; import {testEvents, eventPoint0, getCenterPoint} from './events'; -import {createCanvas, getAnnotationElements, scatterChart, stringifyObject, interactionData} from './utils'; +import {createCanvas, getAnnotationElements, scatterChart, stringifyObject, interactionData, getQuadraticXY, getQuadraticAngle} from './utils'; import * as helpers from '../src/helpers'; window.helpers = helpers; @@ -16,6 +16,8 @@ window.getAnnotationElements = getAnnotationElements; window.scatterChart = scatterChart; window.stringifyObject = stringifyObject; window.interactionData = interactionData; +window.getQuadraticXY = getQuadraticXY; +window.getQuadraticAngle = getQuadraticAngle; jasmine.fixtures = specsFromFixtures; diff --git a/test/specs/line.spec.js b/test/specs/line.spec.js index 4e5ea0ee7..e66a3937a 100644 --- a/test/specs/line.spec.js +++ b/test/specs/line.spec.js @@ -220,4 +220,75 @@ describe('Line annotation', function() { }); }); + describe('curve inRange', function() { + const rotated = window.helpers.rotated; + const getQuadraticXY = window.getQuadraticXY; + const getQuadraticAngle = window.getQuadraticAngle; + + const annotation1 = { + type: 'line', + scaleID: 'y', + value: 2, + curve: true, + borderWidth: 10 + }; + const annotation2 = { + type: 'line', + scaleID: 'x', + value: 8, + curve: true, + borderWidth: 5 + }; + const annotation3 = { + type: 'line', + scaleID: 'x', + value: 8, + curve: true, + borderWidth: 1 + }; + const annotation4 = { + type: 'line', + scaleID: 'x', + value: 8, + curve: true, + borderWidth: 0.5 + }; + + const chart = window.scatterChart(10, 10, {annotation1, annotation2, annotation3, annotation4}); + const elems = window.getAnnotationElements(chart); + const EPSILON = 0.05; + + elems.forEach(function(element) { + const cp = element.cp; + it('should return true inside element', function() { + const halfBorder = element.options.borderWidth / 2; + for (let t = 0.1; t <= 0.9; t += 0.1) { + const point = getQuadraticXY(t, element.x, element.y, cp.x, cp.y, element.x2, element.y2); + const angle = getQuadraticAngle(t, element.x, element.y, cp.x, cp.y, element.x2, element.y2); + for (const bw of [-halfBorder + EPSILON, halfBorder - EPSILON]) { + const x = point.x + bw; + const y = point.y + bw; + const rotP = rotated({x, y}, point, angle); + expect(element.inRange(rotP.x, rotP.y)).withContext(`scaleID: ${element.options.scaleID}, value: ${element.options.value}, tension: ${t}, {x: ${x.toFixed(1)}, y: ${y.toFixed(1)}}`).toEqual(true); + } + } + }); + + it('should return false outside element', function() { + const halfBorder = element.options.borderWidth / 2 + 1; + for (let t = 0.1; t <= 0.9; t += 0.1) { + const point = getQuadraticXY(t, element.x, element.y, cp.x, cp.y, element.x2, element.y2); + const angle = getQuadraticAngle(t, element.x, element.y, cp.x, cp.y, element.x2, element.y2); + for (const bw of [-halfBorder + EPSILON, halfBorder - EPSILON]) { + const x = point.x + bw; + const y = point.y + bw; + const rotP = rotated({x, y}, point, angle); + expect(element.inRange(rotP.x, rotP.y)).withContext(`scaleID: ${element.options.scaleID}, value: ${element.options.value}, halfBorderWidth: ${bw}, {x: ${x.toFixed(1)}, y: ${y.toFixed(1)}}`).toEqual(false); + } + } + }); + + }); + }); + }); diff --git a/test/utils.js b/test/utils.js index bc1ac5e99..2e2148d09 100644 --- a/test/utils.js +++ b/test/utils.js @@ -1,3 +1,16 @@ +export function getQuadraticXY(t, sx, sy, cp1x, cp1y, ex, ey) { + return { + x: (1 - t) * (1 - t) * sx + 2 * (1 - t) * t * cp1x + t * t * ex, + y: (1 - t) * (1 - t) * sy + 2 * (1 - t) * t * cp1y + t * t * ey + }; +} + +export function getQuadraticAngle(t, sx, sy, cp1x, cp1y, ex, ey) { + var dx = 2 * (1 - t) * (cp1x - sx) + 2 * t * (ex - cp1x); + var dy = 2 * (1 - t) * (cp1y - sy) + 2 * t * (ey - cp1y); + return -Math.atan2(dx, dy) + 0.5 * Math.PI; +} + export function createCanvas() { const canvas = document.createElement('canvas'); canvas.width = 230; From f4b1b6e67668d03f0c148bbd1b5235b0e90c3e51 Mon Sep 17 00:00:00 2001 From: stockiNail Date: Tue, 31 May 2022 14:32:26 +0200 Subject: [PATCH 06/18] fixes duplicated code --- src/types/line.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/types/line.js b/src/types/line.js index 86f2fd092..4a0971013 100644 --- a/src/types/line.js +++ b/src/types/line.js @@ -46,13 +46,13 @@ export default class LineAnnotation extends Element { } setShadowStyle(ctx, options); + const length = Math.sqrt(Math.pow(x2 - x, 2) + Math.pow(y2 - y, 2)); if (options.curve && cp) { - drawCurve(ctx, this, cp); + drawCurve(ctx, this, cp, length); return ctx.restore(); } const {startOpts, endOpts, startAdjust, endAdjust} = getArrowHeads(this); const angle = Math.atan2(y2 - y, x2 - x); - const length = Math.sqrt(Math.pow(x2 - x, 2) + Math.pow(y2 - y, 2)); ctx.translate(x, y); ctx.rotate(angle); ctx.beginPath(); @@ -443,9 +443,8 @@ function drawArrowHeadOnCurve(ctx, {x, y}, {angle, adjust}, arrowOpts) { ctx.restore(); } -function drawCurve(ctx, element, cp) { +function drawCurve(ctx, element, cp, length) { const {x, y, x2, y2, options} = element; - const length = Math.sqrt(Math.pow(x2 - x, 2) + Math.pow(y2 - y, 2)); const {startOpts, endOpts, startAdjust, endAdjust} = getArrowHeads(element); const p1 = {x, y}; const p2 = {x: x2, y: y2}; From 0111aca4c028a3508eef716f7423071cb803df28 Mon Sep 17 00:00:00 2001 From: stockiNail Date: Tue, 31 May 2022 15:59:09 +0200 Subject: [PATCH 07/18] adds types --- types/options.d.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/types/options.d.ts b/types/options.d.ts index fc55257d7..c72aed0bc 100644 --- a/types/options.d.ts +++ b/types/options.d.ts @@ -74,8 +74,15 @@ export interface ArrowHeadsOptions extends ArrowHeadOptions{ start?: ArrowHeadOptions, } +export interface ControlPointOptions { + x?: Scriptable, + y?: Scriptable, +} + export interface LineAnnotationOptions extends CoreAnnotationOptions, AnnotationCoordinates { arrowHeads?: ArrowHeadsOptions, + curve?: Scriptable, + controlPoint?: Scriptable, label?: LabelOptions } From 38158584ef835bd36b0778279fc31acd4abad925 Mon Sep 17 00:00:00 2001 From: stockiNail Date: Tue, 31 May 2022 16:17:32 +0200 Subject: [PATCH 08/18] adds doc --- docs/guide/types/line.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/guide/types/line.md b/docs/guide/types/line.md index 6afb0479d..0d3ca47cb 100644 --- a/docs/guide/types/line.md +++ b/docs/guide/types/line.md @@ -54,6 +54,8 @@ The following options are available for line annotations. | ---- | ---- | :----: | ---- | [`arrowHeads`](#arrow-heads) | `{start: object, end:object}` | Yes | | [`borderWidth`](#styling) | `number` | Yes | `2` +| [`controlPoint`](#general) | `number` \| `string` \| `{x: number | string, y: number | string}` | Yes | `{y:'-50%'}` +| [`curve`](#general) | `boolean` | Yes | `false` | [`endValue`](#positioning) | `number` | Yes | `undefined` | [`label`](#label) | `object` | Yes | | [`scaleID`](#positioning) | `string` | Yes | `undefined` @@ -81,6 +83,8 @@ If `scaleID` is unset, then `xScaleID` and `yScaleID` are used to draw a line fr | Name | Description | ---- | ---- | `adjustScaleRange` | Should the scale range be adjusted if this annotation is out of range. +| `controlPoint` | if `curve` is enabled, it configures the control point to drawn the curve, calculated in pixels. It can be set by a string in percentage format `'number%'` which are representing the percentage of the distance between the start and end point from the center. +| `curve` | Whether or not a quadratic [Bézier curve](https://developer.mozilla.org/en-US/docs/Glossary/Bezier_curve) is drawn. | `display` | Whether or not this annotation is visible. | `drawTime` | See [drawTime](../options#draw-time). | `endValue` | End two of the line when a single scale is specified. From 862afd8926bdf3aec66f181282d1352bf87a3be0 Mon Sep 17 00:00:00 2001 From: stockiNail Date: Tue, 31 May 2022 16:32:29 +0200 Subject: [PATCH 09/18] adds sample --- docs/.vuepress/config.js | 1 + docs/samples/line/curve.md | 78 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+) create mode 100644 docs/samples/line/curve.md diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js index a8b4c6116..3c9467b34 100644 --- a/docs/.vuepress/config.js +++ b/docs/.vuepress/config.js @@ -142,6 +142,7 @@ module.exports = { title: 'Line annotations', children: [ 'line/basic', + 'line/curve', 'line/lowerUpper', 'line/limited', 'line/average', diff --git a/docs/samples/line/curve.md b/docs/samples/line/curve.md new file mode 100644 index 000000000..b182d30e3 --- /dev/null +++ b/docs/samples/line/curve.md @@ -0,0 +1,78 @@ +# Curve + +```js chart-editor +// +const DATA_COUNT = 8; +const MIN = 10; +const MAX = 100; + +Utils.srand(8); + +const labels = []; +for (let i = 0; i < DATA_COUNT; ++i) { + labels.push('' + i); +} + +const numberCfg = {count: DATA_COUNT, min: MIN, max: MAX}; + +const data = { + labels: labels, + datasets: [{ + data: Utils.numbers(numberCfg) + }] +}; +// + +// +const annotation = { + type: 'line', + borderColor: 'black', + borderWidth: 3, + xScaleID: 'x', + yScaleID: 'y', + xMin: 1, + xMax: 6, + yMin: ({chart}) => chart.data.datasets[0].data[1] / 2, + yMax: ({chart}) => chart.data.datasets[0].data[6] / 2, + curve: true, + arrowHeads: { + end: { + display: true + } + } +}; +// + +/* */ +const config = { + type: 'bar', + data, + options: { + plugins: { + annotation: { + annotations: { + annotation + } + } + } + } +}; +/* */ + +const actions = [ + { + name: 'Randomize', + handler: function(chart) { + chart.data.datasets.forEach(function(dataset, i) { + dataset.data = dataset.data.map(() => Utils.rand(MIN, MAX)); + }); + chart.update(); + } + } +]; + +module.exports = { + actions: actions, + config: config +}; +``` From 7eaadd9b1ff357b82ac95ff5dbeba845cf192cf6 Mon Sep 17 00:00:00 2001 From: stockiNail Date: Tue, 31 May 2022 16:53:53 +0200 Subject: [PATCH 10/18] fixes CC issue of complexity --- src/helpers/helpers.chart.js | 47 +++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/src/helpers/helpers.chart.js b/src/helpers/helpers.chart.js index 15f20bf53..aa1163a35 100644 --- a/src/helpers/helpers.chart.js +++ b/src/helpers/helpers.chart.js @@ -152,29 +152,11 @@ export function resolveLineProperties(chart, options) { const {scales, chartArea} = chart; const scale = scales[options.scaleID]; const area = {x: chartArea.left, y: chartArea.top, x2: chartArea.right, y2: chartArea.bottom}; - let min, max; if (scale) { - min = scaleValue(scale, options.value, NaN); - max = scaleValue(scale, options.endValue, min); - if (scale.isHorizontal()) { - area.x = min; - area.x2 = max; - } else { - area.y = min; - area.y2 = max; - } + resolveFullLineProperties(scale, area, options); } else { - const xScale = scales[retrieveScaleID(scales, options, 'xScaleID')]; - const yScale = scales[retrieveScaleID(scales, options, 'yScaleID')]; - - if (xScale) { - applyScaleValueToDimension(area, xScale, {min: options.xMin, max: options.xMax, start: xScale.left, end: xScale.right, startProp: 'x', endProp: 'x2'}); - } - - if (yScale) { - applyScaleValueToDimension(area, yScale, {min: options.yMin, max: options.yMax, start: yScale.bottom, end: yScale.top, startProp: 'y', endProp: 'y2'}); - } + resolveLimitedLineProperties(scales, area, options); } return area; } @@ -207,3 +189,28 @@ function applyScaleValueToDimension(area, scale, options) { area[options.startProp] = dim.start; area[options.endProp] = dim.end; } + +function resolveFullLineProperties(scale, area, options) { + const min = scaleValue(scale, options.value, NaN); + const max = scaleValue(scale, options.endValue, min); + if (scale.isHorizontal()) { + area.x = min; + area.x2 = max; + } else { + area.y = min; + area.y2 = max; + } +} + +function resolveLimitedLineProperties(scales, area, options) { + const xScale = scales[retrieveScaleID(scales, options, 'xScaleID')]; + const yScale = scales[retrieveScaleID(scales, options, 'yScaleID')]; + + if (xScale) { + applyScaleValueToDimension(area, xScale, {min: options.xMin, max: options.xMax, start: xScale.left, end: xScale.right, startProp: 'x', endProp: 'x2'}); + } + + if (yScale) { + applyScaleValueToDimension(area, yScale, {min: options.yMin, max: options.yMax, start: yScale.bottom, end: yScale.top, startProp: 'y', endProp: 'y2'}); + } +} From 7433433267cbc63a8ab0ee9bc95dc571787c3956 Mon Sep 17 00:00:00 2001 From: stockiNail Date: Tue, 31 May 2022 17:09:22 +0200 Subject: [PATCH 11/18] adds import of ts type for doc --- src/helpers/helpers.chart.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/helpers/helpers.chart.js b/src/helpers/helpers.chart.js index aa1163a35..ae289d897 100644 --- a/src/helpers/helpers.chart.js +++ b/src/helpers/helpers.chart.js @@ -7,6 +7,7 @@ import {isBoundToPoint} from './helpers.options'; * @typedef { import("chart.js").Point } Point * @typedef { import('../../types/element').AnnotationBoxModel } AnnotationBoxModel * @typedef { import('../../types/options').CoreAnnotationOptions } CoreAnnotationOptions + * @typedef { import('../../types/options').LineAnnotationOptions } LineAnnotationOptions * @typedef { import('../../types/options').PointAnnotationOptions } PointAnnotationOptions * @typedef { import('../../types/options').PolygonAnnotationOptions } PolygonAnnotationOptions */ From 321f83ef2ccc6ac7bd8a2115b38b0ff6b12f2355 Mon Sep 17 00:00:00 2001 From: stockiNail Date: Tue, 31 May 2022 17:25:19 +0200 Subject: [PATCH 12/18] removes CC issues --- src/helpers/helpers.chart.js | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/src/helpers/helpers.chart.js b/src/helpers/helpers.chart.js index ae289d897..62e3e2475 100644 --- a/src/helpers/helpers.chart.js +++ b/src/helpers/helpers.chart.js @@ -1,6 +1,11 @@ import {isFinite} from 'chart.js/helpers'; import {isBoundToPoint} from './helpers.options'; +const limitedLineScale = { + xScaleID: {min: 'xMin', max: 'xMax', start: 'left', end: 'right', startProp: 'x', endProp: 'x2'}, + yScaleID: {min: 'yMin', max: 'yMax', start: 'bottom', end: 'top', startProp: 'y', endProp: 'y2'} +}; + /** * @typedef { import("chart.js").Chart } Chart * @typedef { import("chart.js").Scale } Scale @@ -185,12 +190,6 @@ function getChartDimensionByScale(scale, options) { }; } -function applyScaleValueToDimension(area, scale, options) { - const dim = getDimensionByScale(scale, options); - area[options.startProp] = dim.start; - area[options.endProp] = dim.end; -} - function resolveFullLineProperties(scale, area, options) { const min = scaleValue(scale, options.value, NaN); const max = scaleValue(scale, options.endValue, min); @@ -204,14 +203,13 @@ function resolveFullLineProperties(scale, area, options) { } function resolveLimitedLineProperties(scales, area, options) { - const xScale = scales[retrieveScaleID(scales, options, 'xScaleID')]; - const yScale = scales[retrieveScaleID(scales, options, 'yScaleID')]; - - if (xScale) { - applyScaleValueToDimension(area, xScale, {min: options.xMin, max: options.xMax, start: xScale.left, end: xScale.right, startProp: 'x', endProp: 'x2'}); - } - - if (yScale) { - applyScaleValueToDimension(area, yScale, {min: options.yMin, max: options.yMax, start: yScale.bottom, end: yScale.top, startProp: 'y', endProp: 'y2'}); + for (const scaleId of Object.keys(limitedLineScale)) { + const scale = scales[retrieveScaleID(scales, options, scaleId)]; + if (scale) { + const {min, max, start, end, startProp, endProp} = limitedLineScale[scaleId]; + const dim = getDimensionByScale(scale, {min: options[min], max: options[max], start: scale[start], end: scale[end]}); + area[startProp] = dim.start; + area[endProp] = dim.end; + } } } From 962ee4be6485b9964677f981d89a276f7aed0de7 Mon Sep 17 00:00:00 2001 From: stockiNail Date: Mon, 6 Jun 2022 12:07:18 +0200 Subject: [PATCH 13/18] Add element diagrams to the annotation types guide --- docs/guide/types/box.md | 8 ++++++++ docs/guide/types/ellipse.md | 6 ++++++ docs/guide/types/label.md | 6 ++++++ docs/guide/types/line.md | 8 ++++++++ docs/guide/types/point.md | 6 ++++++ docs/guide/types/polygon.md | 6 ++++++ 6 files changed, 40 insertions(+) diff --git a/docs/guide/types/box.md b/docs/guide/types/box.md index 021f88ec2..9c6a16408 100644 --- a/docs/guide/types/box.md +++ b/docs/guide/types/box.md @@ -138,3 +138,11 @@ A position can be set in 2 different values types: If this value is a string (possible options are `'start'`, `'center'`, `'end'` or a string in percentage format), it is applied to vertical and horizontal position in the box. If this value is an object, the `x` property defines the horizontal alignment in the box. Similarly, the `y` property defines the vertical alignment in the box. Possible options for both properties are `'start'`, `'center'`, `'end'`, a string in percentage format. Omitted property have value of the default, `'center'`. + +## Element + +The following diagram is showing the element properties about a `'box'` annotation: + +![box](../../img/elementBoxProps.png) + +The label of a box annotation is described as a [label annotation](./label#element) and accessible by `element.label`. diff --git a/docs/guide/types/ellipse.md b/docs/guide/types/ellipse.md index f78b081a1..4ead77c7c 100644 --- a/docs/guide/types/ellipse.md +++ b/docs/guide/types/ellipse.md @@ -91,3 +91,9 @@ If one of the axes does not match an axis in the chart, the ellipse will take th | `shadowBlur` | The amount of blur applied to shadow. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/shadowBlur). | `shadowOffsetX` | The distance that shadow will be offset horizontally. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/shadowOffsetX). | `shadowOffsetY` | The distance that shadow will be offset vertically. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/shadowOffsetY). + +## Element + +The following diagram is showing the element properties about a `'ellipse'` annotation: + +![ellipse](../../img/elementEllipseProps.png) diff --git a/docs/guide/types/label.md b/docs/guide/types/label.md index 8ab09f698..e02af9ebc 100644 --- a/docs/guide/types/label.md +++ b/docs/guide/types/label.md @@ -217,3 +217,9 @@ All of these options can be [Scriptable](../options#scriptable-options). | `position` | `string` | `'auto'` | The position of callout, with respect to the label. Could be `left`, `top`, `right`, `bottom` or `auto`. | `side` | `number` | `5` | Width of the starter line of callout pointer. | `start` | `number`\|`string` | `'50%'` | The percentage of the separator dimension to use as starting point for callout pointer. Could be set in pixel by a number, or in percentage of the separator dimension by a string. + +## Element + +The following diagram is showing the element properties about a `'label'` annotation: + +![label](../../img/elementLabelProps.png) diff --git a/docs/guide/types/line.md b/docs/guide/types/line.md index 6afb0479d..ea55e8534 100644 --- a/docs/guide/types/line.md +++ b/docs/guide/types/line.md @@ -184,3 +184,11 @@ All of these options can be [Scriptable](../options#scriptable-options) | `shadowOffsetX` | `number` | `lineAnnotation.shadowOffsetX` | The distance that shadow, of the arrow head, will be offset horizontally. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/shadowOffsetX). | `shadowOffsetY` | `number` | `lineAnnotation.shadowOffsetY` | The distance that shadow, of the arrow head, will be offset vertically. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/shadowOffsetY). | `width` | `number` | `6` | The width of the arrow head in pixels. + +## Element + +The following diagram is showing the element properties about a `'line'` annotation: + +![line](../../img/elementLineProps.png) + +The label of a box annotation is described as a [label annotation](./label#element) and accessible by `element.label`. diff --git a/docs/guide/types/point.md b/docs/guide/types/point.md index 84063d2de..9f29a42a0 100644 --- a/docs/guide/types/point.md +++ b/docs/guide/types/point.md @@ -103,3 +103,9 @@ The 4 coordinates, xMin, xMax, yMin, yMax are optional. If not specified, the bo | `shadowBlur` | The amount of blur applied to shadow. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/shadowBlur). | `shadowOffsetX` | The distance that shadow will be offset horizontally. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/shadowOffsetX). | `shadowOffsetY` | The distance that shadow will be offset vertically. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/shadowOffsetY). + +## Element + +The following diagram is showing the element properties about a `'point'` annotation: + +![point](../../img/elementPointProps.png) diff --git a/docs/guide/types/polygon.md b/docs/guide/types/polygon.md index fd9afb368..6476ae141 100644 --- a/docs/guide/types/polygon.md +++ b/docs/guide/types/polygon.md @@ -165,3 +165,9 @@ module.exports = { config }; ``` + +## Element + +The following diagram is showing the element properties about a `'polygon'` annotation: + +![polygon](../../img/elementPolygonProps.png) From 58f916176bf73a1245f0a7bc783729bf90e9a587 Mon Sep 17 00:00:00 2001 From: stockiNail Date: Wed, 28 Sep 2022 22:45:34 +0200 Subject: [PATCH 14/18] Update src/helpers/helpers.options.js Co-authored-by: Jukka Kurkela --- src/helpers/helpers.options.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/helpers/helpers.options.js b/src/helpers/helpers.options.js index 6b56007c7..768488e06 100644 --- a/src/helpers/helpers.options.js +++ b/src/helpers/helpers.options.js @@ -65,7 +65,7 @@ export function calculateTextAlignment(size, options) { * @param {string|number} defaultValue * @returns {{x: number|string, y: number|string}} */ -export function toPointOption(value, defaultValue) { +export function toPosition(value, defaultValue = 'center') { if (isObject(value)) { return { x: valueOrDefault(value.x, defaultValue), From 62d672cd72b200fba2cd70301122a6abc1c96ec5 Mon Sep 17 00:00:00 2001 From: stockiNail Date: Wed, 28 Sep 2022 22:45:52 +0200 Subject: [PATCH 15/18] Update src/types/line.js Co-authored-by: Jukka Kurkela --- src/types/line.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/types/line.js b/src/types/line.js index f1d180eb4..53178f32f 100644 --- a/src/types/line.js +++ b/src/types/line.js @@ -206,7 +206,7 @@ LineAnnotation.defaultRoutes = { borderColor: 'color' }; -function inYorXAxisRange(element, {mouseX, mouseY}, axis, {hBorderWidth, useFinalPosition}) { +function inAxisRange(element, {mouseX, mouseY}, axis, {hBorderWidth, useFinalPosition}) { const limit = rangeLimit(mouseX, mouseY, element.getProps(['x', 'y', 'x2', 'y2'], useFinalPosition), axis); return (limit.value >= limit.start - hBorderWidth && limit.value <= limit.end + hBorderWidth) || isOnLabel(element, {mouseX, mouseY}, useFinalPosition, axis); } From b67631c237571e325540b53942956243ffc846ad Mon Sep 17 00:00:00 2001 From: stockiNail Date: Wed, 28 Sep 2022 22:54:01 +0200 Subject: [PATCH 16/18] apply review --- src/types/box.js | 4 ++-- src/types/label.js | 4 ++-- src/types/line.js | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/types/box.js b/src/types/box.js index ed98bf6e7..93dbd28f8 100644 --- a/src/types/box.js +++ b/src/types/box.js @@ -1,6 +1,6 @@ import {Element} from 'chart.js'; import {toPadding, toRadians} from 'chart.js/helpers'; -import {drawBox, getRelativePosition, measureLabelSize, resolveBoxProperties, toPointOption, inBoxRange, rotated, translate, getElementCenterPoint} from '../helpers'; +import {drawBox, getRelativePosition, measureLabelSize, resolveBoxProperties, toPosition, inBoxRange, rotated, translate, getElementCenterPoint} from '../helpers'; export default class BoxAnnotation extends Element { @@ -134,7 +134,7 @@ function resolveLabelElementProperties(chart, properties, options) { const label = options.label; label.backgroundColor = 'transparent'; label.callout.display = false; - const position = toPointOption(label.position, 'center'); + const position = toPosition(label.position, 'center'); const padding = toPadding(label.padding); const labelSize = measureLabelSize(chart.ctx, label); const x = calculateX({properties, options}, labelSize, position, padding); diff --git a/src/types/label.js b/src/types/label.js index 42719e487..e5ffc2cfa 100644 --- a/src/types/label.js +++ b/src/types/label.js @@ -1,5 +1,5 @@ import {Element} from 'chart.js'; -import {drawBox, drawLabel, measureLabelSize, getChartPoint, toPointOption, setBorderStyle, getSize, inBoxRange, isBoundToPoint, resolveBoxProperties, getRelativePosition, translate, rotated, getElementCenterPoint} from '../helpers'; +import {drawBox, drawLabel, measureLabelSize, getChartPoint, toPosition, setBorderStyle, getSize, inBoxRange, isBoundToPoint, resolveBoxProperties, getRelativePosition, translate, rotated, getElementCenterPoint} from '../helpers'; import {toPadding, toRadians, distanceBetweenPoints, defined} from 'chart.js/helpers'; const positions = ['left', 'bottom', 'top', 'right']; @@ -116,7 +116,7 @@ LabelAnnotation.defaultRoutes = { function measureRect(point, size, options, padding) { const width = size.width + padding.width + options.borderWidth; const height = size.height + padding.height + options.borderWidth; - const position = toPointOption(options.position, 'center'); + const position = toPosition(options.position, 'center'); const x = calculatePosition(point.x, width, options.xAdjust, position.x); const y = calculatePosition(point.y, height, options.yAdjust, position.y); diff --git a/src/types/line.js b/src/types/line.js index 53178f32f..e392f4bdc 100644 --- a/src/types/line.js +++ b/src/types/line.js @@ -1,6 +1,6 @@ import {Element} from 'chart.js'; import {PI, toRadians, toDegrees, toPadding, distanceBetweenPoints} from 'chart.js/helpers'; -import {EPSILON, clamp, rotated, measureLabelSize, getRelativePosition, setBorderStyle, setShadowStyle, getElementCenterPoint, toPointOption, getSize, resolveLineProperties} from '../helpers'; +import {EPSILON, clamp, rotated, measureLabelSize, getRelativePosition, setBorderStyle, setShadowStyle, getElementCenterPoint, toPosition, getSize, resolveLineProperties} from '../helpers'; const pointInLine = (p1, p2, t) => ({x: p1.x + t * (p2.x - p1.x), y: p1.y + t * (p2.y - p1.y)}); const interpolateX = (y, p1, p2) => pointInLine(p1, p2, Math.abs((y - p1.y) / (p2.y - p1.y))).x; @@ -29,7 +29,7 @@ export default class LineAnnotation extends Element { const epsilon = sqr(hBorderWidth); return intersects(this, point, epsilon, useFinalPosition) || isOnLabel(this, point, useFinalPosition); } - return inYorXAxisRange(this, {mouseX, mouseY}, axis, {hBorderWidth, useFinalPosition}); + return inAxisRange(this, {mouseX, mouseY}, axis, {hBorderWidth, useFinalPosition}); } getCenterPoint(useFinalPosition) { @@ -426,7 +426,7 @@ function drawArrowHead(ctx, offset, adjust, arrowOpts) { function getControlPoint(properties, options, distance) { const {x, y, x2, y2, centerX, centerY} = properties; const angle = Math.atan2(y2 - y, x2 - x); - const cp = toPointOption(options.controlPoint, 0); + const cp = toPosition(options.controlPoint, 0); const point = { x: centerX + getSize(distance, cp.x, false), y: centerY + getSize(distance, cp.y, false) From fcfc9ae429a7974e70c664a0f013116caddca557 Mon Sep 17 00:00:00 2001 From: stockiNail Date: Thu, 29 Sep 2022 15:30:23 +0200 Subject: [PATCH 17/18] fixes event location with different devicePixelradio --- src/types/line.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/types/line.js b/src/types/line.js index fe1022ae0..f0eb7843d 100644 --- a/src/types/line.js +++ b/src/types/line.js @@ -23,7 +23,9 @@ export default class LineAnnotation extends Element { const {path, ctx} = this; if (path) { setBorderStyle(ctx, this.options); - const result = ctx.isPointInStroke(path, mouseX, mouseY) || isOnLabel(this, point, useFinalPosition); + const mx = mouseX * window.devicePixelRatio; + const my = mouseY * window.devicePixelRatio; + const result = ctx.isPointInStroke(path, mx, my) || isOnLabel(this, point, useFinalPosition); ctx.restore(); return result; } From f718cf451800691520090796acada4dc0d5688c8 Mon Sep 17 00:00:00 2001 From: stockiNail Date: Fri, 30 Sep 2022 14:26:43 +0200 Subject: [PATCH 18/18] uses chart.currentDevicePixelRatio --- src/types/line.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/types/line.js b/src/types/line.js index f0eb7843d..4a6f96318 100644 --- a/src/types/line.js +++ b/src/types/line.js @@ -23,8 +23,9 @@ export default class LineAnnotation extends Element { const {path, ctx} = this; if (path) { setBorderStyle(ctx, this.options); - const mx = mouseX * window.devicePixelRatio; - const my = mouseY * window.devicePixelRatio; + const {chart} = this.$context; + const mx = mouseX * chart.currentDevicePixelRatio; + const my = mouseY * chart.currentDevicePixelRatio; const result = ctx.isPointInStroke(path, mx, my) || isOnLabel(this, point, useFinalPosition); ctx.restore(); return result;