SaleStatistics.js 3.81 KB
'use strict';

import React from 'react-native';
import TrendTextSection from './TrendTextSection';
import Placeholder from './Placeholder';
import CalendarTrigger from './calendar/CalendarTrigger';
import CalendarPicker from './calendar/CalendarPicker';
import ChartView from './LineChart/ChartView'

let {
    Component,
    View,
    Text,
    ScrollView,
    Platform
} = React;

export default class SaleStatistics extends Component {

    static propTypes = {
        section1: React.PropTypes.arrayOf(
            React.PropTypes.shape({
                top: React.PropTypes.string,
                bottom: React.PropTypes.string,
                style: View.propTypes.style,
                arrowUp: React.PropTypes.bool,
            })
        ),
        section2: React.PropTypes.arrayOf(
            React.PropTypes.shape({
                top: React.PropTypes.string,
                bottom: React.PropTypes.string,
                style: View.propTypes.style,
                arrowUp: React.PropTypes.bool,
            })
        ),
    };

    constructor(props) {
        super(props);

        let selectdDate = new Date().getFullYear() + '年' + (new Date().getMonth() + 1) + '月' + (new Date().getDate() - 1) + '日';
        this.state = {
            showPicker: false,
            selectdDate,
            selected: null,
            selectMode: 'day',
        };

        this.toogleSelector = this.toogleSelector.bind(this);
        this.onCancel = this.onCancel.bind(this);
        this.onOK = this.onOK.bind(this);

        this.calendarModes = [{
            type: 'day',
            text: '日',
        },
        {
            type: 'week',
            text: '周',
        },{
            type: 'month',
            text: '月',
        }];
    }

    toogleSelector() {
        this.setState({
            showPicker: !this.state.showPicker
        });
    }

    onCancel() {
        this.toogleSelector();
    }

    onOK(selected) {

        let selectdDate;

        if (selected.selectMode === 'day') {
            let day = selected.day;
            selectdDate = day.getFullYear() + '年' + (day.getMonth() + 1) + '月' + day.getDate() + '日';
        } else if (selected.selectMode === 'week') {
            let from = selected.from;
            let to = selected.to;
            selectdDate = from.getFullYear() + '年' + (from.getMonth() + 1) + '月' + from.getDate() + '日'
                + '-' + to.getFullYear() + '年' + (to.getMonth() + 1) + '月' + to.getDate() + '日';
        } else if (selected.selectMode === 'month') {
            let year = selected.year;
            selectdDate = selected.year + '年' + selected.month + '月';
        }

        this.setState({
            showPicker: !this.state.showPicker,
            selectdDate,
            selected,
            selectMode: selected.selectMode,
        });

        this.props.onChangeDate && this.props.onChangeDate(this.state.selected);
    }

	render() {

        let months = ['5.01','5.02','5.03','5.04','5.05','5.06','5.07'];
        let data = [100,122,80,110,140,77,151];

        return (
            <ScrollView contentContainerStyle={{flex: 1}}>
                <CalendarTrigger date={this.state.selectdDate} toogleSelector={this.toogleSelector} />
                <Placeholder />
                <TrendTextSection content={this.props.section1} />
                <TrendTextSection content={this.props.section2} />
                <Placeholder />
                <ChartView
                    chartTitle={'近7天交易趋势'}
                    xData={months}
                    yData={data}
                />

                {this.state.showPicker ? <CalendarPicker calendarModes={this.calendarModes} selectMode={this.state.selectMode} selected={this.state.selected} onCancel={this.onCancel} onOK={this.onOK}/> : null}

            </ScrollView>
        );

    }
}