UNPKG

@d3fc/d3fc-series

Version:

A collection of components for rendering data series to SVG and canvas, including line, bar, OHLC, candlestick and more

53 lines (45 loc) 1.53 kB
import { rebindAll, exclude } from '@d3fc/d3fc-rebind'; import multiSeries from './multi'; import line from './line'; export default () => { let orient = 'vertical'; let series = () => line(); const multi = multiSeries(); let seriesCache = []; const repeat = (data) => { if (orient === 'vertical') { const previousSeriesCache = seriesCache; seriesCache = data[0].map((d, i) => i < previousSeriesCache.length ? previousSeriesCache[i] : series()); multi.series(seriesCache) .mapping((data, index) => data.map(d => d[index])); } else { const previousSeriesCache = seriesCache; seriesCache = data.map((d, i) => i < previousSeriesCache.length ? previousSeriesCache[i] : series()); multi.series(seriesCache) .mapping((data, index) => data[index]); } multi(data); }; repeat.series = (...args) => { if (!args.length) { return series; } if (typeof args[0].xScale === 'function' && typeof args[0].yScale === 'function') { series = () => args[0]; } else { series = args[0]; } seriesCache = []; return repeat; }; repeat.orient = (...args) => { if (!args.length) { return orient; } orient = args[0]; seriesCache = []; return repeat; }; rebindAll(repeat, multi, exclude('series', 'mapping')); return repeat; };