Skip to content

Commit d209c22

Browse files
committed
Meetup weekview filter weekdays for two weeks, style weekview
1 parent 97d4fd7 commit d209c22

File tree

3 files changed

+97
-55
lines changed

3 files changed

+97
-55
lines changed

custom.js

Lines changed: 40 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,21 @@
44
ltc.meetups = [];
55
ltc.markers = {};
66

7+
// get week range for meetups
8+
let currentWeek = getWeekRange();
9+
let today = new Date;
10+
console.log(currentWeek);
11+
let firstDow = today.getDate()-currentWeek[1].date + 1;
12+
let lastDow = currentWeek[14].date-today.getDate();
713
const api = {};
814
api.group = 'LearnTeachCode';
9-
api.perPage = 15;
15+
// api.perPage = 15; &page=' + api.perPage +
1016
api.offset = 0;
1117
api.path = 'https://api.meetup.com/2/events?&sign=true&photo-host=public';
12-
api.url = api.path + '&group_urlname=' + api.group + '&page=' + api.perPage;
18+
api.startWeekDate = '-' + firstDow + 'd';
19+
api.endWeekDate = lastDow + 'd';
20+
api.status = 'upcoming,past';
21+
api.url = api.path + '&group_urlname=' + api.group + '&status=' + api.status + '&time=' + api.startWeekDate + ',' + api.endWeekDate;
1322
api.err = "Error occurred processing Meetup API URL";
1423

1524
// Get Meetup Data
@@ -24,6 +33,9 @@
2433
}
2534

