billboard.js
Version:
Re-usable easy interface JavaScript chart library, based on D3 v4+
55 lines (52 loc) • 1.96 kB
JavaScript
/*!
* Copyright (c) 2017 ~ present NAVER Corp.
* billboard.js project is licensed under the MIT license
*
* billboard.js, JavaScript chart library
* https://naver.github.io/billboard.js/
*
* @version 4.0.1
*/
import { getRenderRect, getCandlestickGeometry } from '../ChartInternal/shape/core/geometry.js';
import { isFiniteCanvasCoordinate } from './util.js';
/**
* Copyright (c) 2017 ~ present NAVER Corp.
* billboard.js project is licensed under the MIT license
*/
/**
* Get drawable canvas bar geometry from common SVG shape points.
* @param {object} $$ ChartInternal instance
* @param {function} getPoints Shape point resolver
* @param {object} d Data row
* @param {number} index Data index
* @returns {object|null} Drawable bar geometry
* @private
*/
function getCanvasBarGeometry($$, getPoints, d, index) {
const points = getPoints(d, index);
const rect = getRenderRect($$, points);
return isFiniteCanvasCoordinate(rect.x, rect.y) &&
isFiniteCanvasCoordinate(rect.x + rect.w, rect.y + rect.h) ?
{ points, rect } :
null;
}
/**
* Get drawable canvas candlestick geometry from common SVG shape points.
* @param {object} $$ ChartInternal instance
* @param {function} getPoints Shape point resolver
* @param {object} d Data row
* @param {number} index Data index
* @returns {object|null} Drawable candlestick geometry
* @private
*/
function getCanvasCandlestickGeometry($$, getPoints, d, index) {
const points = getPoints(d, index);
const { body, wickStart, wickEnd } = getCandlestickGeometry($$, points);
return isFiniteCanvasCoordinate(body.x, body.y) &&
isFiniteCanvasCoordinate(body.x + body.w, body.y + body.h) &&
isFiniteCanvasCoordinate(wickStart[0], wickStart[1]) &&
isFiniteCanvasCoordinate(wickEnd[0], wickEnd[1]) ?
{ body, points, wickStart, wickEnd } :
null;
}
export { getCanvasBarGeometry, getCanvasCandlestickGeometry };