Skip to content

Commit ecd349a

Browse files
Merge pull request freeCodeCamp#23 from Ethan-Arrowood/feature/map
Added renderMap functionality.
2 parents f2408da + 1df7b3b commit ecd349a

File tree

6 files changed

+97
-8
lines changed

6 files changed

+97
-8
lines changed

challenges.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"name":"Python Beginner Challenges","last_edit":1496278825778,"challenges":[[],[{"id":"592f1cc969cf862d8a7bb7f2","title":"Input Edit","repl":"https://repl.it/student_embed/assignment/136137/d860e0ad34862a709895f54706dcf9af","completed":false,"chapter":1,"lesson":3}],[],[],[{"id":"592893767a194ee412ae2e1f","title":"Addition Edit","repl":"https://repl.it/student_embed/assignment/136137/d860e0ad34862a709895f54706dcf9af","completed":false,"chapter":4,"lesson":1},{"id":"592895b87a194ee412ae2e20","title":"Subtraction","repl":"https://repl.it/student_embed/assignment/136137/d860e0ad34862a709895f54706dcf9af","completed":false,"chapter":4,"lesson":2},{"id":"592895ef7a194ee412ae2e21","title":"Multiplication","repl":"https://repl.it/student_embed/assignment/136137/d860e0ad34862a709895f54706dcf9af","completed":false,"chapter":4,"lesson":3},{"id":"5928961e7a194ee412ae2e22","title":"Float Division","repl":"https://repl.it/student_embed/assignment/136137/d860e0ad34862a709895f54706dcf9af","completed":false,"chapter":4,"lesson":4},{"id":"592896397a194ee412ae2e23","title":"Integer Division","repl":"https://repl.it/student_embed/assignment/136137/d860e0ad34862a709895f54706dcf9af","completed":false,"chapter":4,"lesson":5},{"id":"5928965a7a194ee412ae2e24","title":"Exponents","repl":"https://repl.it/student_embed/assignment/136137/d860e0ad34862a709895f54706dcf9af","completed":false,"chapter":4,"lesson":6},{"id":"592896717a194ee412ae2e25","title":"Remainder","repl":"https://repl.it/student_embed/assignment/136137/d860e0ad34862a709895f54706dcf9af","completed":false,"chapter":4,"lesson":7},{"id":"592898c97a194ee412ae2e26","title":"Divmod","repl":"https://repl.it/student_embed/assignment/136137/d860e0ad34862a709895f54706dcf9af","completed":false,"chapter":4,"lesson":8},{"id":"592898dc7a194ee412ae2e27","title":"Square Root","repl":"https://repl.it/student_embed/assignment/136137/d860e0ad34862a709895f54706dcf9af","completed":false,"chapter":4,"lesson":9},{"id":"592899f67a194ee412ae2e28","title":"Sum","repl":"https://repl.it/student_embed/assignment/136137/d860e0ad34862a709895f54706dcf9af","completed":false,"chapter":4,"lesson":10},{"id":"59289a1a7a194ee412ae2e29","title":"Rounding","repl":"https://repl.it/student_embed/assignment/136137/d860e0ad34862a709895f54706dcf9af","completed":false,"chapter":4,"lesson":11},{"id":"59289a2f7a194ee412ae2e2a","title":"Absolute Value","repl":"https://repl.it/student_embed/assignment/136137/d860e0ad34862a709895f54706dcf9af","completed":false,"chapter":4,"lesson":12},{"id":"59289a477a194ee412ae2e2b","title":"Min Value","repl":"https://repl.it/student_embed/assignment/136137/d860e0ad34862a709895f54706dcf9af","completed":false,"chapter":4,"lesson":13},{"id":"59289a5a7a194ee412ae2e2c","title":"Max Value","repl":"https://repl.it/student_embed/assignment/136137/d860e0ad34862a709895f54706dcf9af","completed":false,"chapter":4,"lesson":14}],[]]}
1+
{"name":"Python Beginner Challenges","last_edit":1496291556934,"chapters":["Introduction","Input","Dummy","Dummy 2","Math"],"challenges":[[],[],[],[],[{"id":"592893767a194ee412ae2e1f","title":"Addition","repl":"https://repl.it/student_embed/assignment/136137/d860e0ad34862a709895f54706dcf9af","completed":false,"chapter":4,"lesson":1},{"id":"592895b87a194ee412ae2e20","title":"Subtraction","repl":"https://repl.it/student_embed/assignment/136137/d860e0ad34862a709895f54706dcf9af","completed":false,"chapter":4,"lesson":2},{"id":"592895ef7a194ee412ae2e21","title":"Multiplication","repl":"https://repl.it/student_embed/assignment/136137/d860e0ad34862a709895f54706dcf9af","completed":false,"chapter":4,"lesson":3},{"id":"5928961e7a194ee412ae2e22","title":"Float Division","repl":"https://repl.it/student_embed/assignment/136137/d860e0ad34862a709895f54706dcf9af","completed":false,"chapter":4,"lesson":4},{"id":"592896397a194ee412ae2e23","title":"Integer Division","repl":"https://repl.it/student_embed/assignment/136137/d860e0ad34862a709895f54706dcf9af","completed":false,"chapter":4,"lesson":5},{"id":"5928965a7a194ee412ae2e24","title":"Exponents","repl":"https://repl.it/student_embed/assignment/136137/d860e0ad34862a709895f54706dcf9af","completed":false,"chapter":4,"lesson":6},{"id":"592896717a194ee412ae2e25","title":"Remainder","repl":"https://repl.it/student_embed/assignment/136137/d860e0ad34862a709895f54706dcf9af","completed":false,"chapter":4,"lesson":7},{"id":"592898c97a194ee412ae2e26","title":"Divmod","repl":"https://repl.it/student_embed/assignment/136137/d860e0ad34862a709895f54706dcf9af","completed":false,"chapter":4,"lesson":8},{"id":"592898dc7a194ee412ae2e27","title":"Square Root","repl":"https://repl.it/student_embed/assignment/136137/d860e0ad34862a709895f54706dcf9af","completed":false,"chapter":4,"lesson":9},{"id":"592899f67a194ee412ae2e28","title":"Sum","repl":"https://repl.it/student_embed/assignment/136137/d860e0ad34862a709895f54706dcf9af","completed":false,"chapter":4,"lesson":10},{"id":"59289a1a7a194ee412ae2e29","title":"Rounding","repl":"https://repl.it/student_embed/assignment/136137/d860e0ad34862a709895f54706dcf9af","completed":false,"chapter":4,"lesson":11},{"id":"59289a2f7a194ee412ae2e2a","title":"Absolute Value","repl":"https://repl.it/student_embed/assignment/136137/d860e0ad34862a709895f54706dcf9af","completed":false,"chapter":4,"lesson":12},{"id":"59289a477a194ee412ae2e2b","title":"Min Value","repl":"https://repl.it/student_embed/assignment/136137/d860e0ad34862a709895f54706dcf9af","completed":false,"chapter":4,"lesson":13},{"id":"59289a5a7a194ee412ae2e2c","title":"Max Value","repl":"https://repl.it/student_embed/assignment/136137/d860e0ad34862a709895f54706dcf9af","completed":false,"chapter":4,"lesson":14}],[]]}

