1
1
import React , { Component } from 'react' ;
2
2
import Header from '../../components/header' ;
3
3
import Footer from '../../components/footer' ;
4
- import Subscribe from '../../components/subscribe' ;
5
4
import Card from '../../components/eventcard' ;
6
5
import woman from '../../assets/images/eventwoman.png' ;
7
6
import man from '../../assets/images/eventman.png' ;
8
7
import '../../styles/views/event.css' ;
9
8
import Form from "react-bootstrap/Form" ;
10
9
import Col from "react-bootstrap/Col" ;
11
10
import Button from "react-bootstrap/Button" ;
12
- import axios from 'axios' ;
11
+ import { events_ , events_search } from './eventService' ;
12
+ import { CircularProgress } from '@material-ui/core' ;
13
13
14
14
15
15
class Events extends Component {
16
16
constructor ( props ) {
17
17
super ( props ) ;
18
18
this . state = {
19
19
status : null ,
20
+ selectedEvent : null ,
21
+ loading : true ,
22
+ show : false ,
23
+ setShow : false ,
20
24
eventsList : [ ] ,
25
+ message : '' ,
26
+ location : '' ,
21
27
} ;
22
28
}
23
-
29
+
30
+ changeHandler = ( event ) => {
31
+ this . setState ( { [ event . target . name ] : event . target . value } )
32
+ }
33
+
34
+ handleSearch = ( e ) => {
35
+ e . preventDefault ( ) ;
36
+ this . setState ( { loading : true } )
37
+ var locator = this . state . location ;
38
+ events_search ( locator )
39
+ . then ( ( response ) => {
40
+ var results = response . data . data . events ;
41
+ this . setState ( { loading : false } )
42
+ if ( results . length > 0 ) {
43
+ this . setState ( { message : '' } )
44
+ this . setState ( { eventsList : results } )
45
+ } else {
46
+ this . setState ( { message : `No events found for ${ locator } !` } )
47
+ }
48
+ } )
49
+ }
50
+
24
51
render ( ) {
25
52
26
53
return (
@@ -40,16 +67,13 @@ class Events extends Component {
40
67
< img src = { man } alt = "..." />
41
68
</ div >
42
69
</ div >
43
- < Form className = "form" >
70
+ < Form className = "form" onSubmit = { this . handleSearch } >
44
71
< Form . Row >
45
72
< Col >
46
- < Form . Control placeholder = "Location" />
73
+ < Form . Control placeholder = "Location" readOnly style = { { visibility : 'hidden' } } />
47
74
</ Col >
48
75
< Col >
49
- < Form . Control placeholder = "Time Zone" />
50
- </ Col >
51
- < Col >
52
- < Form . Control placeholder = "Keyword" />
76
+ < Form . Control placeholder = "Location" name = "location" value = { this . state . location } onChange = { this . changeHandler } />
53
77
</ Col >
54
78
< Col >
55
79
< Button className = "sub-button event-button" type = "submit" > SEARCH</ Button >
@@ -58,28 +82,48 @@ class Events extends Component {
58
82
</ Form . Row >
59
83
</ Form >
60
84
</ div >
61
- < div className = "row events" >
62
- { this . state . eventsList . map ( ( event ) => (
63
- < Card
64
- key = { event . id }
65
- eventTitle = { event . name }
66
- eventLocation = { event . location }
67
- eventTime = { event . startTime }
68
- />
69
- ) ) }
85
+ < div className = 'row' >
86
+ { this . state . loading ?
87
+ < CircularProgress style = { { marginLeft :'auto' , marginRight :'auto' } } />
88
+ : < p > </ p >
89
+ }
70
90
</ div >
71
- { /* <Subscribe /> */ }
91
+ {
92
+ this . state . message ?
93
+ < div className = 'row' >
94
+ < p style = { { marginLeft :'auto' , marginRight :'auto' , color :'#B70569' } } > { this . state . message } </ p >
95
+ </ div >
96
+ :
97
+ < div className = "row events" >
98
+ { this . state . eventsList . map ( ( event ) => (
99
+ < Card
100
+ key = { event . _id }
101
+ eventTitle = { event . name }
102
+ eventLocation = { event . location }
103
+ eventTime = { event . startTime }
104
+ eventEndTime = { event . endTime }
105
+ eventDetails = { event . description }
106
+ />
107
+ ) ) }
108
+ </ div >
109
+ }
72
110
< div className = "jumbotron" > </ div >
73
111
</ div >
74
112
< Footer />
75
113
</ React . Fragment >
76
114
)
77
115
}
78
116
async componentDidMount ( ) {
79
- await axios . get ( 'https://wosca-backend.herokuapp.com/api/v1/events' )
117
+ await events_ ( )
80
118
. then ( ( response ) => {
81
119
var vop = response . data
82
- this . setState ( { eventsList : vop . data . events } )
120
+ var all_events = vop . data . events
121
+ this . setState ( { loading : false } )
122
+ if ( all_events . length > 0 ) {
123
+ this . setState ( { eventsList : all_events } )
124
+ } else {
125
+ this . setState ( { message : 'No events found!' } )
126
+ }
83
127
} )
84
128
}
85
129
}
0 commit comments