forked from freeCodeCamp/python-coding-challenges
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrenderMap.js
More file actions
58 lines (44 loc) · 1.62 KB
/
Copy pathrenderMap.js
File metadata and controls
58 lines (44 loc) · 1.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/*global $*/
function createLesson(title, id) {
const linkNode = document.createElement("a");
linkNode.classList.add("lesson-link");
linkNode.appendChild(document.createTextNode(title));
linkNode.setAttribute("href", "");
linkNode.setAttribute("onclick", `loadChallengeFromMap('${id}')`);
const listNode = document.createElement("li");
listNode.classList.add("lesson-list-element");
listNode.appendChild(linkNode);
return listNode;
}
function createChapter(title, lessonList) {
const chapterNode = document.createElement("div");
chapterNode.classList.add("chapter");
const titleSpanNode = document.createElement("span");
titleSpanNode.classList.add("chapter-title");
titleSpanNode.appendChild(document.createTextNode(title));
chapterNode.appendChild(titleSpanNode);
const lessonListNode = document.createElement("ul");
lessonListNode.classList.add("lesson-list");
lessonList.forEach((lesson) => {
lessonListNode.appendChild(createLesson(lesson.title, lesson.id));
});
chapterNode.appendChild(lessonListNode);
return chapterNode;
}
function renderMap() {
const map = document.getElementById("map");
const challengeList = document.createElement("div");
challengeList.classList.add("challenge-list");
$.getJSON("./challenges.json")
.done(({chapters, challenges}) => {
challenges.forEach((lessons, i) => {
const title = chapters[i];
challengeList.appendChild(createChapter(title, lessons));
});
})
.fail((jqxhr, textStatus, error ) => {
console.log(`Req failed: ${textStatus}, ${error}`);
});
map.appendChild(challengeList);
}
renderMap();