Blame view

js/globalHome/components/home/GlobalHomeSwiper.js 3.82 KB
1 2 3 4 5 6 7 8
'use strict';

import React from 'react';
import ReactNative from 'react-native';
import Swiper from 'react-native-swiper';
import ImmutablePropTypes from 'react-immutable-proptypes';
import SlicedImage from '../../../common/components/SlicedImage';
import Immutable, {Map} from 'immutable';
9
import GlobalTopHeader from './GlobalTopHeader';
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73

const {
    View,
    Image,
    TouchableOpacity,
    StyleSheet,
    Dimensions,
    Platform,
} = ReactNative;

export default class GlobalHomeSwiper extends React.Component {

    constructor(props) {
        super (props);

        this.dot = <View
            style={{
                backgroundColor:'rgba(0,0,0,.2)',
                width: 6,
                height: 6,
                borderRadius: 3,
                marginLeft: 3,
                marginRight: 3,
                marginTop: (Platform.OS === 'ios')?3:23,
                marginBottom: 0,
            }}
        />;
        this.activeDot = <View
            style={{
                backgroundColor:'white',
                width: 6,
                height: 6,
                borderRadius: 3,
                marginLeft: 3,
                marginRight: 3,
                marginTop: 3,
                marginBottom: 0,
            }}
        />;
    }

    shouldComponentUpdate(nextProps){

		if (Immutable.is(nextProps.resource, this.props.resource)) {
            return false;
		} else {
            return true;
		}
	}


    render() {

        let {resource} = this.props;
        let res = resource.toJS();
        let list = res.data;

        if (!list) {
			return null;
		}

        if (list.length == 1) {
            return (
                <View style={styles.container}>
74
                    <GlobalTopHeader />
75 76
                    <TouchableOpacity
                        activeOpacity={1}
77
                        style={{width: width, height: height}}
78 79 80 81
                        onPress={() => {
                            // this.props.onPressSlideItem && this.props.onPressSlideItem(data[0].url);
                        }}
                    >
82
                        <SlicedImage source={{uri: list[0].src}} style={width, height}/>
83 84 85 86 87 88
                    </TouchableOpacity>
                </View>
            );
        } else {
            return (
                <View style={styles.container}>
89
                    <GlobalTopHeader />
90 91 92 93 94 95 96 97 98 99
                    <Swiper
                        style={styles.banner}
                        showsButtons={false}
                        loop={true}
                        autoplay={true}
                        autoplayTimeout={2}
                        paginationStyle={{bottom: 8}}
                        dot={this.dot}
                        activeDot={(Platform.OS === 'ios')?this.activeDot:null}
                        width={width}
100
                        height={height}
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
                    >
                        {list.map((item, i) => {
                            return (
                                <TouchableOpacity
                                    key={i}
                                    activeOpacity={1}
                                    onPress={() => {
     		                            this.props.onPressSlideItem && this.props.onPressSlideItem(item.url);
                                    }}
                                >
                                    <SlicedImage source={{uri: item.src}} style={{width, height}}/>
                                </TouchableOpacity>
                            );
                        })}
                    </Swiper>
                </View>
            );
        }
    }
}

let {width} = Dimensions.get('window');
123
let height = Math.ceil((310 / 640) * width) + 40;
124 125 126 127 128 129 130 131 132 133 134 135 136

let styles = StyleSheet.create({

    container: {
        width: width,
        height: height,
        backgroundColor:'#f0f0f0',
    },
    banner: {

    },

});