Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 36 additions & 2 deletions apps/dashboard/src/RolldownStats.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,21 @@ const formatNumberWithCommas = (num: number): string => {
return num.toLocaleString();
};

// Utility function to format dates
const formatDate = (dateString: string): string => {
return new Date(dateString).toLocaleDateString('en-US', {
year: 'numeric',
month: 'short',
day: 'numeric',
});
};

// Transform rolldown stats data for charts
const buildTimeData = rolldownStats.map(stat => ({
name: `v${stat.version}`,
value: stat.buildTime,
version: stat.version,
publicationDate: (stat as any).publicationDate,
})).sort((a, b) => a.value - b.value); // Sort from smallest to largest

// Calculate bundle size differences between consecutive versions
Expand All @@ -34,6 +45,8 @@ const bundleSizeDiffData = rolldownStats.map((stat, index) => {
previousSize: null,
currentSize: stat.totalSize,
isBaseline: true,
version: stat.version,
publicationDate: (stat as any).publicationDate,
};
}

Expand All @@ -47,6 +60,8 @@ const bundleSizeDiffData = rolldownStats.map((stat, index) => {
previousSize: prevSize,
currentSize: currentSize,
isBaseline: false,
version: stat.version,
publicationDate: (stat as any).publicationDate,
};
}).sort((a, b) => a.value - b.value); // Sort from smallest to largest

Expand All @@ -61,15 +76,33 @@ function RolldownStats({ selectedMetric, setSelectedMetric }: RolldownStatsProps
const data = props.payload;
if (!data) return [value, name];

// Format publication date if available
const publicationDateText = data.publicationDate
? ` | Published: ${formatDate(data.publicationDate)}`
: ' | Publication date unavailable';

if (data.isBaseline) {
return [`${formatNumberWithCommas(data.currentSize)} bytes (baseline)`, 'Bundle Size'];
return [`${formatNumberWithCommas(data.currentSize)} bytes (baseline)${publicationDateText}`, 'Bundle Size'];
}

const sign = value >= 0 ? '+' : '';
const changeText = `${sign}${formatNumberWithCommas(value)} bytes`;
const fromTo = `(${formatNumberWithCommas(data.previousSize)} → ${formatNumberWithCommas(data.currentSize)})`;

return [`${changeText} ${fromTo}`, 'Size Change'];
return [`${changeText} ${fromTo}${publicationDateText}`, 'Size Change'];
};

// Custom tooltip formatter for build time
const buildTimeTooltipFormatter = (value: any, name: string, props: any) => {
const data = props.payload;
if (!data) return [value, name];

// Format publication date if available
const publicationDateText = data.publicationDate
? ` | Published: ${formatDate(data.publicationDate)}`
: ' | Publication date unavailable';

return [`${value}ms${publicationDateText}`, 'Build Time'];
};

const rolldownMetrics = [
Expand Down Expand Up @@ -166,6 +199,7 @@ function RolldownStats({ selectedMetric, setSelectedMetric }: RolldownStatsProps
tickLine={{ stroke: '#d1d5db' }}
/>
<Tooltip
formatter={buildTimeTooltipFormatter}
contentStyle={{
backgroundColor: 'white',
border: '1px solid #d1d5db',
Expand Down
4 changes: 3 additions & 1 deletion dprint.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@
},
"toml": {
},
"excludes": [],
"excludes": [
"pnpm-lock.yaml"
],
"plugins": [
"https://plugins.dprint.dev/typescript-0.94.0.wasm",
"https://plugins.dprint.dev/json-0.20.0.wasm",
Expand Down
Loading