binary-com/binary-charts

View on GitHub
.storybook/multiple-charts.js

Summary

Maintainability
C
1 day
Test Coverage
import React, { Component } from 'react';
import { storiesOf } from '@kadira/storybook';
import BinaryChart from '../src/BinaryChart';

let last = 30;
const randomNum = () => {
    const out = Math.abs(Math.random()) * 100 + last;
    last = out;
    return out;
};

const testData = () =>
    [6, 5, 4, 3, 2, 1].map(i => {
        const epoch = (new Date().getTime() / 1000) - i;
        return { epoch, quote: randomNum() };
    });

export default class TwoDynamicChart extends Component {

    constructor(props) {
        super(props);
        this.state = {
            ticks: testData(),
        };
    }

    componentDidMount() {
        this.chartUpdate = setInterval(() => {
            const { ticks } = this.state;
            const newTick = { epoch: new Date().getTime() / 1000, quote: randomNum() };
            this.setState({
                ticks: ticks.concat([newTick]),
            });
        }, 1000);
        window.stopUpdates = () => clearInterval(this.chartUpdate);
    }

    componentWillUnmount() {
        clearInterval(this.chartUpdate);
    }

    render() {
        const { ticks } = this.state;

        return (
            <div style={{ display: 'flex', flexDirection: 'row' }}>
                <BinaryChart ticks={ticks} {...this.props} />
                <BinaryChart ticks={ticks} {...this.props} />
            </div>
        );
    }
}


storiesOf('Multiple', module)
    .add('Two static charts', () =>
        <div>
            <BinaryChart
                symbol="symbol"
                ticks={[
                    { epoch: 0, quote: 50.021 },
                    { epoch: 1, quote: 40.222 },
                    { epoch: 5, quote: 20.333 },
                    { epoch: 6, quote: 30.444 },
                ]}
                pipSize={2}
            />
            <BinaryChart
                symbol="symbol"
                ticks={[
                    { epoch: 0, quote: 50.021 },
                    { epoch: 1, quote: 40.222 },
                    { epoch: 5, quote: 20.333 },
                    { epoch: 6, quote: 30.444 },
                ]}
                pipSize={2}
            />
        </div>
    )
    .add('Two dynamic charts', () =>
        <TwoDynamicChart />
    );