packages/website/storybook/areaseries-story.js (154 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 {AreaSeries, LineSeries} from 'react-vis';
import {generateLinearData, nonUniformX} from './storybook-data.js';
import {SimpleChartWrapper} from './storybook-utils.js';
function styledAreaSeries(props) {
return (
<AreaSeries
data={props.data}
fill={color('fill', props.stroke || '#12939a', 'AreaSeries style')}
opacity={number(
'opacity',
props.opacity || 1,
{max: 1, min: 0, range: true, step: 0.01},
'AreaSeries style'
)}
stroke={color('stroke', props.stroke || '#12939a', 'AreaSeries style')}
style={object('style', props.style || {}, 'AreaSeries style')}
/>
);
}
storiesOf('Series/AreaSeries/Base', module)
.addDecorator(withKnobs)
.addWithJSX('Single Area chart', () => {
return (
<SimpleChartWrapper>
<AreaSeries opacity={0.5} data={generateLinearData({key: 'area1'})} />
</SimpleChartWrapper>
);
})
.addWithJSX('Single Area chart paired with LineSeries', () => {
return (
<SimpleChartWrapper>
<AreaSeries
opacity={0.25}
data={generateLinearData({key: 'area1'})}
stroke="transparent"
/>
<LineSeries
stroke="#12939a"
data={generateLinearData({key: 'area1'})}
/>
</SimpleChartWrapper>
);
})
.addWithJSX('With negative numbers', () => {
return (
<SimpleChartWrapper yDomain={[-3, 3]}>
<AreaSeries
opacity={0.5}
data={generateLinearData({startValue: 0, key: 'area-neg'})}
/>
</SimpleChartWrapper>
);
})
.addWithJSX('With non-uniform x numbers', () => {
return (
<SimpleChartWrapper>
<AreaSeries
opacity={0.5}
data={generateLinearData({
key: 'area-random-x',
extraParams: [['x', nonUniformX()]]
})}
/>
</SimpleChartWrapper>
);
})
.addWithJSX('Multiple Area series', () => {
return (
<SimpleChartWrapper>
<AreaSeries opacity={0.25} data={generateLinearData({key: 'area1'})} />
<AreaSeries opacity={0.25} data={generateLinearData({key: 'area2'})} />
<AreaSeries opacity={0.25} data={generateLinearData({key: 'area3'})} />
</SimpleChartWrapper>
);
})
.addWithJSX('Multiple stacked Area series', () => {
return (
<SimpleChartWrapper stackBy="y" yDomain={[0, 50]}>
<AreaSeries opacity={0.5} data={generateLinearData({key: 'area1'})} />
<AreaSeries opacity={0.5} data={generateLinearData({key: 'area2'})} />
<AreaSeries opacity={0.5} data={generateLinearData({key: 'area3'})} />
</SimpleChartWrapper>
);
});
storiesOf('Series/AreaSeries/Styling', module)
.addDecorator(withKnobs)
.addWithJSX('opacity', () => {
return (
<SimpleChartWrapper>
{styledAreaSeries({
data: generateLinearData({key: 'area1'}),
opacity: 0.75
})}
</SimpleChartWrapper>
);
})
.addWithJSX('stroke', () => {
return (
<SimpleChartWrapper>
{styledAreaSeries({
data: generateLinearData({key: 'area1'}),
stroke: '#2c51be'
})}
</SimpleChartWrapper>
);
})
.addWithJSX('style object', () => {
return (
<SimpleChartWrapper>
{styledAreaSeries({
data: generateLinearData({key: 'area1'}),
style: {
stroke: '#E48000',
strokeAreajoin: 'round',
strokeWidth: '3px'
}
})}
</SimpleChartWrapper>
);
});
storiesOf('Series/AreaSeries/Curve', module)
.addDecorator(withKnobs)
.addWithJSX('Curve', () => {
return (
<SimpleChartWrapper>
<AreaSeries
opacity={0.5}
data={generateLinearData({key: 'area1'})}
curve={select(
'curve',
{
curveBasis: 'curveBasis',
curveCatmullRom: 'curveCatmullRom',
curveCardinal: 'curveCardinal',
curveAreaar: 'curveAreaar',
curveStep: 'curveStep',
curveStepAfter: 'curveStepAfter',
curveStepBefore: 'curveStepBefore',
none: null
},
'curveBasis',
'AreaSeries curve'
)}
/>
</SimpleChartWrapper>
);
});