diff --git a/public/index.html b/public/index.html
index 7acee64..8d0fefc 100644
--- a/public/index.html
+++ b/public/index.html
@@ -45,16 +45,24 @@
-
Manage Users
+ Delete Users
-
- Edit Word List for:
-
-
+
+Edit Word List for:
+
+
+
+📋 View Word List by User:
+
+
+
+
diff --git a/public/script.js b/public/script.js
index 139f5a9..2467afe 100644
--- a/public/script.js
+++ b/public/script.js
@@ -126,8 +126,14 @@ async function showAdmin() {
document.getElementById('adminPanel').classList.remove('hidden')
document.getElementById('studentPanel').classList.add('hidden')
- await loadWords()
- displayWordList()
+ try {
+ await loadWords()
+ displayWordList()
+ } catch (err) {
+ console.error("🚨 Failed to load words:", err)
+ // Optional: fallback or placeholder UI
+ }
+
await loadUsers()
displayUserDropdown()
populateWordUserDropdown()
@@ -373,10 +379,21 @@ async function clearWords() {
alert("🗑 Word list cleared")
}
function populateWordUserDropdown() {
- const dropdown = document.getElementById("wordUserSelect")
- dropdown.innerHTML = ``
- users.forEach(user => {
- dropdown.innerHTML += ``
+ const userSelects = document.querySelectorAll(".word-user-dropdown")
+
+ if (!users || !users.length) {
+ console.warn("⚠️ No users to populate dropdowns.")
+ return
+ }
+
+ userSelects.forEach(select => {
+ select.innerHTML = ''
+ users.forEach(user => {
+ const option = document.createElement("option")
+ option.value = user.username
+ option.textContent = user.username
+ select.appendChild(option)
+ })
})
}
async function loadWordsForSelectedUser() {
@@ -395,4 +412,31 @@ function showToast(message, duration = 3000) {
setTimeout(() => {
toast.classList.remove("show")
}, duration)
+}
+async function displayWordListForSelectedUser() {
+ const select = document.getElementById("viewUserSelect")
+ const username = select.value
+ const list = document.getElementById("userWordListDisplay")
+ list.innerHTML = ''
+
+ if (!username) return
+
+ try {
+ const res = await fetch(`/getWordList?user=${username}`)
+ const words = await res.json()
+
+ if (!words.length) {
+ list.innerHTML = "
No words found for this user."
+ return
+ }
+
+ words.forEach(word => {
+ const li = document.createElement("li")
+ li.textContent = word
+ list.appendChild(li)
+ })
+ } catch (err) {
+ list.innerHTML = `❌ Error loading words: ${err.message}`
+ console.error("Failed to load word list for user:", username, err)
+ }
}
\ No newline at end of file
diff --git a/public/users.json b/public/users.json
index 4f2a0a2..a0c1874 100644
--- a/public/users.json
+++ b/public/users.json
@@ -8,10 +8,5 @@
"username": "student1",
"hash": "8d969eef6ecad3c29a3a629280e686cf",
"role": "student"
- },
- {
- "username": "nate",
- "hash": "5a2a558c78d3717db731600c4f354fa1d9c84b556f108091a891f444f1bdec40",
- "role": "student"
}
]
\ No newline at end of file
diff --git a/public/wordlist.json b/public/wordlist.json
deleted file mode 100644
index cb1882e..0000000
--- a/public/wordlist.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "student1": ["apple", "banana", "cherry"],
- "student2": ["dog", "cat", "fish"]
-}
diff --git a/public/wordlists.json b/public/wordlists.json
new file mode 100644
index 0000000..75dee33
--- /dev/null
+++ b/public/wordlists.json
@@ -0,0 +1,3 @@
+{
+ "student1": ["apple", "banana", "cherry"]
+}