diff --git a/app/page.tsx b/app/page.tsx index 6f42dca..0adf982 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,5 +1,3 @@ -'use client'; - import PerformanceDisplay from '@/components/graphs/PerformanceDisplay'; import ScrollDownIcon from '@/components/home/ScrollDownIcon'; import Splash from '@/components/home/Splash'; diff --git a/components/graphs/PerformanceDisplay.tsx b/components/graphs/PerformanceDisplay.tsx index bbe4a0c..da1e8b0 100644 --- a/components/graphs/PerformanceDisplay.tsx +++ b/components/graphs/PerformanceDisplay.tsx @@ -1,3 +1,4 @@ +'use client'; import useSWR from 'swr'; import ErrorPage from '../all/Error'; import Table from '../form/Table'; diff --git a/components/home/IncrementingNumber.tsx b/components/home/IncrementingNumber.tsx new file mode 100644 index 0000000..16234db --- /dev/null +++ b/components/home/IncrementingNumber.tsx @@ -0,0 +1,35 @@ +'use client'; + +import React, { useEffect, useState } from 'react'; + +export const IncrementingNumber = ({ + target, + duration, +}: { + target: number; + duration: number; +}) => { + const [progress, setProgress] = useState(0); + + const framesPerSecond = 60; + const nSteps = Math.floor(duration / (1000 / framesPerSecond)); + + useEffect(() => { + let frame = 0; + + const interval = setInterval(() => { + console.log(frame); + frame++; + setProgress(Math.min(frame, nSteps)); + if (frame >= nSteps) { + clearInterval(interval); + } + }, 1000 / framesPerSecond); + + return () => clearInterval(interval); + }, [nSteps]); + + const current = Math.floor(Math.pow(progress / nSteps, 2) * target); + + return <>{current.toLocaleString()} kr>; +}; diff --git a/components/home/Splash.tsx b/components/home/Splash.tsx index d37a75b..8a75c64 100644 --- a/components/home/Splash.tsx +++ b/components/home/Splash.tsx @@ -1,24 +1,29 @@ -import Image from 'next/image'; +import { formatDateNorwegian } from '@/lib/dateUtils'; +import { IncrementingNumber } from './IncrementingNumber'; +import { prisma } from '@/lib/prisma'; -const Splash = () => ( -
+ Markedsverdi pr. {formatDateNorwegian(performance.date)} +
+