index.js 4.52 KB
Newer Older
xwenliang's avatar
xwenliang committed
1 2 3 4 5 6
/**
 * Bootstrap of PickerTest
 */

import React, {Component} from 'react';
import {
7
    AppRegistry,
xwenliang's avatar
xwenliang committed
8 9
    View,
    Text,
10
    TextInput,
xwenliang's avatar
xwenliang committed
11 12 13 14 15
    TouchableOpacity,
    Dimensions
} from 'react-native';

import Picker from 'react-native-picker';
16
import area from './area.json';
xwenliang's avatar
xwenliang committed
17

18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
class PickerTest extends Component {

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

    _createDateData() {
        let date = [];
        for(let i=1950;i<2050;i++){
            let month = [];
            for(let j = 1;j<13;j++){
                let day = [];
                if(j === 2){
                    for(let k=1;k<29;k++){
                        day.push(k+'');
                    }
                    //Leap day for years that are divisible by 4, such as 2000, 2004
                    if(i%4 === 0){
                        day.push(29+'');
                    }
38
                }
39 40 41 42
                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+'');
                    }
xwenliang's avatar
xwenliang committed
43
                }
44 45 46 47
                else{
                    for(let k=1;k<31;k++){
                        day.push(k+'');
                    }
xwenliang's avatar
xwenliang committed
48
                }
49 50 51
                let _month = {};
                _month[j+''] = day;
                month.push(_month);
xwenliang's avatar
xwenliang committed
52
            }
53 54 55
            let _date = {};
            _date[i+''] = month;
            date.push(_date);
xwenliang's avatar
xwenliang committed
56
        }
57
        return date;
xwenliang's avatar
xwenliang committed
58
    }
xwenliang's avatar
xwenliang committed
59

60 61 62 63 64 65 66 67 68
    _createAreaData() {
        let data = [];
        let len = area.length;
        for(let i=0;i<len;i++){
            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
69 70
            }

71 72 73 74 75
            let _data = {};
            _data[area[i]['name']] = city;
            data.push(_data);
        }
        return data;
xwenliang's avatar
xwenliang committed
76 77 78 79
    }

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

    _showAreaPicker() {
96 97 98 99 100 101 102 103 104 105 106 107
        Picker.init({
            pickerData: this._createAreaData(),
            selectedValue: ['河北', '唐山', '古冶区'],
            onPickerConfirm: pickedValue => {
                console.log('area', pickedValue);
            },
            onPickerCancel: pickedValue => {
                console.log('area', pickedValue);
            },
            onPickerSelect: pickedValue => {
                console.log('area', pickedValue);
            }
xwenliang's avatar
xwenliang committed
108
        });
109
        Picker.show();
xwenliang's avatar
xwenliang committed
110 111
    }

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

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

xwenliang's avatar
xwenliang committed
122 123 124 125 126 127 128 129 130
    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
131 132 133 134 135 136
                <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>
137 138 139 140 141 142 143 144 145 146 147 148
                <TextInput 
                    placeholder="test picker with input"
                    style={{
                        height: 40,
                        borderColor: 'gray',
                        borderWidth: 1,
                        marginLeft: 20,
                        marginRight: 20,
                        marginTop: 10,
                        padding: 5
                    }}
                />
xwenliang's avatar
xwenliang committed
149 150 151 152
            </View>
        );
    }
};
153 154

AppRegistry.registerComponent('PickerTest', () => PickerTest);