BannerSwiper.js 3.36 KB
'use strict';

import React from 'react';
import ReactNative from 'react-native';
import YH_Swiper from '../../common/components/YH_Swiper';
import YH_Image from '../../common/components/YH_Image';
import {getSlicedUrl} from '../../classify/utils/Utils';

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

import Immutable, {Map} from 'immutable';

export default class BannerSwiper extends React.Component {

    constructor(props) {
        super (props);
    }

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

    render() {

        let {resource  ,row_ID} = this.props;
        if (!resource) {
			return null;
		}
        let template_name = resource?resource.get('template_name'):'';
        let template_id = resource?resource.get('template_id'):0;
        let data = resource.get('data').toJS();

        if (data.length == 1) {
			let newSrc = getSlicedUrl(data[0].src, width, swiperHeight);
            return (
				<View style={styles.container}>
	                <TouchableOpacity
	                    activeOpacity={1}
	                    style={{width: width, height: swiperHeight}}
	                    onPress={() => {
                            this.props.resourceJumpWithUrl && this.props.resourceJumpWithUrl(data[0].url)
	                    }}
	                >
	                    <YH_Image
	                        url={newSrc}
	                        style={{ width: width, height: swiperHeight}}
	                    />
	                </TouchableOpacity>
				</View>
            );
        } else {
            return (
				<View style={styles.container}>
	                <YH_Swiper
	                    style={styles.banner}
	                    showsButtons={false}
	                    loop={true}
	                    autoplay={true}
	                    autoplayTimeout={3}
	                    paginationStyle={{bottom: 8}}
	                    width={width}
	                    height={swiperHeight}
	                >
	                    {data.map((item, i) => {
							let newSrc = getSlicedUrl(item.src, width, swiperHeight);
	                        return (
	                            <TouchableOpacity
	                                key={i}
	                                activeOpacity={1}
	                                onPress={() => {
                                        this.props.resourceJumpWithUrl && this.props.resourceJumpWithUrl(item.url)
	                                }}
	                            >
	                                <YH_Image
	                                    url={newSrc}
	                                    style={{width: width, height: swiperHeight}}
	                                />
	                            </TouchableOpacity>
	                        );
	                    })}
	                </YH_Swiper>
				</View>
            );
        }
    }
}

let {width, height} = Dimensions.get('window');
const DEVICE_WIDTH_RATIO = width / 375;
let swiperHeight = Math.ceil(118 * DEVICE_WIDTH_RATIO);

let styles = StyleSheet.create({
	container: {
		width: width,
		height: swiperHeight,
		backgroundColor: 'white',
	},

});