Advertisement
Guest User

Fuck

a guest
Apr 29th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import React, { Component } from 'react';
  2. import DATA from './data';
  3.  
  4. class ProductsWrapper extends Component {
  5.   constructor(props) {
  6.     super(props);
  7.     this.state = {numCol: 5};
  8.     this.renderProducts = this.renderProducts.bind(this);
  9.     this.changeCols = this.changeCols.bind(this);
  10.   }
  11.  
  12.     componentDidMount(){
  13.         window.addEventListener("resize", this.changeCols);
  14.         this.changeCols();
  15.     }
  16.  
  17.     componentWillUnmount(){
  18.          window.removeEventListener("resize", this.changeCols);
  19.     }
  20.  
  21.     changeCols(){
  22.         const width = window.innerWidth;
  23.         if(width < 525) this.setState({numCol: 255});
  24.     }
  25.  
  26.   renderProducts(n) {
  27.     const numberOfColumns = n;
  28.     const numberOfPiecesInOneColumn = Math.ceil(DATA.length / numberOfColumns);
  29.     const arr = [];
  30.     for(var i = 0; i < numberOfColumns; i++) {
  31.       arr.push(null);
  32.     }
  33.     arr.map((_, j) => {
  34.       const data = [];
  35.       for (let i = 0; i < numberOfPiecesInOneColumn; i++) {
  36.         if (DATA[j + i * numberOfColumns]) {
  37.           data.push(DATA[j + i * numberOfColumns]);
  38.         }
  39.       }
  40.       arr[j] = data;
  41.     });
  42.  
  43.     const cols = arr.map((d, i) => (
  44.       <div key={`${i}parent`} className="flex-col" style={{ width: `${100/numberOfColumns}%` }}>
  45.         {d.map((k, j) => (
  46.           <div key={`${j}child`} className="product">
  47.             <div className="inner">
  48.               <img src={`${k.imgAddress}`} alt={`${k.imgName}`} />
  49.               <div className="caption">
  50.                 <p className="product-name">{k.name}</p>
  51.                 <p className="product-author">{k.author}</p>
  52.                 <p className="product-location">{k.location}</p>
  53.               </div>
  54.             </div>
  55.           </div>
  56.         ))}
  57.       </div>
  58.     ));
  59.     return cols;
  60.   }
  61.  
  62.   render() {
  63.     return (
  64.       <div style={{ display: 'flex', padding: '8px', flexDirection: 'row', flexWrap: 'wrap' }}>
  65.         {this.renderProducts(5)}
  66.       </div>
  67.     );
  68.   }
  69. }
  70.  
  71. ProductsWrapper.propTypes = {};
  72.  
  73. export default ProductsWrapper;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement