1
+ /**
2
+ * Created by jjhale on 7/15/18.
3
+ */
4
+
5
+
6
+ /*
7
+ Display next meeting information, via Meetup API
8
+ API Docs: http://www.meetup.com/meetup_api/docs/2/events/
9
+ */
10
+ console . log ( 'starting' ) ;
11
+ $ . ajax ( {
12
+ type : "POST" ,
13
+ dataType : 'jsonp' ,
14
+ url : 'https://api.meetup.com/Code-for-Baltimore/events?photo-host=public&page=20&sig_id=14311654&sig=124bf6af6e8b516a9d3e570b6d0fcd6b8ae5ddaa' ,
15
+ crossDomain : true ,
16
+ xhrFields : {
17
+ withCredentials : true
18
+ } ,
19
+ beforeSend : function ( ) {
20
+ $ ( '#meetup' ) . addClass ( 'loading' ) ; // Show loader icon
21
+ } ,
22
+ complete : function ( ) {
23
+ $ ( '#meetup' ) . removeClass ( 'loading' ) ; // Hide loader icon
24
+ }
25
+ } )
26
+ . done ( function ( xhr , textStatus , response , data , responseJSON ) {
27
+ console . log ( 'done' ) ;
28
+ console . log ( typeof ( xhr ) ) ;
29
+ console . log ( xhr . length ) ;
30
+ console . log ( xhr ) ;
31
+
32
+
33
+ if ( xhr . data [ 0 ] == undefined ) { // If there is no upcoming event posted on Meetup...
34
+ console . log ( 'undefined next event' ) ;
35
+
36
+ document . getElementById ( "meetupDetails" ) . innerHTML = 'TBD (check back soon)' ; // Meeting date & place
37
+ document . getElementById ( "meetupRSVP" ) . style . display = 'none' ; // RSVP info
38
+ document . getElementById ( "meetupCTA" ) . innerHTML = 'Join Our Meetup' ; // Call to Action text
39
+ document . getElementById ( "meetupCTA" ) . href = 'https://www.meetup.com/Code-for-Baltimore/' ; // Call to Action link
40
+
41
+ } else
42
+ {
43
+ // Otherwise...
44
+ console . log ( 'there is a next event' ) ;
45
+
46
+ /*
47
+ * Gather the Variables
48
+ */
49
+
50
+ // Next Event
51
+ var nextEvent = xhr . data [ 0 ] // First event in the array returned from API
52
+
53
+ // Permalink
54
+ var eventURL = nextEvent . link // URL
55
+
56
+ // desc
57
+ var eventDesc = nextEvent . description ;
58
+
59
+ // Location
60
+ if ( nextEvent . venue != undefined ) {
61
+ var eventLocation = nextEvent . venue . name // Location
62
+ // Normal
63
+ var eventAddress = nextEvent . venue . address_1 // Address
64
+ var eventLatitude = nextEvent . venue . lat // Latitutde
65
+ var eventLongitude = nextEvent . venue . lon // Longitude
66
+ var eventCity = nextEvent . venue . city // Cityx
67
+ var eventState = nextEvent . venue . state // State
68
+ // Formatted for Gmaps
69
+ var gmapAddress = eventAddress . split ( ' ' ) . join ( '+' ) + ',' // Address
70
+ var gmapLat = '@' + eventLatitude + ',' // Latitude
71
+ var gmapLon = eventLongitude + ',13z' // Longitude
72
+ var gmapCity = '+' + eventCity + ',' // City
73
+ var gmapState = '+' + eventState + '/' // State
74
+ // Gmaps Link
75
+ var gmapStart = 'https://www.google.com/maps/place/' // Beginning of URL
76
+ //var gmapLink = gmapStart+gmapAddress+gmapCity+gmapState+gmapLat+gmapLon; // Complete URL
77
+ var gmapLink = gmapStart + gmapAddress + gmapCity + gmapState ; // Complete URL
78
+ } else {
79
+ var eventAddress = 'TBD' // Address
80
+ var gmapLink = eventURL // URL
81
+ }
82
+
83
+ // RSVP
84
+ var headCount = nextEvent . yes_rsvp_count ; // Head Count (total number of 'yes' responses)
85
+
86
+ var RSVPMessage = headCount + " people will be there — what about you?"
87
+ var CTA = "RSVP on Meetup"
88
+
89
+ // Date & Time
90
+ if ( nextEvent . time != undefined ) {
91
+
92
+ // Formatting
93
+ var m_names = [ "January" , "February" , "March" , // Month
94
+ "April" , "May" , "June" , "July" , "August" , "September" ,
95
+ "October" , "November" , "December" ] ;
96
+ var d_names = [ "Sunday" , "Monday" , "Tuesday" , // Day
97
+ "Wednesday" , "Thursday" , "Friday" , "Saturday" , "Sunday" ] ;
98
+ function formatAMPM ( date ) { // Time
99
+ var hours = date . getHours ( ) ;
100
+ var minutes = date . getMinutes ( ) ;
101
+ var ampm = hours >= 12 ? 'pm' : 'am' ;
102
+ hours = hours % 12 ;
103
+ hours = hours ? hours : 12 ; // the hour '0' should be '12'
104
+ minutes = minutes < 10 ? '0' + minutes : minutes ;
105
+ var strTime = hours + ':' + minutes + ' ' + ampm ;
106
+ return strTime ;
107
+ }
108
+
109
+ // Now
110
+ var now = new Date ; // Get Today's Date
111
+ var todayMonth = now . getMonth ( ) // Month
112
+ var todayNumber = now . getDate ( ) // Number
113
+ var todayTime = formatAMPM ( now ) // Time (formatted)
114
+
115
+ // Next Event
116
+ var date = new Date ( nextEvent . time ) // Get Next Event's Date
117
+ var dateYear = date . getFullYear ( ) // Year
118
+ var dateMonth = date . getMonth ( ) // Month
119
+ var dateDay = date . getDay ( ) // Day
120
+ var dateNumber = date . getDate ( ) // Number
121
+ var dateTime = formatAMPM ( date ) // Time (formatted)
122
+
123
+ var eventName = nextEvent . name ;
124
+
125
+ // Final Variables
126
+ if ( ( todayNumber == dateNumber ) && ( todayMonth == dateMonth ) ) {
127
+ var prettyDate = 'Today'
128
+ } else {
129
+ var prettyDate = d_names [ dateDay ] + ', ' + m_names [ dateMonth ] + ' '
130
+ + dateNumber + ", " + dateYear ; // Otherwise
131
+ }
132
+
133
+ } else {
134
+ var prettyDate = 'TBD' ;
135
+ var dateTime = '--:--' ;
136
+ var eventName = "No upcoming events" ;
137
+ }
138
+
139
+ /*
140
+ * Do Stuff with the Variables
141
+ */
142
+
143
+ // Event Title
144
+ document . getElementById ( "meetupName" ) . innerHTML = eventName ;
145
+
146
+
147
+ // Date & Time
148
+ document . getElementById ( "meetupDate" ) . innerHTML = prettyDate ; // Date & Time
149
+ document . getElementById ( "meetupTime" ) . innerHTML = dateTime ; // Date & Time
150
+
151
+ // Location
152
+ document . getElementById ( "meetupLocation" ) . innerHTML = eventLocation + " " + eventAddress ; // Location name
153
+ document . getElementById ( "meetupLocation" ) . href = gmapLink ; // Location link (gmaps)
154
+
155
+ // RSVP
156
+ document . getElementById ( "meetupRSVP" ) . innerHTML = RSVPMessage ; // RSVP Total + Visitor's Status
157
+
158
+ // Button
159
+ document . getElementById ( "meetupCTA" ) . innerHTML = CTA ; // Call to Action Text
160
+ document . getElementById ( "meetupCTA" ) . href = eventURL ; // Call to Action Link
161
+
162
+ // Description:
163
+ document . getElementById ( "meetupDesc" ) . innerHTML = eventDesc
164
+
165
+ }
166
+
167
+ } )
168
+
169
+ . fail ( function ( xhr , textStatus , errorThrown ) {
170
+ alert ( xhr . responseText ) ;
171
+ alert ( textStatus ) ;
172
+ } ) ;
0 commit comments