-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathutils.js
More file actions
83 lines (77 loc) · 3.39 KB
/
utils.js
File metadata and controls
83 lines (77 loc) · 3.39 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
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
export function saveProgress(wpm, accuracy) {
console.log('Saving progress:', { wpm, accuracy, timestamp: new Date().toISOString() });
try {
const history = JSON.parse(localStorage.getItem('typingHistory')) || [];
const newEntry = { wpm, accuracy, date: new Date().toISOString() };
history.push(newEntry);
localStorage.setItem('typingHistory', JSON.stringify(history));
console.log('Progress saved to localStorage:', JSON.parse(localStorage.getItem('typingHistory')));
} catch (error) {
console.error('Error saving progress to localStorage:', error);
}
}
export function countCorrectChars(typedWords, originalWords) {
console.log('Counting correct chars:', { typedWords, originalWords });
let correctChars = 0;
typedWords = typedWords || [];
originalWords = originalWords || ['The', 'quick', 'brown', 'fox', 'jumps', 'over', 'the', 'lazy', 'dog'];
for (let i = 0; i < Math.min(typedWords.length, originalWords.length); i++) {
if (typedWords[i] === originalWords[i]) {
correctChars += typedWords[i].length;
}
}
console.log('Correct chars:', correctChars);
return correctChars;
}
export function countCorrectWords(typedWords, originalWords) {
console.log('Counting correct words:', { typedWords, originalWords });
let correctWords = 0;
typedWords = typedWords || [];
originalWords = originalWords || ['The', 'quick', 'brown', 'fox', 'jumps', 'over', 'the', 'lazy', 'dog'];
for (let i = 0; i < Math.min(typedWords.length, originalWords.length); i++) {
if (typedWords[i] === originalWords[i]) {
correctWords++;
}
}
console.log('Correct words:', correctWords);
return correctWords;
}
export function displayLeaderboard() {
console.log('Displaying leaderboard');
try {
const history = JSON.parse(localStorage.getItem('typingHistory')) || [];
console.log('Leaderboard data loaded:', history);
const leaderboardTable = document.querySelector('#leaderboard-table');
if (!leaderboardTable) {
console.error('Leaderboard table not found');
return;
}
leaderboardTable.innerHTML = '';
if (history.length === 0) {
console.log('No leaderboard data available');
leaderboardTable.innerHTML = '<tr><td colspan="4">No leaderboard data available</td></tr>';
return;
}
history.sort((a, b) => b.wpm - a.wpm).slice(0, 5).forEach((entry, index) => {
const row = document.createElement('tr');
row.innerHTML = `
<td>${index + 1}</td>
<td>${entry.wpm}</td>
<td>${entry.accuracy}%</td>
<td>${new Date(entry.date).toLocaleString()}</td>
`;
leaderboardTable.appendChild(row);
});
console.log('Leaderboard updated, rows:', history.length);
} catch (error) {
console.error('Error displaying leaderboard:', error);
const leaderboardTable = document.querySelector('#leaderboard-table');
if (leaderboardTable) {
leaderboardTable.innerHTML = '<tr><td colspan="4">Error loading leaderboard</td></tr>';
}
}
}
export function updateLeaderboard() {
console.log('updateLeaderboard called');
displayLeaderboard();
}