2019-04-24 10:14:18 +02:00
|
|
|
import React from 'react';
|
|
|
|
|
import { storiesOf } from '@storybook/react';
|
|
|
|
|
|
|
|
|
|
import { select, text } from '@storybook/addon-knobs';
|
|
|
|
|
import { withHorizontallyCenteredStory } from '../../utils/storybook/withCenteredStory';
|
|
|
|
|
import { GraphWithLegend } from './GraphWithLegend';
|
|
|
|
|
|
|
|
|
|
import { mockGraphWithLegendData } from './mockGraphWithLegendData';
|
|
|
|
|
import { action } from '@storybook/addon-actions';
|
|
|
|
|
import { LegendPlacement, LegendDisplayMode } from '../Legend/Legend';
|
|
|
|
|
const GraphWithLegendStories = storiesOf('Visualizations/Graph/GraphWithLegend', module);
|
|
|
|
|
GraphWithLegendStories.addDecorator(withHorizontallyCenteredStory);
|
|
|
|
|
|
|
|
|
|
const getStoriesKnobs = () => {
|
|
|
|
|
const containerWidth = select(
|
|
|
|
|
'Container width',
|
|
|
|
|
{
|
|
|
|
|
Small: '200px',
|
|
|
|
|
Medium: '500px',
|
|
|
|
|
'Full width': '100%',
|
|
|
|
|
},
|
|
|
|
|
'100%'
|
|
|
|
|
);
|
|
|
|
|
const containerHeight = select(
|
|
|
|
|
'Container height',
|
|
|
|
|
{
|
|
|
|
|
Small: '200px',
|
|
|
|
|
Medium: '400px',
|
|
|
|
|
'Full height': '100%',
|
|
|
|
|
},
|
|
|
|
|
'400px'
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
const rightAxisSeries = text('Right y-axis series, i.e. A,C', '');
|
|
|
|
|
|
|
|
|
|
const legendPlacement = select<LegendPlacement>(
|
|
|
|
|
'Legend placement',
|
|
|
|
|
{
|
|
|
|
|
under: 'under',
|
|
|
|
|
right: 'right',
|
|
|
|
|
},
|
|
|
|
|
'under'
|
|
|
|
|
);
|
|
|
|
|
const renderLegendAsTable = select(
|
|
|
|
|
'Render legend as',
|
|
|
|
|
{
|
|
|
|
|
list: false,
|
|
|
|
|
table: true,
|
|
|
|
|
},
|
|
|
|
|
false
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
containerWidth,
|
|
|
|
|
containerHeight,
|
|
|
|
|
rightAxisSeries,
|
|
|
|
|
legendPlacement,
|
|
|
|
|
renderLegendAsTable,
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
GraphWithLegendStories.add('default', () => {
|
|
|
|
|
const { containerWidth, containerHeight, rightAxisSeries, legendPlacement, renderLegendAsTable } = getStoriesKnobs();
|
|
|
|
|
|
|
|
|
|
const props = mockGraphWithLegendData({
|
|
|
|
|
onSeriesColorChange: action('Series color changed'),
|
|
|
|
|
onSeriesAxisToggle: action('Series y-axis changed'),
|
|
|
|
|
displayMode: renderLegendAsTable ? LegendDisplayMode.Table : LegendDisplayMode.List,
|
|
|
|
|
});
|
|
|
|
|
const series = props.series.map(s => {
|
|
|
|
|
if (
|
|
|
|
|
rightAxisSeries
|
|
|
|
|
.split(',')
|
|
|
|
|
.map(s => s.trim())
|
|
|
|
|
.indexOf(s.label.split('-')[0]) > -1
|
|
|
|
|
) {
|
2019-08-13 07:32:43 +02:00
|
|
|
s.yAxis = { index: 2 };
|
2019-04-24 10:14:18 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return s;
|
|
|
|
|
});
|
|
|
|
|
return (
|
|
|
|
|
<div style={{ width: containerWidth, height: containerHeight }}>
|
|
|
|
|
<GraphWithLegend {...props} placement={legendPlacement} series={series} />,
|
|
|
|
|
</div>
|
|
|
|
|
);
|
|
|
|
|
});
|