-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.js
106 lines (85 loc) · 3.29 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
94
95
96
97
98
99
100
101
102
103
104
const leaderboardData = [
{ team: 'Sample Model', submission: 1, score: 22.650, oldScore: 23.358, date: '2023-03-21' },
{ team: 'NLL', submission: 1, score: 22.957, oldScore: 20.671, date: '2023-04-15' },
{ team: 'heisenberg', submission: 1, score: 19.514, oldScore: 18.289, date: '2023-04-26'},
{ team: 'heisenberg', submission: 2, score: 25.155, oldScore: null, date: '2023-05-18'},
{ team: 'imageseg2023', submission: 1, score: 19.416, oldScore: 14.964, date: '2023-04-22'},
{ team: 'segmantics', submission: 1, score: 22.854, oldScore: 24.038, date: '2023-05-05'},
{ team: 'segmantics', submission: 2, score: 24.170, oldScore: null, date: '2023-05-16'},
{ team: 'wildnet', submission: 1, score: 22.571, oldScore: null, date: '2023-05-18'},
{ team: 'wildnet', submission: 2, score: 22.614, oldScore: null, date: '2023-05-18'},
];
// Save old scores separately
const oldScores = leaderboardData.reduce((acc, entry) => {
acc[entry.team] = entry.oldScore;
return acc;
}, {});
const tableBody = document.getElementById('table-body');
// Sort leaderboardData by descending score
leaderboardData.sort((a, b) => b.score - a.score);
// Assign ranks based on the sorted leaderboardData
leaderboardData.forEach((entry, index) => {
entry.rank = index + 1;
});
// Group scores by team
const groupedData = leaderboardData.reduce((acc, entry) => {
if (!acc[entry.team]) {
acc[entry.team] = [];
}
acc[entry.team].push(entry);
return acc;
}, {});
// Create table rows
Object.entries(groupedData).forEach(([team, scores]) => {
scores.forEach((entry, index) => {
const row = document.createElement('tr');
row.classList.add(`team-${team.replace(/\s+/g, '-')}`);
if (index > 0) {
row.style.display = 'none';
}
// Create rank cell
const rankCell = document.createElement('td');
rankCell.textContent = entry.rank;
row.appendChild(rankCell);
// Create team cell
const teamCell = document.createElement('td');
teamCell.textContent = entry.team;
teamCell.classList.add('team-cell');
teamCell.style.cursor = 'pointer';
row.appendChild(teamCell);
// Create submission cell
const submissionCell = document.createElement('td');
submissionCell.textContent = entry.submission;
row.appendChild(submissionCell);
// Create score cell
const scoreCell = document.createElement('td');
scoreCell.textContent = `${entry.score}%`;
row.appendChild(scoreCell);
// Create Old Data Score cell
const oldScoreCell = document.createElement('td');
if (entry.oldScore !== null) {
oldScoreCell.textContent = `${entry.oldScore}%`;
} else {
oldScoreCell.textContent = 'N/A';
}
row.appendChild(oldScoreCell);
// Create date cell
const dateCell = document.createElement('td');
dateCell.textContent = entry.date;
row.appendChild(dateCell);
tableBody.appendChild(row);
});
});
// Toggle scores event listener
tableBody.addEventListener('click', (event) => {
if (!event.target.classList.contains('team-cell')) {
return;
}
const team = event.target.textContent;
const teamRows = document.querySelectorAll(`.team-${team.replace(/\s+/g, '-')}`);
teamRows.forEach((row, index) => {
if (index > 0) {
row.style.display = row.style.display === 'none' ? 'table-row' : 'none';
}
});
});