async function fetchOriginsWithLeases(element) {
    let xhr = new XMLHttpRequest();
    xhr.open("GET", '/-/origins?leases=true', true);
    xhr.onreadystatechange = function () {
        if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
            const x = JSON.parse(xhr.response)
            console.debug(x)

            element.innerHTML = ''
            let table = document.createElement('table')
            table.classList.add('table', 'mt-4');
            let thead = document.createElement('thead');
            thead.innerHTML = `
                    <tr>
                        <th scope="col">origin</th>
                        <th scope="col">hostname</th>
                        <th scope="col">OS</th>
                        <th scope="col">driver version</th>
                        <th scope="col">leases</th>
                    </tr>`
            table.appendChild(thead)
            let tbody = document.createElement('thead');
            x.forEach((o) => {
                let row = document.createElement('tr');
                row.innerHTML = `
                        <td><code>${o.origin_ref}</code></td>
                        <td>${o.hostname}</td>
                        <td>${o.os_platform}</td>
                        <td>${o.os_version}</td>
                        <td>${o.leases.map(x => `<code title="expires: ${x.lease_expires}">${x.lease_ref}</code>`).join(', ')}</td>`
                tbody.appendChild(row);
            })
            table.appendChild(tbody)
            element.appendChild(table)
        }
    };
    xhr.send();
}

async function fetchLeases(element) {
    let xhr = new XMLHttpRequest();
    xhr.open("GET", '/-/leases?origin=true', true);
    xhr.onreadystatechange = function () {
        if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
            const x = JSON.parse(xhr.response)
            console.debug(x)

            element.innerHTML = ''
            let table = document.createElement('table')
            table.classList.add('table', 'mt-4');
            let thead = document.createElement('thead');
            thead.innerHTML = `
                    <tr>
                        <th scope="col">lease</th>
                        <th scope="col">created</th>
                        <th scope="col">updated</th>
                        <th scope="col">expires</th>
                        <th scope="col">origin</th>
                    </tr>`
            table.appendChild(thead)
            let tbody = document.createElement('thead');
            x.forEach((o) => {
                let row = document.createElement('tr');
                row.innerHTML = `
                        <td><code>${o.lease_ref}</code></td>
                        <td>${o.lease_created}</td>
                        <td>${o.lease_updated}</td>
                        <td>${o.lease_expires}</td>
                        <td><code>${o.origin_ref}</code></td>`
                tbody.appendChild(row);
            })
            table.appendChild(tbody)
            element.appendChild(table)
        }
    };
    xhr.send();
}

async function deleteOrigins() {
    let xhr = new XMLHttpRequest();
    xhr.open("DELETE", '/-/origins', true);
    xhr.send();
    await fetchOriginsWithLeases()
}

async function deleteLease(lease_ref) {
    if (lease_ref === undefined)
        lease_ref = window.prompt("Please enter 'lease_ref' which should be deleted");
    if (lease_ref === null || lease_ref === "")
        return
    let xhr = new XMLHttpRequest();
    xhr.open("DELETE", `/-/lease/${{lease_ref}}`, true);
    xhr.send();
}