packages/website/storybook/barseries-story.js (170 lines of code) (raw):

/* eslint-env node */ import React from 'react'; import {storiesOf} from '@storybook/react'; import { withKnobs, color, number, object, text } from '@storybook/addon-knobs/react'; import {HorizontalBarSeries, VerticalBarSeries} from 'react-vis'; import {generateLinearData, intRandom, random} from './storybook-data.js'; import {chooseColorScale, SimpleChartWrapper} from './storybook-utils.js'; function addBarSeriesStory(isVertical = true) { const seriesName = isVertical ? 'VerticalBarSeries' : 'HorizontalBarSeries'; const Series = isVertical ? VerticalBarSeries : HorizontalBarSeries; function styledSeries(props) { return ( <Series color={color('color', props.color || null, 'style')} data={props.data} fill={(color('fill', props.fill || '#12939a'), 'style')} opacity={number( 'opacity', props.opacity || 1, {max: 1, min: 0, range: true, step: 0.01}, 'style' )} stroke={color('stroke', props.stroke || '#12939a', 'style')} style={object('style', props.style || {}, 'style')} /> ); } const xyPlotParams = isVertical ? {} : {xDomain: [0, 20], yDomain: [0, 8]}; function dataGenerator(params) { return generateLinearData({...params, flipXY: !isVertical}); } storiesOf(`Series/${seriesName}/Base`, module) .addDecorator(withKnobs) .addWithJSX(`single ${seriesName}`, () => { return ( <SimpleChartWrapper {...xyPlotParams}> <Series data={dataGenerator({nbPoints: 8, changeRatio: 0.4, key: 'bar1'})} /> </SimpleChartWrapper> ); }) .addWithJSX(`multiple ${seriesName} - clustered`, () => { return ( <SimpleChartWrapper {...xyPlotParams}> <Series data={dataGenerator({nbPoints: 8, changeRatio: 0.4, key: 'bar1'})} /> <Series data={dataGenerator({nbPoints: 8, changeRatio: 0.4, key: 'bar2'})} /> <Series data={dataGenerator({nbPoints: 8, changeRatio: 0.4, key: 'bar3'})} /> </SimpleChartWrapper> ); }) .addWithJSX(`multiple ${seriesName} - stacked`, () => { return ( <SimpleChartWrapper {...(isVertical ? { stackBy: 'y', xDomain: [0, 8], yDomain: [0, 50] } : { stackBy: 'x', xDomain: [0, 50], yDomain: [0, 8] })} > <Series cluster={text('BarSeries.1.cluster', 'stack 1')} data={dataGenerator({nbPoints: 8, changeRatio: 0.4, key: 'bar1'})} /> <Series cluster={text('BarSeries.2.cluster', 'stack 1')} data={dataGenerator({nbPoints: 8, changeRatio: 0.4, key: 'bar2'})} /> <Series cluster={text('BarSeries.3.cluster', 'stack 1')} data={dataGenerator({nbPoints: 8, changeRatio: 0.4, key: 'bar3'})} /> </SimpleChartWrapper> ); }); storiesOf(`Series/${seriesName}/Styling/By datapoint`, module) .addDecorator(withKnobs) .addWithJSX('color', () => { const {colorScale, colorRange} = chooseColorScale(); return ( <SimpleChartWrapper {...xyPlotParams} colorScale={colorScale} colorRange={colorRange} > <Series data={dataGenerator({ nbPoints: 8, changeRatio: 0.4, extraParams: [['color', intRandom({})]], key: 'bar-color-1' })} /> </SimpleChartWrapper> ); }) .addWithJSX('opacity', () => { return ( <SimpleChartWrapper {...xyPlotParams}> <Series data={dataGenerator({ nbPoints: 8, changeRatio: 0.4, extraParams: [['opacity', random({min: 0.5, max: 1})]], key: 'bar-opacity-1' })} /> </SimpleChartWrapper> ); }); storiesOf(`Series/${seriesName}/Styling/At series level`, module) .addDecorator(withKnobs) .addWithJSX('fill', () => { return ( <SimpleChartWrapper {...xyPlotParams}> {styledSeries({ data: dataGenerator({nbPoints: 8, changeRatio: 0.4, key: 'bar1'}), fill: '#2c51be' })} </SimpleChartWrapper> ); }) .addWithJSX('opacity', () => { return ( <SimpleChartWrapper {...xyPlotParams}> {styledSeries({ data: dataGenerator({nbPoints: 8, changeRatio: 0.4, key: 'bar1'}), opacity: 0.5 })} </SimpleChartWrapper> ); }) .addWithJSX('stroke', () => { return ( <SimpleChartWrapper {...xyPlotParams}> {styledSeries({ data: dataGenerator({nbPoints: 8, changeRatio: 0.4, key: 'bar1'}), stroke: '#2c51be' })} </SimpleChartWrapper> ); }) .addWithJSX('style', () => { return ( <SimpleChartWrapper {...xyPlotParams}> {styledSeries({ data: dataGenerator({nbPoints: 8, changeRatio: 0.4, key: 'bar1'}), style: { stroke: '#2c51be', strokeWidth: '3px' } })} </SimpleChartWrapper> ); }); } addBarSeriesStory(); addBarSeriesStory(false);