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"] +}