benchmarks-viewer / script.js
qikp's picture
Upload 3 files
94ffa9a verified
(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 = "";
})();