···
679
+
// Calculate dynamic max for logarithmic scale
680
+
const responseTimes = data.map((d) => d.averageResponseTime);
681
+
const maxResponseTime = Math.max(...responseTimes);
683
+
// Calculate appropriate max for log scale (next power of 10)
684
+
const logMax = Math.pow(10, Math.ceil(Math.log10(maxResponseTime)));
686
+
// Generate dynamic tick values based on the data range
687
+
const generateLogTicks = (min, max) => {
690
+
while (current <= max) {
691
+
ticks.push(current);
697
+
const dynamicTicks = generateLogTicks(1, logMax);
charts.latency = new Chart(ctx, {
label: "Average Response Time",
685
-
data: data.map((d) => d.averageResponseTime),
705
+
data: responseTimes,
backgroundColor: "rgba(16, 185, 129, 0.1)",
···
title: { display: true, text: 'Response Time (ms, log scale)' },
grid: { color: 'rgba(0, 0, 0, 0.05)' },
callback: function(value) {
738
-
// Show clean numbers: 1, 10, 100, 1000, etc.
739
-
if (value === 1 || value === 10 || value === 100 || value === 1000 || value === 10000) {
759
+
// Show clean numbers based on dynamic range
760
+
if (dynamicTicks.includes(value)) {