index.js 4.69 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
class PickerTest extends Component {

    constructor(props, context) {
        super(props, context);
xwenliang's avatar
xwenliang committed
22
        this._showDatePicker();
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
    }

    _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+'');
                    }
39
                }
40 41 42 43
                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
44
                }
45 46 47 48
                else{
                    for(let k=1;k<31;k++){
                        day.push(k+'');
                    }
xwenliang's avatar
xwenliang committed
49
                }
50 51 52
                let _month = {};
                _month[j+''] = day;
                month.push(_month);
xwenliang's avatar
xwenliang committed
53
            }
54 55 56
            let _date = {};
            _date[i+''] = month;
            date.push(_date);
xwenliang's avatar
xwenliang committed
57
        }
58
        return date;
xwenliang's avatar
xwenliang committed
59
    }
xwenliang's avatar
xwenliang committed
60

61 62 63 64 65 66 67 68 69
    _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
70 71
            }

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

    _showDatePicker() {
        Picker.init({
81
            pickerData: this._createDateData(),
xwenliang's avatar
xwenliang committed
82 83 84 85 86
            pickerToolBarFontSize: 16,
            pickerFontSize: 16,
            pickerFontColor: [255, 0 ,0, 1],
            onPickerConfirm: (pickedValue, pickedIndex) => {
                console.log('date', pickedValue, pickedIndex);
xwenliang's avatar
xwenliang committed
87
            },
xwenliang's avatar
xwenliang committed
88 89
            onPickerCancel: (pickedValue, pickedIndex) => {
                console.log('date', pickedValue, pickedIndex);
xwenliang's avatar
xwenliang committed
90
            },
xwenliang's avatar
xwenliang committed
91 92
            onPickerSelect: (pickedValue, pickedIndex) => {
                console.log('date', pickedValue, pickedIndex);
xwenliang's avatar
xwenliang committed
93 94 95 96 97 98
            }
        });
        Picker.show();
    }

    _showAreaPicker() {
99 100 101 102 103 104 105 106 107 108 109 110
        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
111
        });
112
        Picker.show();
xwenliang's avatar
xwenliang committed
113 114
    }

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

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

xwenliang's avatar
xwenliang committed
125 126 127 128 129 130 131 132 133
    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
134 135 136 137 138 139
                <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>
140 141 142 143 144 145 146 147 148 149 150 151
                <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
152 153 154 155
            </View>
        );
    }
};
156 157

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