DBXEN (DXN) Release Table

by jarosciak

HTML

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>DXN Release Table</title>
</head>

<body>

    <table id="dxnTable">
        <thead>
            <tr>
                <th>Year</th>
                <th>Tokens Minted<br><small>(Last Cycle of the Year)</small></th>
                <th>Tokens Minted<br><small>(Entire Year)</small></th>
                <th>% of Total Supply</th>
            </tr>
        </thead>
        <tbody>
            <!-- Rows will be populated by JavaScript -->
        </tbody>
    </table>

</body>

</html>

CSS

body {
    font-family: Arial, sans-serif;
    margin: 40px;
    background-color: #f4f4f4;
}

table {
    width: 100%;
    max-width: 800px;
    margin: 20px auto;    
    box-shadow: 0 0 20px rgba(0, 0, 0, 0.15);
}

th, td {
    padding: 10px 20px;
    text-align: left;
}

th {
    background-color: #007BFF;
    color: white;
    border-bottom: 2px solid #444;
}

tr:nth-child(even) {
    background-color: #f2f2f2;
}

tr:hover {
    background-color: #ddd;
}

JavaScript

const startingDXN = 10000;
const daysInYear = 365;
const decreaseRate = 0.002;
const maxTokens = 5010000;

let currentValue = startingDXN;
let totalMinted = 0;

const tableBody = document.querySelector("#dxnTable tbody");

for (let year = 1; year <= 10; year++) {
    let yearlyMinted = 0;
    let lastDayMinted = 0;

    for (let day = 1; day <= daysInYear; day++) {
        currentValue = currentValue * (1 - decreaseRate);
        yearlyMinted += currentValue;
        if (day === daysInYear) {
            lastDayMinted = currentValue;
        }
    }

    totalMinted += yearlyMinted;
    if (totalMinted > maxTokens) {
        totalMinted = maxTokens;
    }

    const percentageMinted = ((totalMinted / maxTokens) * 100).toFixed(2);
    const rowHTML = `<tr>
        <td>${year}</td>
        <td>${lastDayMinted.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}</td>
        <td>${yearlyMinted.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}</td>
        <td>${percentageMinted}%</td>
    </tr>`;
    tableBody.innerHTML += rowHTML;
}