-
Notifications
You must be signed in to change notification settings - Fork 0
/
thTest.js
166 lines (113 loc) · 5.53 KB
/
thTest.js
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
//calls treasure hunts from API
//creates a list with all treasure hunts
function listTest() {
let listTestOutput = document.getElementById("listTestOutput");
let thNum = document.getElementById("thNum");
listTestOutput.style.display="block";
let answer = thNum.value;
fetch("https://codecyprus.org/th/test-api/list?number-of-ths=" + answer)
.then(response => response.json()) //Parse JSON text to JavaScript object
.then(jsonObject => {
//ul element that shows treasure hunts list
let treasureHunts = jsonObject.treasureHunts;
for(let i=0; i < treasureHunts.length; i++) {
let thList = document.createElement("li");
let thName = treasureHunts[i].name;
let thDesc = treasureHunts[i].description;
let treasureHuntID = treasureHunts[i].uuid;
let thOwnerEmail=treasureHunts[i].ownerEmail;
let thSecretCode=treasureHunts[i].secretCode;
let thSalt = treasureHunts[i].salt;
let thVisibility = treasureHunts[i].visibility;
let thStartsOn = treasureHunts[i].startsOn;
let thEndsOn = treasureHunts[i].endsOn;
let thMaxDuration = treasureHunts[i].maxDuration;
let thShuffled = treasureHunts[i].shuffled;
let thAuthentication = treasureHunts[i].requiresAuthentication;
let thEmailResults = treasureHunts[i].emailResults;
let thHasPrize = treasureHunts[i].hasPrize;
thList.innerHTML ="<div class='liClass'>" + "<p>" +thName+ "</p>"+ "<p>" +thDesc+ "</p>" + "<a>Start</a>" + "</div><br>";
listTestOutput.appendChild(thList);
}
});
}
function listClear() {
let listTestOutput = document.getElementById("listTestOutput");
listTestOutput.style.display="none";
/*class is used than ID because the function listTest() can create more than one li-item,
therefore an ID could not be used since it specifies a unique ID for an element*/
//returns all elements by className as HTML collection object, each object has an index(starts at 0)
let testDelete = document.getElementsByClassName("liClass");
//while is used to delete the objects one by one until the length of the collection is 0
while(testDelete.length>0){
testDelete[0].parentNode.removeChild(testDelete[0]);
}
// testDelete.parentNode.removeChild(testDelete);
}
function scoreTest(){
let scoreTestOutput = document.getElementById("scoreTestOutput");
let thScoreInput = document.getElementById("thScoreInput");
scoreTestOutput.style.display="block";
let answer = thScoreInput.value;
fetch("https://codecyprus.org/th/test-api/score?score=" + answer)
.then(response => response.json()) //Parse JSON text to JavaScript object
.then(jsonObject => {
//let treasureHunts = jsonObject.treasureHunts;
let thScoreTest = document.createElement("li");
let thCompleted = jsonObject.completed;
let thFinished = jsonObject.finished;
// let treasureHuntID = treasureHunts[i].uuid;
let thPlayer=jsonObject.player;
let thScore=jsonObject.score;
let thHasPrize = jsonObject.hasPrize;
let thStatus = jsonObject.status;
thScoreTest.innerHTML ="<div id='liID'>" + "<p>" + "score of user " + thPlayer + " is: " + thScore + "</p></div><br>";
scoreTestOutput.appendChild(thScoreTest);
});
}
function scoreClear(){
let scoreTestOutput = document.getElementById("scoreTestOutput");
//removeChild method is used to delete children (liID) of a parent (e.g scoreTestOutput)
//property parentNode is used to return the parent-node of the element
let testDelete = document.getElementById("liID");
testDelete.parentNode.removeChild(testDelete);
scoreTestOutput.style.display="none";
}
function leaderboardTest(){
let lbTestOutput=document.getElementById("lbTestOutput");
let numOfPlayers=document.getElementById("numOfPlayers");
let answer=numOfPlayers.value;
let sorted=false;
if(document.getElementById("sortLb").checked===true){
sorted=true;
}
fetch("https://codecyprus.org/th/test-api/leaderboard?sorted="+ sorted + "&hasPrize&size=" + answer)
.then(response => response.json()) //Parse JSON text to JavaScript object
.then(jsonObject => {
//let lbLimit=jsonObject.limit;
let tableContent = "";
//gets scores
let leaderboard = jsonObject.leaderboard;
//creating list items and adds scores to ul
for (let i = 0; i < leaderboard.length; i++) {
let teamName = leaderboard[i].player;
let teamScore = leaderboard[i].score;
let teamTime = leaderboard[i].completionTime;
let options = {
day: 'numeric', month: 'short', hour: '2-digit', minute: '2-digit',
second: '2-digit'
};
let date = new Date(teamTime);
let formattedDate = date.toLocaleDateString("en-UK", options);
tableContent += "<tr>" + "<td>" + teamName + "</td>" + "<td>" + teamScore + "</td>" + "<td>" + formattedDate + "</td>" + "</b>" + "</tr>";
};
lbTestOutput.innerHTML += tableContent;
})
}
function leaderboardClear(){
let table = document.getElementById("lbTestOutput");
for(let i = table.rows.length - 1; i > 0; i--)
{
table.deleteRow(i);
}
}