feat: Add real-time filtering to chart based on search input

This commit is contained in:
Paul Gauthier (aider) 2024-11-24 07:12:39 -08:00
parent 3f16652d56
commit cebd9cabb3

View file

@ -1,16 +1,5 @@
document.addEventListener('DOMContentLoaded', function () { document.addEventListener('DOMContentLoaded', function () {
var ctx = document.getElementById('quantChart').getContext('2d'); var ctx = document.getElementById('quantChart').getContext('2d');
var chartData = {
labels: [],
datasets: [{
label: 'Percent completed correctly',
data: [],
backgroundColor: 'rgba(54, 162, 235, 0.2)',
borderColor: 'rgba(54, 162, 235, 1)',
borderWidth: 1
}]
};
var allData = []; var allData = [];
{% for row in site.data.quant %} {% for row in site.data.quant %}
allData.push({ allData.push({
@ -22,51 +11,78 @@ document.addEventListener('DOMContentLoaded', function () {
// Sort data by pass_rate_2 in descending order // Sort data by pass_rate_2 in descending order
allData.sort((a, b) => b.pass_rate_2 - a.pass_rate_2); allData.sort((a, b) => b.pass_rate_2 - a.pass_rate_2);
allData.forEach(function(row) { var chart;
chartData.labels.push(row.model);
chartData.datasets[0].data.push(row.pass_rate_2);
});
new Chart(ctx, { function updateChart(filterText) {
type: 'bar', var filteredData = allData.filter(row =>
data: chartData, row.model.toLowerCase().includes(filterText.toLowerCase())
options: { );
plugins: {
legend: { var chartData = {
display: false labels: filteredData.map(row => row.model),
}, datasets: [{
title: { label: 'Percent completed correctly',
display: true, data: filteredData.map(row => row.pass_rate_2),
text: 'Aider code editing benchmark', backgroundColor: 'rgba(54, 162, 235, 0.2)',
font: { borderColor: 'rgba(54, 162, 235, 1)',
size: 16 borderWidth: 1
} }]
} };
},
scales: { if (chart) {
y: { chart.data = chartData;
beginAtZero: true, chart.update();
title: { } else {
display: true, chart = new Chart(ctx, {
text: 'Percent completed correctly', type: 'bar',
font: { data: chartData,
size: 14 options: {
plugins: {
legend: {
display: false
},
title: {
display: true,
text: 'Aider code editing benchmark',
font: {
size: 16
}
} }
}, },
ticks: { scales: {
font: { y: {
size: 16 beginAtZero: true,
} title: {
} display: true,
}, text: 'Percent completed correctly',
x: { font: {
ticks: { size: 14
font: { }
size: 16 },
ticks: {
font: {
size: 16
}
}
},
x: {
ticks: {
font: {
size: 16
}
}
} }
} }
} }
} });
} }
}
// Initial chart render
updateChart('');
// Connect search input to chart filtering
document.getElementById('quantSearchInput').addEventListener('keyup', function() {
updateChart(this.value);
}); });
}); });