Remove nextjs scaffolding contents #113
@ -1,78 +1,8 @@
|
|||||||
/* Copyright (C) 2024 Manuel Bustillo*/
|
/* Copyright (C) 2024 Manuel Bustillo*/
|
||||||
|
|
||||||
import { Revenue } from './definitions';
|
|
||||||
|
|
||||||
export const formatCurrency = (amount: number) => {
|
|
||||||
return (amount / 100).toLocaleString('en-US', {
|
|
||||||
style: 'currency',
|
|
||||||
currency: 'USD',
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
export const getCsrfToken = () => {
|
export const getCsrfToken = () => {
|
||||||
return document.cookie
|
return document.cookie
|
||||||
.split("; ")
|
.split("; ")
|
||||||
.find((row) => row.startsWith("csrf-token"))
|
.find((row) => row.startsWith("csrf-token"))
|
||||||
?.split("=")[1] || 'unknown';
|
?.split("=")[1] || 'unknown';
|
||||||
}
|
}
|
||||||
|
|
||||||
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 };
|
|
||||||
};
|
|
||||||
|
|
||||||
export const generatePagination = (currentPage: number, totalPages: number) => {
|
|
||||||
// If the total number of pages is 7 or less,
|
|
||||||
// display all pages without any ellipsis.
|
|
||||||
if (totalPages <= 7) {
|
|
||||||
return Array.from({ length: totalPages }, (_, i) => i + 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
// If the current page is among the first 3 pages,
|
|
||||||
// show the first 3, an ellipsis, and the last 2 pages.
|
|
||||||
if (currentPage <= 3) {
|
|
||||||
return [1, 2, 3, '...', totalPages - 1, totalPages];
|
|
||||||
}
|
|
||||||
|
|
||||||
// If the current page is among the last 3 pages,
|
|
||||||
// show the first 2, an ellipsis, and the last 3 pages.
|
|
||||||
if (currentPage >= totalPages - 2) {
|
|
||||||
return [1, 2, '...', totalPages - 2, totalPages - 1, totalPages];
|
|
||||||
}
|
|
||||||
|
|
||||||
// If the current page is somewhere in the middle,
|
|
||||||
// show the first page, an ellipsis, the current page and its neighbors,
|
|
||||||
// another ellipsis, and the last page.
|
|
||||||
return [
|
|
||||||
1,
|
|
||||||
'...',
|
|
||||||
currentPage - 1,
|
|
||||||
currentPage,
|
|
||||||
currentPage + 1,
|
|
||||||
'...',
|
|
||||||
totalPages,
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user