packages/website/storybook/markseries-story.js (175 lines of code) (raw):

/* eslint-env node */ import React from 'react'; import {storiesOf} from '@storybook/react'; import { withKnobs, color, number, object, select } from '@storybook/addon-knobs/react'; import {MarkSeries} from 'react-vis'; import {generateScatterplotData, intRandom, random} from './storybook-data.js'; import {chooseColorScale, SimpleChartWrapper} from './storybook-utils.js'; function styledMarkSeries(props) { return ( <MarkSeries data={props.data} opacity={number( 'opacity', props.opacity || 1, {max: 1, min: 0, range: true, step: 0.01}, 'style' )} fill={color('fill', props.fill || '#12939a', 'style')} stroke={color('stroke', props.stroke || '#12939a', 'style')} strokeStyle={select( 'strokeStyle', {solid: 'solid', dashed: 'dashed'}, props.strokeStyle || 'solid', 'style' )} strokeWidth={number('strokeWidth', props.strokeWidth || 2, 'style')} style={object('style', props.style || {}, 'style')} /> ); } storiesOf('Series/MarkSeries/Base', module) .addDecorator(withKnobs) .addWithJSX('Single scatterplot', () => { return ( <SimpleChartWrapper> <MarkSeries data={generateScatterplotData({key: 'scatter1'})} /> </SimpleChartWrapper> ); }) .addWithJSX('Multiple MarkSeries', () => { return ( <SimpleChartWrapper> <MarkSeries data={generateScatterplotData({key: 'scatter1'})} /> <MarkSeries data={generateScatterplotData({key: 'scatter2'})} /> <MarkSeries data={generateScatterplotData({key: 'scatter3'})} /> </SimpleChartWrapper> ); }); storiesOf('Series/MarkSeries/Styling/By Datapoint', module) .addDecorator(withKnobs) .addWithJSX('color', () => { const {colorScale, colorRange} = chooseColorScale(); return ( <SimpleChartWrapper colorScale={colorScale} colorRange={colorRange}> <MarkSeries data={generateScatterplotData({ key: 'scatter-color-1', extraParams: [['color', intRandom({})]] })} /> </SimpleChartWrapper> ); }) .addWithJSX('fill', () => { const {colorScale, colorRange} = chooseColorScale(); return ( <SimpleChartWrapper fillScale={colorScale} fillRange={colorRange}> <MarkSeries data={generateScatterplotData({ key: 'scatter-fill-1', extraParams: [['fill', intRandom({})]] })} /> </SimpleChartWrapper> ); }) .addWithJSX('opacity', () => { return ( <SimpleChartWrapper> <MarkSeries data={generateScatterplotData({ key: 'scatter-opacity-1', extraParams: [['opacity', random({min: 0.5})]] })} /> </SimpleChartWrapper> ); }) .addWithJSX('size', () => { return ( <SimpleChartWrapper> <MarkSeries data={generateScatterplotData({ key: 'scatter-size-1', extraParams: [['size', random({min: 5, max: 20})]] })} /> </SimpleChartWrapper> ); }) .addWithJSX('stroke', () => { const {colorScale, colorRange} = chooseColorScale(); return ( <SimpleChartWrapper strokeScale={colorScale} strokeRange={colorRange}> <MarkSeries data={generateScatterplotData({ key: 'scatter-stroke-1', extraParams: [['stroke', intRandom({})]] })} style={{strokeWidth: '2px'}} /> </SimpleChartWrapper> ); }); storiesOf('Series/MarkSeries/Styling/At series level', module) .addDecorator(withKnobs) .addWithJSX('fill', () => { return ( <SimpleChartWrapper> {styledMarkSeries({ data: generateScatterplotData({key: 'scatter1'}), fill: '#2c51be' })} </SimpleChartWrapper> ); }) .addWithJSX('opacity', () => { return ( <SimpleChartWrapper> {styledMarkSeries({ data: generateScatterplotData({key: 'scatter1'}), opacity: 0.5 })} </SimpleChartWrapper> ); }) .addWithJSX('stroke', () => { return ( <SimpleChartWrapper> {styledMarkSeries({ data: generateScatterplotData({key: 'scatter1'}), stroke: '#2c51be' })} </SimpleChartWrapper> ); }) .addWithJSX('strokeWidth', () => { return ( <SimpleChartWrapper> {styledMarkSeries({ data: generateScatterplotData({key: 'scatter1'}), strokeWidth: '3px' })} </SimpleChartWrapper> ); }) .addWithJSX('style', () => { return ( <SimpleChartWrapper> {styledMarkSeries({ data: generateScatterplotData({key: 'scatter1'}), style: { stroke: '#E48000', strokeOpacity: 0.5, strokeWidth: '3px' } })} </SimpleChartWrapper> ); });