$ -> chartInstance = null $('#reports-download').on 'click', -> canvas = $('#benchmark-chart')[0] a = document.createElement 'a' a.href = canvas.toDataURL 'image/png' a.download = 'chart.png' a.click() $('#reports-button').on 'click', (e) -> $('#reports-download').attr('disabled', true) chartInstance.destroy() if chartInstance benchmarkId = $('#report-benchmarks').val() testIds = $('#report-tests').val() benchmarkSearchParams = new URLSearchParams benchmark_id: benchmarkId benchmarkRes = await fetch("/api/v1/benchmark/details?#{benchmarkSearchParams}") benchmarkData = await benchmarkRes.json() data = labels: [] datasets: [ { label: 'Average Score' data: [] } ] for testId in testIds try testSearchParams = new URLSearchParams test_id: testId testRes = await fetch("/api/v1/test/details?#{testSearchParams}") testData = await testRes.json() resultSearchParams = new URLSearchParams test_id: testId benchmark_id: benchmarkId resultRes = await fetch("/api/v1/result/list?#{resultSearchParams}") resultData = await resultRes.json() avg_total = 0 min_total = 0 max_total = 0 for result in resultData avg_total += result.average min_total += result.minimum if result.minimum max_total += result.maximum if result.maximum data.labels.push(testData.title) data.datasets[0].data.push(avg_total / resultData.length) catch error console.error 'An error occurred while fetching benchmark results.', error ctx = $('#benchmark-chart')[0].getContext('2d') options = indexAxis: 'y' plugins: datalabels: anchor: 'end' align: 'left' color: 'black' font: weight: 'bold' formatter: (value) -> value scales: y: beginAtZero: true chartInstance = new Chart ctx, type: 'bar' data: data options: options plugins: [ChartDataLabels] $('#reports-download').attr('disabled', false) $('#benchmark-chart')[0].removeClass('disabled')