104 lines
3.3 KiB
JavaScript
104 lines
3.3 KiB
JavaScript
function deleteFiles(filePaths) {
|
|
fetch('/delete_files', {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
},
|
|
body: JSON.stringify({
|
|
'file_paths': filePaths
|
|
})
|
|
})
|
|
.then(response => response.json())
|
|
.then(data => {
|
|
if (data.success) {
|
|
alert('Files deleted successfully');
|
|
location.reload();
|
|
} else {
|
|
alert('Error deleting files: ' + JSON.stringify(data.errors));
|
|
}
|
|
});
|
|
}
|
|
|
|
function deleteSelectedFiles() {
|
|
const selectedFiles = Array.from(document.querySelectorAll('input[name="fileCheckbox"]:checked'))
|
|
.map(checkbox => checkbox.value);
|
|
if (selectedFiles.length > 0) {
|
|
deleteFiles(selectedFiles);
|
|
} else {
|
|
alert('No files selected');
|
|
}
|
|
}
|
|
|
|
|
|
function downloadSelectedFiles() {
|
|
const selectedFiles = Array.from(document.querySelectorAll('input[name="fileCheckbox"]:checked'))
|
|
.map(checkbox => checkbox.value);
|
|
if (selectedFiles.length > 0) {
|
|
fetch('/download_files', {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
},
|
|
body: JSON.stringify({ 'file_paths': selectedFiles })
|
|
})
|
|
.then(response => {
|
|
if (!response.ok) {
|
|
return response.json().then(err => { throw new Error(err.error); });
|
|
}
|
|
return response.blob();
|
|
})
|
|
.then(blob => {
|
|
if (blob.type !== 'application/zip') {
|
|
throw new Error("Received invalid ZIP file.");
|
|
}
|
|
const url = window.URL.createObjectURL(blob);
|
|
const a = document.createElement('a');
|
|
a.href = url;
|
|
a.download = 'files.zip';
|
|
document.body.appendChild(a);
|
|
a.click();
|
|
a.remove();
|
|
})
|
|
.catch(error => alert('Error: ' + error.message));
|
|
} else {
|
|
alert('No files selected');
|
|
}
|
|
}
|
|
|
|
function sortTable(columnIndex, tableId) {
|
|
const table = document.getElementById(tableId);
|
|
const tbody = table.querySelector('tbody');
|
|
const rows = Array.from(tbody.rows);
|
|
const isAscending = table.getAttribute('data-sort-asc') === 'true';
|
|
|
|
rows.sort((rowA, rowB) => {
|
|
const cellA = rowA.cells[columnIndex].innerText.toLowerCase();
|
|
const cellB = rowB.cells[columnIndex].innerText.toLowerCase();
|
|
|
|
if (cellA < cellB) {
|
|
return isAscending ? -1 : 1;
|
|
}
|
|
if (cellA > cellB) {
|
|
return isAscending ? 1 : -1;
|
|
}
|
|
return 0;
|
|
});
|
|
|
|
// Toggle the sorting order for the next click
|
|
table.setAttribute('data-sort-asc', !isAscending);
|
|
|
|
// Append sorted rows back to the tbody
|
|
rows.forEach(row => tbody.appendChild(row));
|
|
}
|
|
|
|
// Function to check or uncheck all checkboxes in a table by checking or unchecking the "CheckAll" checkbox
|
|
function checkAllCheckboxes(tableId, checkAllCheckboxId) {
|
|
const table = document.getElementById(tableId);
|
|
const checkboxes = table.querySelectorAll('input[type="checkbox"][name="fileCheckbox"]');
|
|
const checkAllCheckbox = document.getElementById(checkAllCheckboxId);
|
|
const isChecked = checkAllCheckbox.checked;
|
|
|
|
checkboxes.forEach(checkbox => {
|
|
checkbox.checked = isChecked;
|
|
});
|
|
} |