packages/website/storybook/lineseries-story.js (169 lines of code) (raw):

/* eslint-env node */ import React from 'react'; import {storiesOf} from '@storybook/react'; import { withKnobs, color, number, object, select, text } from '@storybook/addon-knobs/react'; import {LineSeries} from 'react-vis'; import {generateLinearData, nonUniformX} from './storybook-data.js'; import {SimpleChartWrapper} from './storybook-utils.js'; function styledLineSeries(props) { return ( <LineSeries data={props.data} opacity={number( 'opacity', props.opacity || 1, {max: 1, min: 0, range: true, step: 0.01}, 'style' )} stroke={color('stroke', props.stroke || '#12939a', 'style')} strokeDasharray={text( 'strokeDasharray', props.strokeDasharray || '', 'style' )} strokeStyle={select( 'strokeStyle', {solid: 'solid', dashed: 'dashed'}, props.strokeStyle || 'solid', 'style' )} strokeWidth={text('strokeWidth', props.strokeWidth || '', 'style')} style={object('style', props.style || {}, 'style')} /> ); } storiesOf('Series/LineSeries/Base', module) .addDecorator(withKnobs) .addWithJSX('Single Line chart', () => { return ( <SimpleChartWrapper> <LineSeries data={generateLinearData({key: 'line1'})} /> </SimpleChartWrapper> ); }) .addWithJSX('With negative numbers', () => { return ( <SimpleChartWrapper yDomain={[-3, 3]}> <LineSeries data={generateLinearData({startValue: 0, key: 'line-neg'})} /> </SimpleChartWrapper> ); }) .addWithJSX('With non-uniform x numbers', () => { return ( <SimpleChartWrapper> <LineSeries data={generateLinearData({ key: 'line-random-x', extraParams: [['x', nonUniformX()]] })} /> </SimpleChartWrapper> ); }) .addWithJSX('Multiple Line series', () => { return ( <SimpleChartWrapper> <LineSeries data={generateLinearData({key: 'line1'})} /> <LineSeries data={generateLinearData({key: 'line2'})} /> <LineSeries data={generateLinearData({key: 'line3'})} /> </SimpleChartWrapper> ); }); storiesOf('Series/LineSeries/Styling', module) .addDecorator(withKnobs) .addWithJSX('opacity', () => { return ( <SimpleChartWrapper> {styledLineSeries({ data: generateLinearData({key: 'line1'}), opacity: 0.5 })} </SimpleChartWrapper> ); }) .addWithJSX('stroke', () => { return ( <SimpleChartWrapper> {styledLineSeries({ data: generateLinearData({key: 'line1'}), stroke: '#2c51be' })} </SimpleChartWrapper> ); }) .addWithJSX('strokeDasharray', () => { return ( <SimpleChartWrapper> {styledLineSeries({ data: generateLinearData({key: 'line1'}), strokeDasharray: '5, 5, 1, 5' })} </SimpleChartWrapper> ); }) .addWithJSX('strokeStyle', () => { return ( <SimpleChartWrapper> {styledLineSeries({ data: generateLinearData({key: 'line1'}), strokeStyle: 'dashed' })} </SimpleChartWrapper> ); }) .addWithJSX('strokeWidth', () => { return ( <SimpleChartWrapper> {styledLineSeries({ data: generateLinearData({key: 'line1'}), strokeWidth: '5px' })} </SimpleChartWrapper> ); }) .addWithJSX('style object', () => { return ( <SimpleChartWrapper> {styledLineSeries({ data: generateLinearData({key: 'line1'}), style: { stroke: '#E48000', strokeLinejoin: 'round', strokeWidth: '3px' } })} </SimpleChartWrapper> ); }); storiesOf('Series/LineSeries/Curve', module) .addDecorator(withKnobs) .addWithJSX('Curve', () => { return ( <SimpleChartWrapper> <LineSeries data={generateLinearData({key: 'line1'})} curve={select( 'curve', { curveBasis: 'curveBasis', curveCatmullRom: 'curveCatmullRom', curveCardinal: 'curveCardinal', curveLinear: 'curveLinear', curveStep: 'curveStep', curveStepAfter: 'curveStepAfter', curveStepBefore: 'curveStepBefore', none: null }, 'curveBasis', 'LineSeries curve' )} /> </SimpleChartWrapper> ); });