UNPKG

cl-react-graph

Version:
44 lines (39 loc) 1.12 kB
import { ScaleBand } from 'd3-scale'; import get from 'lodash.get'; import { EGroupedBarLayout, IHistogramBar, } from '../Histogram'; export interface IGroupedProps { groupLayout: EGroupedBarLayout, stacked?: boolean; } export const groupedBarsUseSameXAxisValue = ({ groupLayout, stacked }: IGroupedProps): boolean => { return stacked || groupLayout === EGroupedBarLayout.STACKED || groupLayout === EGroupedBarLayout.OVERLAID; }; export const barMargin = (bar: IHistogramBar): number => { const m = get(bar, 'margin', 0); return m >= 0 && m <= 1 ? m : 0.1; }; export const getBarWidth = ( i: number, groupLayout: EGroupedBarLayout, bar: IHistogramBar, innerScaleBand: ScaleBand<string>, ) => { const overlay = (groupLayout === EGroupedBarLayout.OVERLAID) ? i * bar.overlayMargin * 2 : 0; const w = bar.width ? Math.min(bar.width, innerScaleBand.bandwidth()) : innerScaleBand.bandwidth(); return w - overlay; }; export const groupedMargin = (bar: IHistogramBar): number => { const m = get(bar, 'groupMargin', 0.1); return m >= 0 && m <= 1 ? m : 0.1; }