-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
137 lines (116 loc) · 3.33 KB
/
script.js
File metadata and controls
137 lines (116 loc) · 3.33 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
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
/*------------------------------------ generate random word */
const link =
"https://random-words5.p.rapidapi.com/getMultipleRandom?count=10&wordLength=5";
const options = {
method: "GET",
headers: {
"x-rapidapi-host": "random-words5.p.rapidapi.com",
"x-rapidapi-key": "6c6b5fcbd5msh0ba1b787cc9aea9p10eaf9jsn992d771592a7",
},
};
let data;
let wordOfTheDay;
// const getData = async () => {
// const fetchResult = await fetch(link, options);
// const finalResult = await fetchResult.json();
// // console.log(finalResult);
// return finalResult;
// };
let myWords = [];
const generateBtn = document.querySelector("button");
const wordDom = document.querySelector("span");
const setGlobalData = async () => {
const fetchResult = await fetch(link, options);
const finalResult = await fetchResult.json();
data = finalResult;
wordOfTheDay = data[0];
myWords = [...myWords, wordOfTheDay]; // add the words to an array
updateLocalStorageForMyWords();
wordDom.innerText = `"${wordOfTheDay}"`;
renderMyWords(myWords);
return wordOfTheDay;
};
// setGlobalData()
/*------------------------------- random word and get definitions */
function getDefinition(e, searchWord) {
e.preventDefault();
fetch(`https://api.dictionaryapi.dev/api/v2/entries/en/${searchWord}`)
.then((response) => {
if (!response.ok) throw new Error(response.status);
return response.json();
})
.then((json) => {
let meanings = json[0].meanings;
for (let defs of meanings) {
for (let def of defs.definitions) {
meaningDom.innerText = `Definition:
${def.definition}
Example:
"${def.example}"
`;
}
}
})
.catch((err) => {
console.error(err);
});
}
generateBtn.addEventListener("click", (event) => {
let todayWord = setGlobalData();
todayWord.then((word) => {
getDefinition(event, word);
});
});
/*------------------------------- local storage and list of words */
const meaningDom = document.querySelector(".meaning");
const myWordsDom = document.querySelector(".my-words");
function renderMyWords(array) {
myWordsDom.innerHTML = "";
array.forEach((element) => {
if (element !== null) {
let div = document.createElement("div");
div.classList.add("list-of-my-words");
div.textContent = element;
myWordsDom.appendChild(div);
}
});
}
myWordsDom.addEventListener("click", (e) => {
let targetedWord = e.target.innerText;
getDefinition(e, targetedWord);
wordDom.innerText = `"${targetedWord}"`;
});
//localStorage
function updateLocalStorageForMyWords() {
localStorage.setItem("myWords", JSON.stringify(myWords));
}
if (localStorage.getItem("myWords")) {
myWords = JSON.parse(localStorage.getItem("myWords"));
let wordsArr = [];
myWords.forEach((word) => {
if (word !== null) {
wordsArr.push(word);
}
});
renderMyWords(wordsArr);
}
// filter array in dom myWords
function filterArrayInDom() {
let array = [...myWords];
let aZArray = array.sort();
let words = [];
aZArray.forEach((word) => {
if (word !== null) {
words.push(word);
}
});
renderMyWords(words);
}
const checkboxAZ = document.querySelector("#checkbox");
checkboxAZ.addEventListener("click", (e) => {
if (checkboxAZ.checked) {
filterArrayInDom();
} else {
renderMyWords(myWords);
}
});