(async function() { let directoriesSocket = await fetch(`https://api.codetabs.com/v1/proxy?quest=${encodeURIComponent("https://codeberg.org/api/v1/repos/qikp/benchmarks/contents")}`); let directories = await directoriesSocket.json(); let directoryNames = directories.filter(e => e.type == "dir").map(e => e.name); for (const directory of directoryNames) { let filesSocket = await fetch(`https://api.codetabs.com/v1/proxy?quest=${encodeURIComponent(`https://codeberg.org/api/v1/repos/qikp/benchmarks/contents/${directory}`)}`); let files = await filesSocket.json(); let sheets = files.filter(e => e.type == "file").filter(e => e.name.endsWith(".csv")).map(e => ({name: e.name.split(".csv")[0], url: e.download_url})); let averageScores = {}; for (const sheet of sheets) { let sheetSocket = await fetch(`https://api.codetabs.com/v1/proxy?quest=${encodeURIComponent(sheet.url)}`); let sheetText = await sheetSocket.text(); let lines = sheetText.split("\r").join("").split("\n").slice(1) let processedLines = lines.slice(-1)[0] ? lines : lines.slice(0, -1) let scores = processedLines.map(e => parseFloat(e.split(",")[1])); let totalScore = 0; for (const score of scores) { totalScore += score; } averageScores[sheet.name] = totalScore / scores.length; } let container = document.createElement("div"); container.style.width = "640px"; container.style.height = "480px"; container.style.display = "inline-block"; let header = document.createElement("h2"); header.textContent = directory; let canvas = document.createElement("canvas"); new Chart(canvas, { type: "bar", data: { labels: Object.keys(averageScores), datasets: [{ label: "Mean similarity", data: Object.values(averageScores) }], }, options: { maintainAspectRatio: false } }); document.body.appendChild(header); container.appendChild(canvas); document.body.appendChild(container); } document.querySelector("#loading").outerHTML = ""; })();