for (leti = 0; i < samples.length; i++) { constsample = samples[i]; constproviderKey = sample.provider.toLowerCase();
// Check if we already have a data point at this position if (!dataPoints[i]) { dataPoints[i] = { name:`${i+1}` }; }
// Store latency value, ensuring it's a valid number for chart rendering dataPoints[i][providerKey] = Number.isFinite(sample.duration) ? Number.parseFloat(sample.duration.toFixed(1)) : 0; }
returndataPoints; }, [deferredApiSamples]);
// Get unique providers for chart lines constapiProviders = useMemo(() => { constproviders = newSet( deferredApiSamples.map((s) =>s.provider.toLowerCase()), ); returnArray.from(providers).sort((a, b) =>a.localeCompare(b)); }, [deferredApiSamples]);
// Color palette for providers constproviderColors = useMemo( () => ({ anilist:"#06b6d4", mangadex:"#f59e0b", comick:"#8b5cf6", default:"#ef4444", }), [], );
Real-time performance monitoring dashboard Displays API latency and memory usage with interactive charts
Source