index.js 4.21 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
        for(let j = 1;j<13;j++){
            let day = [];
            if(j === 2){
                for(let k=1;k<29;k++){
                    day.push(k+'');
                }
25 26 27 28
                //Leap day for years that are divisible by 4, such as 2000, 2004
                if(i%4 === 0){
                    day.push(29+'');
                }
xwenliang's avatar
xwenliang committed
29 30 31 32 33 34 35 36 37 38 39
            }
            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
40 41 42
            let _month = {};
            _month[j+''] = day;
            month.push(_month);
xwenliang's avatar
xwenliang committed
43
        }
xwenliang's avatar
xwenliang committed
44 45 46
        let _date = {};
        _date[i+''] = month;
        date.push(_date);
xwenliang's avatar
xwenliang committed
47 48 49 50 51 52 53
    }
    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
54
            let data = [];
xwenliang's avatar
xwenliang committed
55 56
            let len = area.length;
            for(let i=0;i<len;i++){
xwenliang's avatar
xwenliang committed
57 58 59 60 61
                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
62
                }
xwenliang's avatar
xwenliang committed
63 64 65 66

                let _data = {};
                _data[area[i]['name']] = city;
                data.push(_data);
xwenliang's avatar
xwenliang committed
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
            }
            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
86
                console.log('date', pickedValue);
xwenliang's avatar
xwenliang committed
87 88
            },
            onPickerCancel: pickedValue => {
xwenliang's avatar
xwenliang committed
89
                console.log('date', pickedValue);
xwenliang's avatar
xwenliang committed
90 91
            },
            onPickerSelect: pickedValue => {
xwenliang's avatar
xwenliang committed
92
                console.log('date', pickedValue);
xwenliang's avatar
xwenliang committed
93 94 95 96 97 98 99 100 101
            }
        });
        Picker.show();
    }

    _showAreaPicker() {
        createAreaData(data => {
            Picker.init({
                pickerData: data,
xwenliang's avatar
xwenliang committed
102
                selectedValue: ['河北', '唐山', '古冶区'],
xwenliang's avatar
xwenliang committed
103
                onPickerConfirm: pickedValue => {
xwenliang's avatar
xwenliang committed
104
                    console.log('area', pickedValue);
xwenliang's avatar
xwenliang committed
105 106
                },
                onPickerCancel: pickedValue => {
xwenliang's avatar
xwenliang committed
107
                    console.log('area', pickedValue);
xwenliang's avatar
xwenliang committed
108 109
                },
                onPickerSelect: pickedValue => {
xwenliang's avatar
xwenliang committed
110
                    console.log('area', pickedValue);
xwenliang's avatar
xwenliang committed
111 112 113 114 115 116
                }
            });
            Picker.show();
        });
    }

xwenliang's avatar
xwenliang committed
117 118 119 120 121 122 123 124 125 126
    _toggle() {
        Picker.toggle();
    }

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

xwenliang's avatar
xwenliang committed
127 128 129 130 131 132 133 134 135
    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
136 137 138 139 140 141
                <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
142 143 144 145
            </View>
        );
    }
};