-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.js
131 lines (112 loc) · 5.04 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
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
document.addEventListener('DOMContentLoaded', () => {
const searchInput = document.getElementById('searchInput');
const dictionaryDiv = document.getElementById('dictionary');
const modal = document.getElementById('modal');
const modalSantali = document.getElementById('modalSantali');
const modalEnglish = document.getElementById('modalEnglish');
const closeModal = document.getElementsByClassName('close')[0];
let dictionaryData = [];
fetch('https://raw.githubusercontent.com/kbaske/kbaske.github.io/main/data/sat-en.json') // Update with your raw JSON URL
.then(response => response.json())
.then(data => {
dictionaryData = data;
displayDictionary();
})
.catch(error => console.error('Error fetching the dictionary data:', error));
function displayDictionary() {
// *** Shuffle the dictionaryData ***
shuffleArray(dictionaryData); // <--- New line to shuffle data
const wordLimit = getWordLimit();
const displayData = dictionaryData.slice(0, wordLimit);
dictionaryDiv.innerHTML = '';
displayData.forEach(entry => {
const entryDiv = document.createElement('div');
entryDiv.classList.add('entry');
entryDiv.dataset.santali = entry.santali;
entryDiv.dataset.english = entry.english;
const santaliDiv = document.createElement('div');
santaliDiv.classList.add('santali');
santaliDiv.textContent = entry.santali;
const englishDiv = document.createElement('div');
englishDiv.classList.add('english');
englishDiv.textContent = entry.english;
entryDiv.appendChild(santaliDiv);
entryDiv.appendChild(englishDiv);
dictionaryDiv.appendChild(entryDiv);
entryDiv.addEventListener('click', () => {
modalSantali.textContent = entry.santali;
modalEnglish.textContent = entry.english;
modal.style.display = 'block';
});
});
}
// *** New function to shuffle an array ***
function shuffleArray(array) { // <--- New function to shuffle the array
for (let i = array.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[array[i], array[j]] = [array[j], array[i]];
}
}
function getWordLimit() {
const screenHeight = window.innerHeight;
const entryHeight = 80; // Approximate height of each entry in pixels
const headerHeight = document.querySelector('header').offsetHeight;
const footerHeight = document.querySelector('footer').offsetHeight;
const availableHeight = screenHeight - headerHeight - footerHeight;
return Math.floor(availableHeight / entryHeight);
}
searchInput.addEventListener('input', () => {
const query = searchInput.value.toLowerCase();
const wordLimit = getWordLimit();
const filteredDictionary = dictionaryData.filter(entry =>
entry.santali.toLowerCase().includes(query) || entry.english.toLowerCase().includes(query)
).slice(0, wordLimit);
if (filteredDictionary.length === 0) {
showNoResultsMessage();
} else {
displayFilteredDictionary(filteredDictionary);
}
});
function displayFilteredDictionary(filteredDictionary) {
dictionaryDiv.innerHTML = '';
filteredDictionary.forEach(entry => {
const entryDiv = document.createElement('div');
entryDiv.classList.add('entry');
entryDiv.dataset.santali = entry.santali;
entryDiv.dataset.english = entry.english;
const santaliDiv = document.createElement('div');
santaliDiv.classList.add('santali');
santaliDiv.textContent = entry.santali;
const englishDiv = document.createElement('div');
englishDiv.classList.add('english');
englishDiv.textContent = entry.english;
entryDiv.appendChild(santaliDiv);
entryDiv.appendChild(englishDiv);
dictionaryDiv.appendChild(entryDiv);
entryDiv.addEventListener('click', () => {
modalSantali.textContent = entry.santali;
modalEnglish.textContent = entry.english;
modal.style.display = 'block';
});
});
}
function showNoResultsMessage() {
dictionaryDiv.innerHTML = `
<div class="no-results">
<h1>ᱦᱮᱴᱨᱮᱻ...</h1> </br>
<span class="highlighted-text">ᱱᱚᱶᱟ ᱟᱹᱲᱟᱹ</span> ᱫᱚ <span class="highlighted-text">ᱟᱹᱲᱟᱹ ᱠᱷᱟᱫᱟᱱᱨᱮ ᱵᱟᱹᱱᱩᱜᱼᱟ</span> ᱾ ᱚᱱᱟᱛᱮ <span class="highlighted-text">ᱤᱠᱟᱹᱧ ᱠᱷᱚᱡᱚᱜ ᱠᱟᱱᱟ</span> 🙏 ᱾ </br> <span class="highlighted-text">ᱮᱴᱟᱜᱟᱜ ᱟᱹᱲᱟ</span> ᱥᱮᱫᱽᱨᱟᱭ ᱢᱮ ᱾ ᱱᱚᱸᱰᱮ ᱫᱚ <span class="highlighted-text">ᱵᱟᱱᱟᱨ ᱯᱟᱹᱨᱥᱤᱛᱮ ᱥᱮᱫᱽᱨᱟ ᱜᱟᱱᱚᱜᱼᱟ</span>, ᱢᱮᱱ ᱫᱚ <span class="highlighted-text">ᱥᱟᱱᱛᱟᱲᱛᱮ ᱦᱚᱸ ᱟᱨ ᱤᱝᱞᱤᱥᱛᱮ ᱦᱚᱸ</span> ᱾
</div>
`;
}
closeModal.onclick = function() {
modal.style.display = 'none';
};
window.onclick = function(event) {
if (event.target == modal) {
modal.style.display = 'none';
}
};
window.onresize = function() {
displayDictionary();
};
});