2635
function processData(data) {
36+
let utctime = new Date(data.results[0].time);
37+
console.log(utctime.toUTCString());
38+
2739
data.results.forEach( function( meetup, index ) {
2840
// Get event formatted dates and time
2941
data.results[index].d = getDateFormats( meetup );
@@ -145,38 +157,41 @@
145157
function listMeetupsinWeekView(data) {
146158

147159
let week = getWeekRange();
148-
console.log('week', week[1]);
149160

150161
let unfilteredMeetups = data.results;
151-
console.log(unfilteredMeetups);
152162
let currentDay = new Date();
153163
let maxDay = new Date(currentDay.getDate()+5);
154164
let maxTime = maxDay.getTime(); //compare by utc time
155-
console.log(maxTime);
156165

157-
let filteredMeetups = unfilteredMeetups.filter(meetup.time >= currentTime);
166+
let filteredMeetups = unfilteredMeetups.filter((meetup) => meetup.time >= maxTime);
158167

159168
let meetupsByDay = getWeekFormattedMeetups(filteredMeetups);
160169

161-
console.log('meetups by day', meetupsByDay);
170+
for(let i=1; i <= 7; i++) {
171+
let week1div = '<div class="day" id="' + week[i].dow.toLowerCase() + week[i].date + '"></div>';
172+
document.querySelector('#firstweek').insertAdjacentHTML('beforeend', week1div);
173+
}
162174

175+
for(let i=8; i <= 14; i++) {
176+
let week2div = '<div class="day" id="' + week[i].dow.toLowerCase() + week[i].date + '"></div>';
177+
document.querySelector('#secondweek').insertAdjacentHTML('beforeend', week2div);
178+
}
163179

164180
for(let i=1; i < week.length; i++) {
165181
let weekday = week[i];
166-
167-
let teststring = meetupsByDay[weekday.dow.substring(0,3)];
168-
let formattedWeek = '<div>'
182+
let dowDay = weekday.dow.substring(0,3) + weekday.date;
183+
let teststring = meetupsByDay[dowDay];
184+
let formattedWeek = '<div class="weekday">'
169185
+ weekday.dow.substring(0,3) + ' '
170186
+ weekday.month.substring(0,3) + ' '
171-
+ weekday.date
172-
+ '</div>'
187+
+ weekday.date
188+
+ '</div>';
173189
if(teststring) {
174190
formattedWeek += teststring.join('');
175191
} else {
176-
formattedWeek += 'No meetups! :(';
177-
}
178-
$('#' + weekday.dow.toLowerCase()).append(formattedWeek);
179-
192+
formattedWeek += '<div class="week-meetup">No meetups!</div';
193+
}
194+
$('#' + weekday.dow.toLowerCase() + weekday.date).append(formattedWeek);
180195
}
181196
}
182197

@@ -189,7 +204,7 @@
189204
const weekdays = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];
190205
const months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
191206

192-
for(let i=0; i<7; i++) {
207+
for(let i=0; i<14; i++) {
193208
let next = new Date(d.getTime());
194209
next.setDate(first+i);
195210
week.push({
@@ -210,24 +225,22 @@
210225
meetups.forEach( function( meetup ) {
211226
let d = getDateFormats( meetup );
212227
// does d.dow exist within dayArray as array, if not create array
213-
if( !dayArrays[d.dow] ) {
214-
dayArrays[d.dow] = [];
228+
let dowDay = d.dow + d.day;
229+
if( !dayArrays[dowDay] ) {
230+
dayArrays[dowDay] = [];
215231
}
216232

217233
let formattedMeetup = '<li id="meetup-' + meetup.id + '" class="week-meetup">'
218-
+ '<div class="infobox">'
219-
+ ' <div class="date">' + d.dowFull + ' ' + d.day + '</div>'
234+
+ '<div class="timebox">' + d.time + '</div>'
235+
+ '<div class="infobox-week">'
236+
// + ' <div class="date">' + d.dowFull + ' ' + d.day + '</div>'
220237
+ ' <div class="title"><a href="' + meetup.event_url + '">' + meetup.name + '</a></div>'
221-
+ ' <div>' + meetup.venue.city + ' - ' + meetup.venue.name + '</div>'
222-
+ '</div>'
223-
+ '<div>'
224-
+ ' <div>' + d.time + '</div>'
238+
+ ' <div class="city-week">' + meetup.venue.city + ' - ' + meetup.venue.name + '</div>'
225239
+ '</div>'
226240
+'</li>';
227241

228-
dayArrays[d.dow].push(formattedMeetup);
242+
dayArrays[dowDay].push(formattedMeetup);
229243
});
230-
console.log('formated data', dayArrays);
231244
return dayArrays;
232245
}
233246
/**

index.html

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
gtag('config', 'UA-118124010-1');
1818
</script>
1919
<!-- Google Analytics - END -->
20-
2120
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.4.0/dist/leaflet.css"
2221
integrity="sha512-puBpdR0798OZvTTbP4A8Ix/l+A4dHDD0DGqYW6RQ+9jxkRFclaxxQb/SJAWZfWAkuyeQUytO7+7N4QKrDh+drA=="
2322
crossorigin=""/>
@@ -42,14 +41,15 @@ <h2>Upcoming Events:</h2>
4241
<img src='./weekview.png' alt='week view' id='weekbutton'>
4342
</div>
4443

45-
<div class='weekview' style='display: none'>
46-
<div class='day' id='sunday'></div>
47-
<div class='day' id='monday'></div>
48-
<div class='day' id='tuesday'></div>
49-
<div class='day' id='wednesday'></div>
50-
<div class='day' id='thursday'></div>
51-
<div class='day' id='friday'></div>
52-
<div class='day' id='saturday'></div>
44+
<div class='weekview slider' style='display: none'>
45+
<button class='prev' onclick='plusSlides(-1)'>&#10094</button>
46+
<button class='next' onclick='plusSlides(1)'>&#10095</button>
47+
<div class='week slide fade' id='firstweek'></div>
48+
<div class='week slide fade' id='secondweek'></div>
49+
</div>
50+
<div class='dots'>
51+
<span class='dot' onclick='currentSlide(1)'></span>
52+
<span class='dot' onclick='currentSlide(2)'></span>
5353
</div>
5454

5555
<ul class="meetups"></ul>
@@ -86,5 +86,6 @@ <h2>Stuff we do at Learn Teach Code:</h2>
8686
integrity="sha512-QVftwZFqvtRNi0ZyCtsznlKSWOStnDORoefr1enyq5mVL4tmKB3S/EnC3rRJcxCPavG10IcrVGSmPh6Qw5lwrg=="
8787
crossorigin=""></script>
8888
<script src="custom.js"></script>
89+
<script src="slider.js"></script>
8990
</body>
9091
</html>

style.css

Lines changed: 47 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -105,22 +105,54 @@ img:hover {
105105

106106
.weekview {
107107
border: 1px solid #ccc;
108+
position: relative;
109+
}
110+
111+
.week {
108112
display: flex;
109-
flex-flow: row;
110-
flex: 1 100%;
113+
flex-flow: row nowrap;
114+
flex: 2 50% auto;
111115
}
112116

113117
.day {
114118
border: 1px solid #ccc;
115-
width: 100%;
116-
text-align: center;
119+
/* text-align: center; */
120+
width: 15%;
117121
}
118122

119123
.week-meetup {
120124
list-style: none;
121125
font-size: 0.8em;
126+
border: 1px solid #ccc;
127+
text-decoration: none;
128+
line-height: 18px;
129+
border: 1px solid #b74949;
130+
text-align: center;
131+
border-radius: 5px;
132+
margin: 5px;
122133
}
123134

135+
.timebox {
136+
border-bottom: 1px solid #b74949;
137+
text-align: center;
138+
border-radius: 5px 5px 0 0;
139+
background-color: rgba(183, 73, 73, 0.3);
140+
}
141+
.city-week {
142+
font-style: italic;
143+
}
144+
.weekday {
145+
text-transform: uppercase;
146+
background-color: #ddd;
147+
text-align: center;
148+
}
149+
150+
.title a {
151+
text-decoration: none;
152+
}
153+
.infobox-week {
154+
padding: 5px;
155+
}
124156
/** UPCOMING EVENTS **/
125157
.meetups {
126158
list-style: none;
@@ -189,14 +221,7 @@ img:hover {
189221
.load-more a:hover {
190222
background: rgba(183, 73, 73, 0.3);
191223
}
192-
/* Slider */
193-
.slider {
194-
position: relative;
195-
margin: auto;
196-
max-width: 1000px;
197-
height: 200px;
198-
border: 1px solid black;
199-
}
224+
/** Slider **/
200225
.slide {
201226
display: none;
202227
}
@@ -205,23 +230,26 @@ img:hover {
205230
position: absolute;
206231
width: auto;
207232
height: 100%;
208-
margin-top: -18px;
233+
margin-top: 0px;
209234
padding: 16px;
210-
color: white;
235+
color: black;
211236
font-weight: bold;
212237
font-size: 18px;
213238
transition: 0.6s ease;
214-
border-radius: 0 3px 3px 0;
239+
border-radius: 3px 0 0 3px;
215240
user-select: none;
216-
background: none;
217-
border: none;
241+
background: rgba(0, 0, 0, 0.218);
218242
}
219243
.next {
220-
right: 0;
221-
border-radius: 3px 0 0 3px;
244+
right: -45px;
245+
border-radius: 0 3px 3px 0;
246+
}
247+
.prev {
248+
left: -45px;
222249
}
223250
.prev:hover, .next:hover {
224251
background-color: rgba(0, 0, 0, 0.218);
252+
color: white;
225253
}
226254
.prev:focus, .next:focus {
227255
outline: none;

0 commit comments

Comments
 (0)