From f71c250a3aac18d79d36a6b74c94418eb92d937f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bruno=20Ryb=C3=A1rsky?= Date: Sun, 4 Feb 2024 09:50:04 +0100 Subject: [PATCH] admin ui changes --- assets/script.js | 52 ++++++++++++++++++++-- assets/style.css | 3 ++ templates/adminActions.html | 87 ++++++++----------------------------- 3 files changed, 71 insertions(+), 71 deletions(-) diff --git a/assets/script.js b/assets/script.js index 713f40f..eb27579 100644 --- a/assets/script.js +++ b/assets/script.js @@ -20,6 +20,49 @@ function doAccountAction(requestData, successMessage, failureMessage, silent=fal }); } +function displayList(data, element_id, delete_function=null) { + const tableContainer = document.getElementById(element_id); + tableContainer.innerHTML = ""; // Clear previous content + + const table = document.createElement("table"); + table.classList.add("list-table"); + + // Create header row + const headerRow = table.insertRow(0); + for (const key in data[0]) { + const th = document.createElement("th"); + th.appendChild(document.createTextNode(key)); + headerRow.appendChild(th); + } + + if(typeof delete_function === "function") { + const th = document.createElement("th"); + th.appendChild(document.createTextNode("Delete")); + headerRow.appendChild(th); + } + + // Create data rows + for (const line of data) { + const dataRow = table.insertRow(); + for (const key in line) { + const td = document.createElement("td"); + td.appendChild(document.createTextNode(line[key])); + dataRow.appendChild(td); + } + if(typeof delete_function === "function") { + const td = document.createElement("td"); + let delete_button = document.createElement('button'); + delete_button.onclick = function (){ + delete_function(line.ID); + } + td.appendChild(delete_button); + dataRow.appendChild(td); + } + } + + tableContainer.appendChild(table); +} + function handleResponse(data, SuccessMessage, failureMessage) { const StatusMessageElement = document.getElementById("StatusMessage"); @@ -33,11 +76,11 @@ function handleResponse(data, SuccessMessage, failureMessage) { StatusMessageElement.style.display = "block"; setTimeout(() => { // Hide the status message after 3 seconds - StatusMessageElement.style.opacity = 0; + StatusMessageElement.style.opacity = "0"; setTimeout(() => { StatusMessageElement.style.display = "none"; // Reset opacity for future messages - StatusMessageElement.style.opacity = 1; + StatusMessageElement.style.opacity = "1"; }, 500); }, 3000); } @@ -46,6 +89,9 @@ function logout() { const data = new URLSearchParams(); data.append("action", "logout"); - doAccountAction(data, "Logout Successful!", "Logout failed."); + doAccountAction(data, "Logout Successful!", "Logout failed.").then(() => { + location.reload(); + // Expected output: "Success!" + }); } diff --git a/assets/style.css b/assets/style.css index f09e606..1d8dece 100644 --- a/assets/style.css +++ b/assets/style.css @@ -224,6 +224,9 @@ header ul li { transition: opacity 0.5s ease-in-out; } +.list-table{ + border: 2px solid var(--primary) ; +} /* */ /* ZAČÍNAJ VŠETKO S ".dashboard" */ diff --git a/templates/adminActions.html b/templates/adminActions.html index 7ebd46f..fcc46ef 100644 --- a/templates/adminActions.html +++ b/templates/adminActions.html @@ -8,7 +8,7 @@ const result = await doAccountAction(data, "Activation codes added Successfully!", "Activation codes addition failed."); - displayUserList(result.ActivationCodes); + displayList(result.ActivationCodes, "codeListTable", deleteActivationCode); } async function listUsers() { @@ -18,37 +18,10 @@ const result = await doAccountAction(data, "User list retrieved Successfully!", "User list retrieval failed."); if (result && result.Status === "Success") { - displayUserList(result.Users); + displayList(result.Users, "userListTable", deleteUser); } } - function displayUserList(users) { - const tableContainer = document.getElementById("userListTable"); - tableContainer.innerHTML = ""; // Clear previous content - - const table = document.createElement("table"); - table.border = "1"; - - // Create header row - const headerRow = table.insertRow(0); - for (const key in users[0]) { - const th = document.createElement("th"); - th.appendChild(document.createTextNode(key)); - headerRow.appendChild(th); - } - - // Create data rows - for (const user of users) { - const dataRow = table.insertRow(); - for (const key in user) { - const td = document.createElement("td"); - td.appendChild(document.createTextNode(user[key])); - dataRow.appendChild(td); - } - } - - tableContainer.appendChild(table); - } async function listActivationCodes() { const data = new URLSearchParams(); @@ -56,72 +29,50 @@ const result = await doAccountAction(data, "Activation code list retrieved Successfully!", "Activation code list retrieval failed."); - displayUserList(result.ActivationCodes); + displayList(result.ActivationCodes, "codeListTable", deleteActivationCode); } - function deleteUser() { - const userId = document.getElementById("userId").value; + function deleteUser(userId) { const data = new URLSearchParams(); data.append("action", "delete_user"); data.append("user_id", userId); doAccountAction(data, "User deleted Successfully!", "User deletion failed."); + listUsers(); } - function deleteActivationCode() { - const activationCode = document.getElementById("activationCode").value; + function deleteActivationCode(activationCode) { const data = new URLSearchParams(); data.append("action", "delete_activation_code"); data.append("activation_code", activationCode); doAccountAction(data, "Activation code deleted Successfully!", "Activation code deletion failed."); + listActivationCodes(); } -
-

Add Activation Codes

-
+

Activation Codes

+ +

List Activation Codes

+
+
+ +

Add Activation Codes


- -
+
+

List Users

-
- -
+
+
-
-

List Activation Codes

-
- -
-
- -
-

Delete User

-
- -
- - -
-
- -
-

Delete Activation Code

-
- -
- - -
-
\ No newline at end of file +
\ No newline at end of file