40 lines
1.3 KiB
JavaScript
40 lines
1.3 KiB
JavaScript
function collectEditedData(event) {
|
|
// Prevent default form submission
|
|
event.preventDefault();
|
|
|
|
// Extract headers (attribute names) from the table
|
|
const headers = [...document.querySelectorAll('.table-new-assets thead th')].map(th => th.dataset.attrib);
|
|
const rows = document.querySelectorAll('.table-new-assets tbody tr');
|
|
const assets = [];
|
|
|
|
// Iterate through rows and collect data
|
|
rows.forEach(row => {
|
|
const cells = row.querySelectorAll('td');
|
|
if (cells.length !== headers.length) {
|
|
alert("Mismatch between the number of cells and headers. Please check the table.");
|
|
return false;
|
|
}
|
|
|
|
let asset = {};
|
|
headers.forEach((attrib, i) => {
|
|
if (cells[i]) {
|
|
asset[attrib] = cells[i].innerText.trim();
|
|
} else {
|
|
alert(`Missing data for attribute: ${attrib}`);
|
|
return false;
|
|
}
|
|
});
|
|
assets.push(asset);
|
|
});
|
|
|
|
// Create a hidden input field to store the collected data
|
|
const input = document.createElement('input');
|
|
input.type = 'hidden';
|
|
input.name = 'assets';
|
|
input.value = JSON.stringify(assets);
|
|
event.currentTarget.appendChild(input);
|
|
|
|
// Submit the form
|
|
event.currentTarget.submit();
|
|
return true;
|
|
} |