...
|
...
|
@@ -52,6 +52,7 @@ export default class RedBrand extends Component { |
|
|
this.containerHeight = 0;
|
|
|
this.sectionData = [];
|
|
|
this.layoutLenghtOffesetForIndex = {};
|
|
|
this.productListUpOffset = 0;
|
|
|
}
|
|
|
|
|
|
_onPressLaunchProfile(value){
|
...
|
...
|
@@ -66,7 +67,8 @@ export default class RedBrand extends Component { |
|
|
let height = headerHeight + 84; //header
|
|
|
this.refs.redBrandList && this.refs.redBrandList.scrollToLocation({itemIndex: 0,sectionIndex: 1, viewPosition: height, animated: false});
|
|
|
} else {
|
|
|
this.refs.redBrandList && this.refs.redBrandList.scrollToLocation({itemIndex: 0,sectionIndex: 2, viewPosition: 0, animated: false});
|
|
|
let height = headerHeight + 84;
|
|
|
this.refs.redBrandList && this.refs.redBrandList.scrollToLocation({itemIndex: 0,sectionIndex: 0, viewOffset: -this.productListUpOffset + 104, animated: false});
|
|
|
}
|
|
|
this.props.onPressProductFilter && this.props.onPressProductFilter(value);
|
|
|
}
|
...
|
...
|
@@ -97,7 +99,6 @@ export default class RedBrand extends Component { |
|
|
if (!shopsdecorator || shopsdecorator.template_type != '1') {
|
|
|
result.length = headerHeight; //header
|
|
|
if (countNumb == layoutIndex) {
|
|
|
this.layoutLenghtOffesetForIndex['fliter' + fliter + 'row' + countNumb] = result;
|
|
|
return result;
|
|
|
}
|
|
|
realContainerHeight += headerHeight; //header
|
...
|
...
|
@@ -108,7 +109,6 @@ export default class RedBrand extends Component { |
|
|
if (countNumb == layoutIndex) {
|
|
|
result.offset = realContainerHeight - 44;
|
|
|
result.length = 44;
|
|
|
this.layoutLenghtOffesetForIndex['fliter' + fliter + 'row' + countNumb] = result;
|
|
|
return result;
|
|
|
}
|
|
|
let sectionDataSource = item.data;
|
...
|
...
|
@@ -249,7 +249,6 @@ export default class RedBrand extends Component { |
|
|
countNumb++;
|
|
|
}
|
|
|
if (validFloorData && countNumb == layoutIndex) {
|
|
|
this.layoutLenghtOffesetForIndex['fliter' + fliter + 'row' + countNumb] = result;
|
|
|
return result;
|
|
|
}
|
|
|
}
|
...
|
...
|
@@ -257,12 +256,12 @@ export default class RedBrand extends Component { |
|
|
} else if (item.key == 'productList') {
|
|
|
let brandFilterContainerHeight = this.props.fliter == '2' ? 84 : 40;
|
|
|
countNumb++; // filter
|
|
|
this.productListUpOffset = realContainerHeight;
|
|
|
if (countNumb == layoutIndex) {
|
|
|
result = {
|
|
|
length: brandFilterContainerHeight,
|
|
|
offset: realContainerHeight
|
|
|
};
|
|
|
this.layoutLenghtOffesetForIndex['fliter' + fliter + 'row' + countNumb] = result;
|
|
|
return result;
|
|
|
} else if (layoutIndex > countNumb) {
|
|
|
let rowHeight = Math.ceil(254 * width / 320);
|
...
|
...
|
@@ -271,7 +270,6 @@ export default class RedBrand extends Component { |
|
|
realContainerHeight += brandFilterContainerHeight;
|
|
|
result.length = rowHeight + rowMarginTop + rowMarginBottom;
|
|
|
result.offset = realContainerHeight + (layoutIndex - countNumb) * result.length;
|
|
|
this.layoutLenghtOffesetForIndex['fliter' + fliter + 'row' + layoutIndex] = result;
|
|
|
return result;
|
|
|
}
|
|
|
}
|
...
|
...
|
@@ -284,16 +282,21 @@ export default class RedBrand extends Component { |
|
|
|
|
|
|
|
|
getItemLayout(data, index) {
|
|
|
let {fliter} = this.props;
|
|
|
let key = key = 'fliter' + fliter + 'row' + index;
|
|
|
let {fliter,shopsdecorator} = this.props;
|
|
|
let key = 'fliter' + fliter + 'row' + index;
|
|
|
let sectionInfo = {
|
|
|
length: 0,
|
|
|
offset: 0,
|
|
|
};
|
|
|
if (this.layoutLenghtOffesetForIndex[key]) {
|
|
|
sectionInfo = this.layoutLenghtOffesetForIndex[key];
|
|
|
} else {
|
|
|
if (shopsdecorator.isFetching) {
|
|
|
sectionInfo = this._calculateSectionRealHeight(this.sectionData, index);
|
|
|
}else {
|
|
|
if (this.layoutLenghtOffesetForIndex[key]) {
|
|
|
sectionInfo = this.layoutLenghtOffesetForIndex[key];
|
|
|
} else {
|
|
|
sectionInfo = this._calculateSectionRealHeight(this.sectionData, index);
|
|
|
this.layoutLenghtOffesetForIndex[key] = sectionInfo;
|
|
|
}
|
|
|
}
|
|
|
return {length: sectionInfo.length, offset: sectionInfo.offset, index};
|
|
|
}
|
...
|
...
|
@@ -307,7 +310,7 @@ export default class RedBrand extends Component { |
|
|
if (shopsdecorator && shopsdecorator.template_type == '1') {
|
|
|
return <View style={{height:0}}></View>;
|
|
|
} else {
|
|
|
return (<RedBrandStoreFilter key={'sec' + sectionID} resource={fliter} onPressStoreFilter={this._onPressFilter}/>);
|
|
|
return (<RedBrandStoreFilter style={{zIndex: 999}} key={'sec' + sectionID} resource={fliter} onPressStoreFilter={this._onPressFilter}/>);
|
|
|
}
|
|
|
}
|
|
|
case 'productList': {
|
...
|
...
|
@@ -323,7 +326,7 @@ export default class RedBrand extends Component { |
|
|
}
|
|
|
let brandFilterContainerHeight = this.props.fliter == '2' ? 84 : 40;
|
|
|
return (
|
|
|
<View key={'sec' + sectionID} style={[styles.brandFilterContainer,{height:brandFilterContainerHeight}]} onLayout={
|
|
|
<View key={'sec' + sectionID} style={[styles.brandFilterContainer,{height:brandFilterContainerHeight,zIndex: 999}]} onLayout={
|
|
|
(evt) => {yPosition = evt.nativeEvent.layout.y;}}>
|
|
|
{this.props.fliter != '0' ?
|
|
|
<RedBrandStoreFilter resource={fliter} onPressStoreFilter={this._onPressFilter}/>
|
...
|
...
|
|