RedBrandSwiper.js 3.57 KB
'use strict';

import React from 'react';
import ReactNative from 'react-native';
import Swiper from 'react-native-swiper';
import ImmutablePropTypes from 'react-immutable-proptypes';
import YH_Image from '../../../common/components/YH_Image';

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

import Immutable, {Map} from 'immutable';

export default class RedBrandSwiper 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:1,
                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;
        if (!resource) {
			return null;
		}

        let data = resource.get('module_data').get('data').toJS();

        if (data.length == 1) {
            return (
                <TouchableOpacity
                    activeOpacity={1}
                    style={{width: width, height: swiperHeight}}
                    onPress={() => {
                        this.props.onPressSlideItem && this.props.onPressSlideItem(data[0].linkType,data[0].resource);
                    }}
                >
                    <YH_Image
                        url={data[0].pic}
                        style={{ width: width, height: swiperHeight}}
                    />
                </TouchableOpacity>
            );
        } else {
            return (
                <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}
                    height={swiperHeight}
                >
                    {data.map((item, i) => {
                        return (
                            <TouchableOpacity
                                key={i}
                                activeOpacity={1}
                                onPress={() => {
 		                            this.props.onPressSlideItem && this.props.onPressSlideItem(item.linkType,item.resource);
                                }}
                            >
                                <YH_Image
                                    url={item.pic}
                                    style={{width: width, height: swiperHeight}}
                                />
                            </TouchableOpacity>
                        );
                    })}
                </Swiper>
            );
        }
    }
}

let {width, height} = Dimensions.get('window');
let swiperHeight = Math.ceil((234 / 750) * width);

let styles = StyleSheet.create({

    banner: {

    },

});