...
|
...
|
@@ -2,6 +2,12 @@ |
|
|
|
|
|
import React, {Component} from 'react';
|
|
|
import Immutable, {Map} from 'immutable';
|
|
|
import LoadMoreIndicator from '../../../common/components/LoadMoreIndicator';
|
|
|
import YohoCoinNumHeader from './YohoCoinNumHeader';
|
|
|
import YohoCoinBanner from './YohoCoinBanner';
|
|
|
import BrandProductListCell from '../../../common/components/ListCell/ProductListCell';
|
|
|
import DeviceInfo from 'react-native-device-info';
|
|
|
import Weixin from '../../../guang/components/detail/Weixin';
|
|
|
|
|
|
import ReactNative, {
|
|
|
View,
|
...
|
...
|
@@ -21,6 +27,13 @@ export default class YohoCoin extends Component { |
|
|
|
|
|
constructor(props) {
|
|
|
super(props);
|
|
|
this.renderRow = this.renderRow.bind(this);
|
|
|
this.renderSectionHeader = this.renderSectionHeader.bind(this);
|
|
|
|
|
|
this.dataSource = new ListView.DataSource({
|
|
|
rowHasChanged: (r1, r2) => !Immutable.is(r1, r2),
|
|
|
sectionHeaderHasChanged: (s1, s2) => !Immutable.is(s1, s2),
|
|
|
});
|
|
|
}
|
|
|
|
|
|
shouldComponentUpdate(nextProps){
|
...
|
...
|
@@ -32,6 +45,50 @@ export default class YohoCoin extends Component { |
|
|
}
|
|
|
}
|
|
|
|
|
|
renderRow(rowData, sectionID, rowID, highlightRow) {
|
|
|
if (sectionID == 'yohoCoin') {
|
|
|
return (<YohoCoinNumHeader resource = {rowData} onPressYohoCoinDetail = {this.props.onPressYohoCoinDetail}/>)
|
|
|
}else if (sectionID == 'banner') {
|
|
|
return(<YohoCoinBanner resource = {rowData} onPressProduct={this.props.onPressBanner}/>)
|
|
|
}else if (sectionID == 'weixin') {
|
|
|
return(<Weixin resource={rowData} onPressWeixin={this.props.onPressWeixin}/>)
|
|
|
}else if (sectionID == 'favoriteTitle') {
|
|
|
let listNum = rowData;
|
|
|
if (listNum == 0) {
|
|
|
return null;
|
|
|
}
|
|
|
let fontFamilyStyle = {};
|
|
|
if (Platform.OS === 'ios') {
|
|
|
let systemVersion = DeviceInfo.getSystemVersion();
|
|
|
systemVersion = parseFloat(systemVersion);
|
|
|
if (systemVersion >= 9.0) {
|
|
|
fontFamilyStyle = {fontFamily: 'PingFang SC'};
|
|
|
}
|
|
|
}
|
|
|
return(
|
|
|
<View style={styles.title}>
|
|
|
<Text style={[styles.text, fontFamilyStyle]}>你可能喜欢</Text>
|
|
|
</View>
|
|
|
);
|
|
|
}else if (sectionID == 'favorite') {
|
|
|
let paddingLeft = rowID % 2 == 1 ? rowMarginHorizontal / 2 : rowMarginHorizontal;
|
|
|
let customStyle = rowID == 0 || rowID == 1 ? {paddingLeft} : {paddingLeft};
|
|
|
return (
|
|
|
<BrandProductListCell
|
|
|
style={[styles.listContainer, customStyle]}
|
|
|
key={'row' + rowID}
|
|
|
rowID={rowID}
|
|
|
data={rowData}
|
|
|
onPressProduct={this.props.onPressProductCell}/>
|
|
|
);
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
renderSectionHeader(sectionData, sectionID) {
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
render() {
|
|
|
|
|
|
let {resource} = this.props;
|
...
|
...
|
@@ -42,18 +99,62 @@ export default class YohoCoin extends Component { |
|
|
favorite,
|
|
|
} = resource;
|
|
|
|
|
|
let list = favorite?favorite.get('list'):null;
|
|
|
|
|
|
let dataSource = {
|
|
|
yohoCoin: [yohoCoin],
|
|
|
banner: [banner],
|
|
|
weixin: [weixin],
|
|
|
favoriteTitle: [list?list.size:0],
|
|
|
favorite: list?list.toArray():[],
|
|
|
}
|
|
|
|
|
|
return (
|
|
|
<View style={styles.container}>
|
|
|
<Text>YohoCoin</Text>
|
|
|
<ListView
|
|
|
ref='YohoCoinList'
|
|
|
contentContainerStyle={styles.contentContainer}
|
|
|
enableEmptySections={true}
|
|
|
dataSource={this.dataSource.cloneWithRowsAndSections(dataSource)}
|
|
|
renderRow={this.renderRow}
|
|
|
renderSectionHeader={this.renderSectionHeader}
|
|
|
onEndReached={() => {
|
|
|
if (list && list.size > 0) {
|
|
|
this.props.onEndReached && this.props.onEndReached();
|
|
|
}
|
|
|
}}
|
|
|
/>
|
|
|
</View>
|
|
|
);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
let {width, height} = Dimensions.get('window');
|
|
|
let rowWidth = Math.ceil(137.5 * width / 320);
|
|
|
let rowMarginHorizontal = (width - rowWidth * 2) / 3;
|
|
|
|
|
|
let styles = StyleSheet.create({
|
|
|
container: {
|
|
|
flex: 1,
|
|
|
},
|
|
|
contentContainer:{
|
|
|
flexDirection: 'row',
|
|
|
flexWrap: 'wrap',
|
|
|
},
|
|
|
listContainer: {
|
|
|
width: width / 2,
|
|
|
},
|
|
|
title: {
|
|
|
alignItems: 'center',
|
|
|
justifyContent: 'center',
|
|
|
height: 40,
|
|
|
width: width,
|
|
|
backgroundColor: 'white',
|
|
|
},
|
|
|
text: {
|
|
|
textAlign: 'left',
|
|
|
fontSize: 17,
|
|
|
fontWeight: 'bold',
|
|
|
color: 'rgba(0,0,0,0.3)',
|
|
|
},
|
|
|
}); |
...
|
...
|
|