From 0693b7b15458171404305904eeaed7ea95244191 Mon Sep 17 00:00:00 2001 From: Alexander Karan Date: Tue, 24 Feb 2026 20:37:28 +0800 Subject: [PATCH] Added SSR Charts --- packages/docs/src/components/ChartTabs.astro | 34 +++++++++++++++++-- .../src/components/ComparisonBarChart.astro | 11 ++++-- .../src/components/SSRBodySizeChart.astro | 10 ++++++ packages/docs/src/components/SSRCharts.astro | 18 ++++++++++ .../docs/src/components/SSRLatencyChart.astro | 10 ++++++ .../docs/src/components/SSROpsChart.astro | 10 ++++++ packages/docs/src/lib/types.ts | 2 +- packages/docs/src/pages/index.astro | 2 ++ 8 files changed, 91 insertions(+), 6 deletions(-) create mode 100644 packages/docs/src/components/SSRBodySizeChart.astro create mode 100644 packages/docs/src/components/SSRCharts.astro create mode 100644 packages/docs/src/components/SSRLatencyChart.astro create mode 100644 packages/docs/src/components/SSROpsChart.astro diff --git a/packages/docs/src/components/ChartTabs.astro b/packages/docs/src/components/ChartTabs.astro index 27be832..6f2057e 100644 --- a/packages/docs/src/components/ChartTabs.astro +++ b/packages/docs/src/components/ChartTabs.astro @@ -4,14 +4,17 @@ interface Props { label: string tab1Label: string tab2Label: string + tab3Label?: string } -const { sectionId, label, tab1Label, tab2Label } = Astro.props +const { sectionId, label, tab1Label, tab2Label, tab3Label } = Astro.props const tab1Id = `${sectionId}-tab-1` const tab2Id = `${sectionId}-tab-2` +const tab3Id = `${sectionId}-tab-3` const panel1Id = `${sectionId}-panel-1` const panel2Id = `${sectionId}-panel-2` +const panel3Id = `${sectionId}-panel-3` ---
@@ -36,6 +39,20 @@ const panel2Id = `${sectionId}-panel-2` > {tab2Label} + { + tab3Label && ( + + ) + }
+ { + tab3Label && ( + + ) + }
@@ -134,7 +164,7 @@ const panel2Id = `${sectionId}-panel-2` const tabs = section.querySelectorAll('[role="tab"]') const panels = section.querySelectorAll('[role="tabpanel"]') - if (tabs.length !== 2 || panels.length !== 2) return + if (tabs.length === 0 || panels.length === 0) return function setActive(index: number) { tabs.forEach((tab, i) => { diff --git a/packages/docs/src/components/ComparisonBarChart.astro b/packages/docs/src/components/ComparisonBarChart.astro index 6f46cdb..85ad5ff 100644 --- a/packages/docs/src/components/ComparisonBarChart.astro +++ b/packages/docs/src/components/ComparisonBarChart.astro @@ -4,7 +4,7 @@ import type { ChartDatum } from '../lib/types' interface Props { title: string data: ChartDatum[] - valueFormat: 'count' | 'mb' + valueFormat: 'count' | 'mb' | 'kb' | 'ms' } const { title, data, valueFormat } = Astro.props @@ -119,9 +119,14 @@ const chartPayload = JSON.stringify({ data, valueFormat }) { width: number; height: number } >() - function formatValue(value: number, format: 'count' | 'mb'): string { + function formatValue( + value: number, + format: 'count' | 'mb' | 'kb' | 'ms', + ): string { if (format === 'count') return String(Math.round(value)) - return `${value.toFixed(2)} MB` + if (format === 'mb') return `${value.toFixed(2)} MB` + if (format === 'kb') return `${value.toFixed(2)} KB` + return `${value.toFixed(2)} ms` } function setTooltipContent( diff --git a/packages/docs/src/components/SSRBodySizeChart.astro b/packages/docs/src/components/SSRBodySizeChart.astro new file mode 100644 index 0000000..2db0349 --- /dev/null +++ b/packages/docs/src/components/SSRBodySizeChart.astro @@ -0,0 +1,10 @@ +--- +import { ssrStats } from '../lib/collections' +import ComparisonBarChart from './ComparisonBarChart.astro' + +const data = ssrStats + .filter((f) => f?.name != null && Number.isFinite(f.ssrBodySizeKb)) + .map((f) => ({ name: f.name, value: f.ssrBodySizeKb })) +--- + + diff --git a/packages/docs/src/components/SSRCharts.astro b/packages/docs/src/components/SSRCharts.astro new file mode 100644 index 0000000..c26c14b --- /dev/null +++ b/packages/docs/src/components/SSRCharts.astro @@ -0,0 +1,18 @@ +--- +import ChartTabs from './ChartTabs.astro' +import SSRBodySizeChart from './SSRBodySizeChart.astro' +import SSRLatencyChart from './SSRLatencyChart.astro' +import SSROpsChart from './SSROpsChart.astro' +--- + + + + + + diff --git a/packages/docs/src/components/SSRLatencyChart.astro b/packages/docs/src/components/SSRLatencyChart.astro new file mode 100644 index 0000000..e0af9e6 --- /dev/null +++ b/packages/docs/src/components/SSRLatencyChart.astro @@ -0,0 +1,10 @@ +--- +import { ssrStats } from '../lib/collections' +import ComparisonBarChart from './ComparisonBarChart.astro' + +const data = ssrStats + .filter((f) => f?.name != null && Number.isFinite(f.ssrAvgLatencyMs)) + .map((f) => ({ name: f.name, value: f.ssrAvgLatencyMs })) +--- + + diff --git a/packages/docs/src/components/SSROpsChart.astro b/packages/docs/src/components/SSROpsChart.astro new file mode 100644 index 0000000..b0930a6 --- /dev/null +++ b/packages/docs/src/components/SSROpsChart.astro @@ -0,0 +1,10 @@ +--- +import { ssrStats } from '../lib/collections' +import ComparisonBarChart from './ComparisonBarChart.astro' + +const data = ssrStats + .filter((f) => f?.name != null && Number.isFinite(f.ssrOpsPerSec)) + .map((f) => ({ name: f.name, value: f.ssrOpsPerSec })) +--- + + diff --git a/packages/docs/src/lib/types.ts b/packages/docs/src/lib/types.ts index 19e7079..0f71cbb 100644 --- a/packages/docs/src/lib/types.ts +++ b/packages/docs/src/lib/types.ts @@ -5,5 +5,5 @@ export interface ChartDatum { export interface ComparisonChartPayload { data: ChartDatum[] - valueFormat: 'count' | 'mb' + valueFormat: 'count' | 'mb' | 'kb' | 'ms' } diff --git a/packages/docs/src/pages/index.astro b/packages/docs/src/pages/index.astro index ab5839d..465229c 100644 --- a/packages/docs/src/pages/index.astro +++ b/packages/docs/src/pages/index.astro @@ -5,6 +5,7 @@ import Description from '../components/Description.astro' import DetailsLink from '../components/DetailsLink.astro' import FocusedToggle from '../components/FocusedToggle.astro' import PageHeader from '../components/PageHeader.astro' +import SSRCharts from '../components/SSRCharts.astro' import SSRStatsTable from '../components/SSRStatsTable.astro' import Layout from '../layouts/Layout.astro' --- @@ -43,6 +44,7 @@ import Layout from '../layouts/Layout.astro'

Runtime Performance

SSR Performance

+