99 lines
3.1 KiB
JavaScript
99 lines
3.1 KiB
JavaScript
function doAccountAction(requestData, successMessage, failureMessage, silent=false) {
|
|
return fetch('/account', {
|
|
method: 'POST',
|
|
body: requestData,
|
|
})
|
|
.then(response => {
|
|
if (!response.ok) {
|
|
throw new Error(`HTTP error! Status: ${response.status}`);
|
|
}
|
|
return response.json();
|
|
})
|
|
.then(data => {
|
|
if(!silent) {
|
|
handleResponse(data, successMessage, failureMessage);
|
|
}
|
|
return data; // Returning the response data for further processing
|
|
})
|
|
.catch((error) => {
|
|
console.error('Error:', error);
|
|
});
|
|
}
|
|
|
|
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.textContent = "Delete"
|
|
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");
|
|
|
|
if (data.Status === 'Success') {
|
|
StatusMessageElement.innerText = SuccessMessage;
|
|
} else {
|
|
StatusMessageElement.innerText = failureMessage;
|
|
}
|
|
|
|
// Show the status message
|
|
StatusMessageElement.style.display = "block";
|
|
setTimeout(() => {
|
|
// Hide the status message after 3 seconds
|
|
StatusMessageElement.style.opacity = "0";
|
|
setTimeout(() => {
|
|
StatusMessageElement.style.display = "none";
|
|
// Reset opacity for future messages
|
|
StatusMessageElement.style.opacity = "1";
|
|
}, 500);
|
|
}, 3000);
|
|
}
|
|
|
|
function logout() {
|
|
const data = new URLSearchParams();
|
|
data.append("action", "logout");
|
|
|
|
doAccountAction(data, "Logout Successful!", "Logout failed.").then(() => {
|
|
location.reload();
|
|
// Expected output: "Success!"
|
|
});
|
|
}
|
|
|