index.js 4.05 KB
Newer Older
xwenliang's avatar
xwenliang committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
/**
 * Bootstrap of PickerTest
 */

import React, {Component} from 'react';
import {
    View,
    Text,
    TouchableOpacity,
    Dimensions
} from 'react-native';

import Picker from 'react-native-picker';

function createDateData(){
xwenliang's avatar
xwenliang committed
16
    let date = [];
xwenliang's avatar
xwenliang committed
17
    for(let i=1950;i<2050;i++){
xwenliang's avatar
xwenliang committed
18
        let month = [];
xwenliang's avatar
xwenliang committed
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
        for(let j = 1;j<13;j++){
            let day = [];
            if(j === 2){
                for(let k=1;k<29;k++){
                    day.push(k+'');
                }
            }
            else if(j in {1:1, 3:1, 5:1, 7:1, 8:1, 10:1, 12:1}){
                for(let k=1;k<32;k++){
                    day.push(k+'');
                }
            }
            else{
                for(let k=1;k<31;k++){
                    day.push(k+'');
                }
            }
xwenliang's avatar
xwenliang committed
36 37 38
            let _month = {};
            _month[j+''] = day;
            month.push(_month);
xwenliang's avatar
xwenliang committed
39
        }
xwenliang's avatar
xwenliang committed
40 41 42
        let _date = {};
        _date[i+''] = month;
        date.push(_date);
xwenliang's avatar
xwenliang committed
43 44 45 46 47 48 49
    }
    return date;
};

function createAreaData(callback){
    fetch('https://raw.githubusercontent.com/beefe/react-native-picker/master/example/PickerTest/area.json').then(res => {
        res.json().then(area => {
xwenliang's avatar
xwenliang committed
50
            let data = [];
xwenliang's avatar
xwenliang committed
51 52
            let len = area.length;
            for(let i=0;i<len;i++){
xwenliang's avatar
xwenliang committed
53 54 55 56 57
                let city = [];
                for(let j=0,cityLen=area[i]['city'].length;j<cityLen;j++){
                    let _city = {};
                    _city[area[i]['city'][j]['name']] = area[i]['city'][j]['area'];
                    city.push(_city);
xwenliang's avatar
xwenliang committed
58
                }
xwenliang's avatar
xwenliang committed
59 60 61 62

                let _data = {};
                _data[area[i]['name']] = city;
                data.push(_data);
xwenliang's avatar
xwenliang committed
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
            }
            callback(data);
        });
    }, err => {
        console.log(err);
    });
};

export default class PickerTest extends Component {

    constructor(props, context) {
        super(props, context);
    }

    _showDatePicker() {
        Picker.init({
            pickerData: createDateData(),
            selectedValue: ['2015年', '12月', '12日'],
            onPickerConfirm: pickedValue => {
xwenliang's avatar
xwenliang committed
82
                console.log('date', pickedValue);
xwenliang's avatar
xwenliang committed
83 84
            },
            onPickerCancel: pickedValue => {
xwenliang's avatar
xwenliang committed
85
                console.log('date', pickedValue);
xwenliang's avatar
xwenliang committed
86 87
            },
            onPickerSelect: pickedValue => {
xwenliang's avatar
xwenliang committed
88
                console.log('date', pickedValue);
xwenliang's avatar
xwenliang committed
89 90 91 92 93 94 95 96 97 98 99
            }
        });
        Picker.show();
    }

    _showAreaPicker() {
        createAreaData(data => {
            Picker.init({
                pickerData: data,
                selectedValue: ['北京', '北京', '朝阳区'],
                onPickerConfirm: pickedValue => {
xwenliang's avatar
xwenliang committed
100
                    console.log('area', pickedValue);
xwenliang's avatar
xwenliang committed
101 102
                },
                onPickerCancel: pickedValue => {
xwenliang's avatar
xwenliang committed
103
                    console.log('area', pickedValue);
xwenliang's avatar
xwenliang committed
104 105
                },
                onPickerSelect: pickedValue => {
xwenliang's avatar
xwenliang committed
106
                    console.log('area', pickedValue);
xwenliang's avatar
xwenliang committed
107 108 109 110 111 112
                }
            });
            Picker.show();
        });
    }

xwenliang's avatar
xwenliang committed
113 114 115 116 117 118 119 120 121 122
    _toggle() {
        Picker.toggle();
    }

    _isPickerShow(){
        Picker.isPickerShow(status => {
            alert(status);
        });
    }

xwenliang's avatar
xwenliang committed
123 124 125 126 127 128 129 130 131
    render() {
        return (
            <View style={{height: Dimensions.get('window').height}}>
                <TouchableOpacity style={{marginTop: 40, marginLeft: 20}} onPress={this._showDatePicker.bind(this)}>
                    <Text>DatePicker</Text>
                </TouchableOpacity>
                <TouchableOpacity style={{marginTop: 10, marginLeft: 20}} onPress={this._showAreaPicker.bind(this)}>
                    <Text>AreaPicker</Text>
                </TouchableOpacity>
xwenliang's avatar
xwenliang committed
132 133 134 135 136 137
                <TouchableOpacity style={{marginTop: 10, marginLeft: 20}} onPress={this._toggle.bind(this)}>
                    <Text>toggle</Text>
                </TouchableOpacity>
                <TouchableOpacity style={{marginTop: 10, marginLeft: 20}} onPress={this._isPickerShow.bind(this)}>
                    <Text>isPickerShow</Text>
                </TouchableOpacity>
xwenliang's avatar
xwenliang committed
138 139 140 141
            </View>
        );
    }
};