|
1 | 1 | import React from 'react'; |
2 | | -import { Router, Link } from 'react-router' |
| 2 | +import { Link } from 'react-router' |
3 | 3 |
|
4 | | -import Visit from 'services/Visit'; |
| 4 | +import VisitService from 'services/Visit' |
| 5 | + |
| 6 | +import Visit from 'components/Visit/Visit' |
| 7 | +import ErrorComponent from 'components/Error/Error' |
5 | 8 |
|
6 | 9 | class Area extends React.Component |
7 | 10 | { |
8 | 11 | constructor(props) { |
9 | 12 | super(props); |
10 | 13 | this.state = { |
11 | | - areas : [] |
| 14 | + areas : [], |
| 15 | + error : '' |
12 | 16 | }; |
13 | | - this.renderVisit = this.renderVisit.bind(this); |
14 | | - this.renderArea = this.renderArea.bind(this); |
| 17 | + this.generate = this.generate.bind(this); |
| 18 | + this.generateError = this.generateError.bind(this); |
| 19 | + this.getVisitGroupByArea = this.getVisitGroupByArea.bind(this); |
15 | 20 | this.getVisitGroupByArea(); |
16 | 21 | } |
17 | 22 |
|
18 | 23 | getVisitGroupByArea() { |
19 | | - Visit.getGroupByArea().then((response) => { |
20 | | - this.setState({areas: response.data.visits}); |
| 24 | + VisitService.getGroupByArea().then((response) => { |
| 25 | + this.setState({error: ''}); |
| 26 | + this.setState({ |
| 27 | + areas: this.generate(response.data.visits) |
| 28 | + }); |
| 29 | + }).catch((error) => { |
| 30 | + if (error.response) { |
| 31 | + this.setState({error: error.response.data.error}); |
| 32 | + } |
21 | 33 | }); |
22 | 34 | } |
23 | 35 |
|
24 | | - renderVisit(visits) { |
25 | | - return visits.map((areaVisit, key) => { |
26 | | - return ( |
27 | | - <tr key={ key } > |
28 | | - <td>{ areaVisit.visit.client.name }</td> |
29 | | - <td>{ areaVisit.visit.visit_date }</td> |
30 | | - <td className="is-icon"> |
31 | | - <Link to={ `/visit/${areaVisit.visit._id}` } > |
32 | | - <i className="fa fa-info-circle" /> |
33 | | - </Link> |
34 | | - </td> |
35 | | - </tr> |
36 | | - ); |
37 | | - }); |
| 36 | + generateError(error) { |
| 37 | + return ( |
| 38 | + <ErrorComponent error={this.state.error} /> |
| 39 | + ); |
38 | 40 | } |
39 | 41 |
|
40 | | - renderArea(areas) { |
| 42 | + generate(areas) { |
41 | 43 | return areas.map((area, key) => { |
42 | 44 | return ( |
43 | 45 | <div className="area" key={ key }> |
44 | 46 | <h3 className="title is-3">{area._id}</h3> |
45 | | - <table className="table"> |
46 | | - <thead> |
47 | | - <tr> |
48 | | - <th>Name</th> |
49 | | - <th>Last Visit</th> |
50 | | - <th /> |
51 | | - </tr> |
52 | | - </thead> |
53 | | - <tbody> |
54 | | - {this.renderVisit(area.visits)} |
55 | | - </tbody> |
56 | | - </table> |
| 47 | + <Visit visits={area.visits} /> |
57 | 48 | </div> |
58 | 49 | ); |
59 | 50 | }); |
60 | 51 | } |
61 | 52 |
|
62 | 53 | render() { |
| 54 | + if (this.state.error) { |
| 55 | + let error = this.generateError(this.state.error); |
| 56 | + return error; |
| 57 | + } |
63 | 58 | return ( |
64 | 59 | <div className="container hello"> |
65 | | - { this.renderArea(this.state.areas) } |
| 60 | + { this.state.areas } |
66 | 61 | </div> |
67 | 62 | ); |
68 | 63 | } |
|
0 commit comments