99 lines
2.8 KiB
HTML
99 lines
2.8 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title>Table View</title>
|
|
<script src="config.js"></script>
|
|
<style>
|
|
table {
|
|
border-collapse: collapse;
|
|
width: 100%;
|
|
}
|
|
|
|
th, td {
|
|
text-align: left;
|
|
padding: 8px;
|
|
}
|
|
|
|
tr:nth-child(even){background-color: #f2f2f2}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<table id="yield-table">
|
|
<thead></thead>
|
|
<tbody></tbody>
|
|
</table>
|
|
|
|
<script>
|
|
|
|
function createTable(data) {
|
|
const table = document.createElement('table');
|
|
|
|
// Get all row and column indexes
|
|
const colIndexes = Object.keys(data[Object.keys(data)[0]]);
|
|
const rowIndexes = Object.keys(data);
|
|
|
|
const thead = document.createElement('thead');
|
|
const hRow = document.createElement('tr');
|
|
|
|
// Empty cell in the top-left corner
|
|
hRow.appendChild(document.createElement('th'));
|
|
|
|
colIndexes.forEach(colIndex => {
|
|
const cell = document.createElement('th');
|
|
cell.textContent = colIndex;
|
|
hRow.appendChild(cell);
|
|
});
|
|
|
|
thead.appendChild(hRow);
|
|
table.appendChild(thead);
|
|
|
|
const tbody = document.createElement('tbody');
|
|
|
|
rowIndexes.forEach(rowIndex => {
|
|
const tRow = document.createElement('tr');
|
|
|
|
const rowHeader = document.createElement('th');
|
|
rowHeader.textContent = rowIndex;
|
|
tRow.appendChild(rowHeader);
|
|
|
|
colIndexes.forEach(colIndex => {
|
|
const cell = document.createElement('td');
|
|
cell.textContent = data[rowIndex][colIndex];
|
|
tRow.appendChild(cell);
|
|
});
|
|
|
|
tbody.appendChild(tRow);
|
|
});
|
|
table.appendChild(tbody);
|
|
|
|
return table;
|
|
}
|
|
|
|
|
|
function parseAndRenderData(data) {
|
|
for (const [tableName, tableData] of Object.entries(data)) {
|
|
// Parse JSON into object
|
|
const parsedData = JSON.parse(tableData);
|
|
|
|
const tableTitle = document.createElement('H2');
|
|
tableTitle.innerHTML = tableName;
|
|
document.body.appendChild(tableTitle);
|
|
|
|
// Create table and header
|
|
const table = createTable(parsedData);
|
|
|
|
// Append table to the body of the HTML
|
|
document.body.appendChild(table);
|
|
}
|
|
}
|
|
|
|
document.addEventListener('DOMContentLoaded', function () {
|
|
fetch(`${window.BASE_URL}/rules/tables`)
|
|
.then(response => response.json())
|
|
.then(data => {
|
|
parseAndRenderData(data)
|
|
});
|
|
});
|
|
</script>
|
|
</body>
|
|
</html> |