-
Notifications
You must be signed in to change notification settings - Fork 2
/
script.js
93 lines (72 loc) · 3.01 KB
/
script.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
var teams = [];
function createLeaderboard() {
var teamCount = parseInt(document.getElementById("team-count").value);
var leaderboardContainer = document.getElementById("leaderboard-container");
leaderboardContainer.innerHTML = "";
var table = document.createElement("table");
var thead = document.createElement("thead");
var tbody = document.createElement("tbody");
var headerRow = document.createElement("tr");
var rankHeader = document.createElement("th");
rankHeader.textContent = "Rank";
headerRow.appendChild(rankHeader);
var teamHeader = document.createElement("th");
teamHeader.textContent = "Team Name";
headerRow.appendChild(teamHeader);
var scoreHeader = document.createElement("th");
scoreHeader.textContent = "Score";
headerRow.appendChild(scoreHeader);
thead.appendChild(headerRow);
table.appendChild(thead);
table.appendChild(tbody);
leaderboardContainer.appendChild(table);
teams = [];
for (var i = 0; i < teamCount; i++) {
var row = document.createElement("tr");
var rankCell = document.createElement("td");
rankCell.textContent = i + 1;
row.appendChild(rankCell);
var teamCell = document.createElement("td");
var teamInput = document.createElement("input");
teamInput.type = "text";
teamInput.addEventListener("input", updateLeaderboard);
teamCell.appendChild(teamInput);
row.appendChild(teamCell);
var scoreCell = document.createElement("td");
var scoreInput = document.createElement("input");
scoreInput.type = "number";
scoreInput.min = "0";
scoreInput.addEventListener("input", updateLeaderboard);
scoreCell.appendChild(scoreInput);
row.appendChild(scoreCell);
tbody.appendChild(row);
teams.push({
teamCell: teamInput,
scoreCell: scoreInput
});
}
}
function updateLeaderboard() {
var tbody = document.querySelector("#leaderboard-container tbody");
teams.sort(function(a, b) {
return parseInt(b.scoreCell.value) - parseInt(a.scoreCell.value);
});
teams.forEach(function(team, index) {
teamCell = team.teamCell;
scoreCell = team.scoreCell;
rankCell = tbody.rows[index].cells[0];
rankCell.textContent = index + 1;
scoreCell.value = scoreCell.value;
});
}
function sortLeaderboard() {
var tbody = document.querySelector("#leaderboard-container tbody");
Array.from(tbody.rows).sort(function(a, b) {
var scoreA = parseInt(a.cells[2].firstChild.value);
var scoreB = parseInt(b.cells[2].firstChild.value);
return scoreB - scoreA;
}).forEach(function(row, index) {
row.cells[0].textContent = index + 1;
tbody.appendChild(row);
});
}