challenges/4.1.Addition/lesson_settings.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"lesson_title": "Addition Edit",
2+
"lesson_title": "Addition",
33
"chapter_number": 4,
44
"lesson_number": 1,
55
"id":"592893767a194ee412ae2e1f",

generate-challenge-json.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,26 @@ dir_list.forEach((dir) => {
5353
"lesson": lesson_number
5454
};
5555

56+
// attempt to autofill 'missing' challenges
57+
//
58+
// const blank_lesson_obj = {
59+
// "id": null,
60+
// "title": "NA",
61+
// "repl": default_repl,
62+
// "completed": false,
63+
// "chapter": null,
64+
// "lesson": null
65+
// }
66+
5667
if (!challenges_id_list.includes(id)) {
5768
let chapter = challenges_list[chapter_number];
69+
// if ( lesson_number !== 1 && chapter.length < lesson_number ) {
70+
// for (let i = 1; i < lesson_number; i++ ) {
71+
// blank_lesson_obj.chapter = chapter_number;
72+
// blank_lesson_obj.lesson = i;
73+
// chapter.push(blank_lesson_obj);
74+
// }
75+
// }
5876
let a = chapter.slice(0, lesson_number);
5977
let b = chapter.slice(lesson_number + 1, chapter.length);
6078
a.push(lesson_obj);

index.html

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -71,15 +71,10 @@
7171

7272
<div id="map" class="map">
7373
<a href="javascript:void(0)" class="close-map" onclick="toggleMap()">&times;</a>
74-
<div class="challenge-list">
75-
<a href="#" onclick="loadChallengeFromMap('a')">Addition</a>
76-
<a href="#" onclick="loadChallengeFromMap('b')">Subtraction</a>
77-
<a href="#" onclick="loadChallengeFromMap('c')">Dummy 1</a>
78-
<a href="#" onclick="loadChallengeFromMap('d')">Dummy 2</a>
79-
</div>
8074
</div>
8175

8276
<script src="load-challenges.js"></script>
77+
<script src="renderMap.js"></script>
8378
<script src="map.js"></script>
8479
</body>
8580
</html>

renderMap.js

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
/*global $*/
2+
function createLesson(title, id) {
3+
const linkNode = document.createElement("a");
4+
linkNode.classList.add("lesson-link");
5+
linkNode.appendChild(document.createTextNode(title));
6+
linkNode.setAttribute("href", "");
7+
linkNode.setAttribute("onclick", `loadChallengeFromMap('${id}')`);
8+
const listNode = document.createElement("li");
9+
listNode.classList.add("lesson-list-element");
10+
11+
listNode.appendChild(linkNode);
12+
13+
return listNode;
14+
}
15+
function createChapter(title, lessonList) {
16+
const chapterNode = document.createElement("div");
17+
chapterNode.classList.add("chapter");
18+
19+
const titleSpanNode = document.createElement("span");
20+
titleSpanNode.classList.add("chapter-title");
21+
titleSpanNode.appendChild(document.createTextNode(title));
22+
23+
chapterNode.appendChild(titleSpanNode);
24+
25+
const lessonListNode = document.createElement("ul");
26+
lessonListNode.classList.add("lesson-list");
27+
28+
lessonList.forEach((lesson) => {
29+
lessonListNode.appendChild(createLesson(lesson.title, lesson.id));
30+
});
31+
32+
chapterNode.appendChild(lessonListNode);
33+
34+
return chapterNode;
35+
}
36+
function renderMap() {
37+
const map = document.getElementById("map");
38+
39+
const challengeList = document.createElement("div");
40+
challengeList.classList.add("challenge-list");
41+
42+
43+
$.getJSON("./challenges.json")
44+
.done(({chapters, challenges}) => {
45+
challenges.forEach((lessons, i) => {
46+
const title = chapters[i];
47+
challengeList.appendChild(createChapter(title, lessons));
48+
});
49+
})
50+
.fail((jqxhr, textStatus, error ) => {
51+
console.log(`Req failed: ${textStatus}, ${error}`);
52+
});
53+
54+
map.appendChild(challengeList);
55+
56+
}
57+
58+
renderMap();

stylesheet.css

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,3 +215,21 @@ h2 {
215215
.challenge-list {
216216
border-top: 2px solid #006400;
217217
}
218+
219+
.chapter {
220+
display: flex;
221+
flex-direction: column;
222+
align-items: flex-start;
223+
justify-content: flex-start;
224+
}
225+
.chapter-title {
226+
color: #006400;
227+
font-size: 1.5rem;
228+
padding-left: 10px;
229+
}
230+
.lesson-list {
231+
list-style: none;
232+
align-self: left;
233+
padding-left: 5px;
234+
margin-top: 0;
235+
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy