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