CategoryB.js 3.31 KB
'use strict';

import React, {Component} from 'react';
import ReactNative, {
    View,
    Text,
    Image,
    ListView,
    StyleSheet,
    Dimensions,
    TouchableOpacity
} from 'react-native';

import ChannelSelector from '../../../common/components/ChannelSelector';
import LoadingIndicator from '../../../common/components/LoadingIndicator';
import NoNetworkTip from '../../../common/components/NoNetworkTip';
import CategoryBList from './CategoryBList';

export default class CategoryB extends Component {

    constructor(props) {
        super(props);

        this.trigggePullToRefresh = this.trigggePullToRefresh.bind(this);
        this.stopPullToRefresh = this.stopPullToRefresh.bind(this);
    }

    trigggePullToRefresh(categoryId, categoryValue) {
        this.categoryBList && this.categoryBList.trigggePullToRefresh(categoryId, categoryValue);
    }

    stopPullToRefresh() {
        this.categoryBList && this.categoryBList.stopPullToRefresh();
    }

    render() {

        let {
            isFetching,
            currentChannelId,
            currentChannelValue,
            currentCateId,
            categoryList,
            currentCateValue,
            currentSubCateData,
            cacheSubCateData,
            contentFetching,
            categoryError
        } = this.props;

        if (categoryError) {
            return (
                <View style={styles.container}>
                    <NoNetworkTip
                        onPressReload={this.props.onPressReload}
                    />
                </View>
            );
        } else if (categoryList.size > 0) {
            return (
                <View style={styles.container}>
                    <ChannelSelector selectedChannelId={currentChannelId} onSelectChannel={this.props.onSelectChannel}/>
                    <CategoryBList
                        ref={(c) => {
                            this.categoryBList = c;
                        }}
                        categoryList={categoryList}
                        currentCateId={currentCateId}
                        currentChannelId={currentChannelId}
                        currentChannelValue={currentChannelValue}
                        currentCateValue={currentCateValue}
                        currentSubCateData={currentSubCateData}
                        cacheSubCateData={cacheSubCateData}
                        onSelectCategory={this.props.onSelectCategory}
                        onPressBannerResourceItem={this.props.onPressBannerResourceItem}
                        onPressCategoryBMore={this.props.onPressCategoryBMore}
                        onPressHotCategoryItem={this.props.onPressHotCategoryItem}
                        onPressHotBrandItem={this.props.onPressHotBrandItem}
                        onPressHotRecommendItem={this.props.onPressHotRecommendItem}
                        contentFetching={contentFetching}
                        onRefresh={this.props.onRefresh}
                    />
                </View>
            );
        } else {
            return (
                <View style={styles.container}>
                    <LoadingIndicator isVisible={isFetching} />
                </View>
            );
        }
    }
}

let {width, height} = Dimensions.get('window');

let styles = StyleSheet.create({
    container: {
        flex: 1,
        width,
    },
});