Advertisement
Guest User

Trainers.js

a guest
Jul 23rd, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import React from 'react';
  2. import TrainerCover from './TrainerCover/TrainerCover';
  3. import Loading from '../../Components/Loading/Loading';
  4.  
  5. export default class Trainers extends React.Component {
  6.  
  7.     constructor() {
  8.         super();
  9.         this.state = { trainersData: [] };
  10.     }
  11.  
  12.     componentDidMount() {
  13.         fetch('/rest/profiles')
  14.             .then(res => res.json())
  15.             .then(trainersData => this.setState({ trainersData }))
  16.     }
  17.  
  18.     searchTrainer(input) {
  19.         const searchInput = input.toUpperCase();
  20.         function transform(input) {
  21.             return input
  22.                 .toUpperCase()
  23.                 .includes(searchInput);
  24.         }
  25.         return this.state.trainersData
  26.             .filter(person => (
  27.                 transform(person.id) ||
  28.                 transform(person.fullname) ||
  29.                 transform(person.address) ||
  30.                 transform(person.type) ||
  31.                 transform(person.description)
  32.             ));
  33.     }
  34.  
  35.     inputHandler(event) {
  36.         let value = event.target.value;
  37.         this.setState({ personTrainers: this.state.trainersData.length });
  38.         return this.searchTrainer(value).length > 0 ?
  39.             this.setState({ trainersData: this.searchTrainer(value) }) :
  40.             this.componentDidMount();
  41.     }
  42.  
  43.     render() {
  44.         let trainers = this.state.trainersData;
  45.         if (!trainers) {
  46.             return <Loading />;
  47.         }
  48.         return (
  49.             <div>
  50.                 <h2>Find your nearest trainer</h2>
  51.                 <input type="text" placeholder="Search for your type of discipline" onChange={e => this.inputHandler(e)} />
  52.                 <div className='container'>
  53.                     {
  54.                         trainers.map(trainer => (
  55.                             <TrainerCover
  56.                                 key={trainer.id}
  57.                                 id={trainer.id}
  58.                                 firstname={trainer.firstname}
  59.                                 lastname={trainer.lastname}
  60.                                 address={trainer.address}
  61.                                 type={trainer.type}
  62.                                 rate={trainer.rate}
  63.                                 map={trainer.map}
  64.                                 src={trainer.src}
  65.                                 alt={trainer.lastname}
  66.                             />
  67.                         ))
  68.                     }
  69.                 </div>
  70.             </div>
  71.         );
  72.     }
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement