async function fetchDataInChunks(url) {
    let response = await fetch(url);
    let data = await response.json();
    return data.data;
}

async function displayDataInChunks(initialChunkSize, subsequentChunkSize) {
    let data = await fetchDataInChunks('/variable_names');
    let index = 0;

    function displayNextChunk(chunkSize) {
        let chunk = data.slice(index, index + chunkSize);
        document.getElementById('variable-names').innerText += chunk.join('\n') + '\n';
        index += chunkSize;
    }

    function checkScrollPosition() {
        var preElement = document.getElementById("variable-names");
        var scrollTop = preElement.scrollTop;
        var scrollHeight = preElement.scrollHeight;
        var clientHeight = preElement.clientHeight;

        if (scrollTop + clientHeight >= scrollHeight) {
            displayNextChunk(subsequentChunkSize);
        }
    }        
    displayNextChunk(initialChunkSize);        
    var preElement = document.getElementById("variable-names");
    preElement.addEventListener("scroll", checkScrollPosition);
}        
displayDataInChunks(40, 10); 