GroupPurchase.js 2.96 KB
'use strict';

import React, {Component} from 'react';
import {Dimensions, Image, ListView, StyleSheet, Text, TouchableOpacity, View, NativeModules} from 'react-native';
import {Immutable} from 'immutable';
import GroupProductCell from './GroupProductCell'
import YH_Image from '../../common/components/YH_Image';
import {getSlicedUrl} from '../../classify/utils/Utils';

export default class GroupPurchase extends Component {
    constructor(props) {
        super(props);

        this._renderRow = this._renderRow.bind(this);
        this._renderHeader = this._renderHeader.bind(this);

        this.dataSource = new ListView.DataSource({
            rowHasChanged: (r1, r2) => !Immutable.is(r1, r2),
            sectionHeaderHasChanged: (s1, s2) => !Immutable.is(s1, s2),
        });
    }

    _renderHeader() {
        let {
            resource,
        } = this.props;
        let resourceJS = resource.toJS();

        if(!resourceJS.data || resourceJS.data.length == 0) return null;
        let datss = resourceJS.data;
        let data = datss[0].data;
        let imageHeight = data.imageHeight;
        let imageWidth = data.imageWidth;
        let list = data.list;
        let src = list[0].src;
        let url = list[0].url;

        let newSrc = getSlicedUrl(src, imageWidth, imageHeight, 2);
        return (
          <View style={styles.header}>
            <TouchableOpacity activeOpacity={0.8} onPress={() => {
              this.props.didTouchBanner && this.props.didTouchBanner(url);
            }}>
              <YH_Image style={styles.header} url={newSrc}></YH_Image>
            </TouchableOpacity>
          </View>
        );
    }

    _renderRow(rowData, sectionID, rowID) {
        return (
          <GroupProductCell resource={rowData} didTouchProduct={this.props.didTouchProduct}/>
        );
    }

    render() {
        let {
            productList,
            resource,
        } = this.props;
        let dataSource = {
            productList: productList.list ? productList.list.toArray() : [],
        };

        return (
            <View style={styles.container}>
                <ListView
                    ref={(c) => {
                        this.listView = c;
                    }}
                    enableEmptySections={true}
                    dataSource={this.dataSource.cloneWithRowsAndSections(dataSource)}
                    renderRow={this._renderRow}
                    renderHeader={this._renderHeader}
                    onEndReached={() => {
                      if (productList.list.size !== 0) {
                          this.props.onEndReached && this.props.onEndReached();
                      }
                    }}
                />
            </View>
        );
    }

}


let {width, height} = Dimensions.get('window');
const DEVICE_WIDTH_RATIO = width / 375;

let styles = StyleSheet.create({
        container: {
            flex: 1,
        },
        header: {
          width,
          height: 121*DEVICE_WIDTH_RATIO,
        },
    })
;