mirror of
https://github.com/vercel/next-learn.git
synced 2026-06-24 21:26:02 +00:00
37 lines
982 B
TypeScript
37 lines
982 B
TypeScript
import { Revenue } from './definitions';
|
|
|
|
export const formatCurrency = (amount: number) => {
|
|
return (amount / 100).toLocaleString('en-US', {
|
|
style: 'currency',
|
|
currency: 'USD',
|
|
});
|
|
};
|
|
|
|
export const formatDateToLocal = (
|
|
dateStr: string,
|
|
locale: string = 'en-US',
|
|
) => {
|
|
const date = new Date(dateStr);
|
|
const options: Intl.DateTimeFormatOptions = {
|
|
day: 'numeric',
|
|
month: 'short',
|
|
year: 'numeric',
|
|
};
|
|
const formatter = new Intl.DateTimeFormat(locale, options);
|
|
return formatter.format(date);
|
|
};
|
|
|
|
export const generateYAxis = (revenue: Revenue[]) => {
|
|
// Calculate what labels we need to display on the y-axis
|
|
// based on highest record and in 1000s
|
|
const yAxisLabels = [];
|
|
const highestRecord = Math.max(...revenue.map((month) => month.revenue));
|
|
const topLabel = Math.ceil(highestRecord / 1000) * 1000;
|
|
|
|
for (let i = topLabel; i >= 0; i -= 1000) {
|
|
yAxisLabels.push(`$${i / 1000}K`);
|
|
}
|
|
|
|
return { yAxisLabels, topLabel };
|
|
};
|