From 13625d722a421441c1edc6eb1256b7e20f20544d Mon Sep 17 00:00:00 2001 From: Pinapelz Date: Sun, 26 Nov 2023 02:36:07 -0800 Subject: use SSR for rendering graph + transition demo to PhaseConnect - I like Phase Connect --- src/app/globals.css | 1 + src/app/layout.tsx | 2 +- src/app/page.tsx | 2 +- src/components/DataChart/DataChart.tsx | 64 +++++------------- src/components/Footer/Footer.tsx | 10 +-- src/components/SubscriberTable/SubscriberTable.tsx | 2 +- src/components/TitleBar/TitleBar.tsx | 26 ++++---- src/components/TitleBar/TitleBarStyle.css | 1 + src/pages/stats/[slug].tsx | 77 +++++++++++++++------- 9 files changed, 95 insertions(+), 90 deletions(-) create mode 100644 src/components/TitleBar/TitleBarStyle.css (limited to 'src') diff --git a/src/app/globals.css b/src/app/globals.css index b5c61c9..e6d1700 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -1,3 +1,4 @@ @tailwind base; @tailwind components; @tailwind utilities; +@import url('https://fonts.googleapis.com/css2?family=Quantico:wght@400;700&display=swap'); diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 3fdc727..a8df895 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -7,7 +7,7 @@ const inter = Inter({ subsets: ['latin'] }) export const metadata: Metadata = { title: 'Nijitracker - Nijisanji Subscriber Tracker', - description: 'Nijitracker, historical subscriber data for members of Nijisanji', + description: 'Nijitracker, historical subscriber data for members of Phase Connect', } export default function RootLayout({ diff --git a/src/app/page.tsx b/src/app/page.tsx index 6016d89..ed29653 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -6,7 +6,7 @@ async function Home(){ const data: SubscriberDataTableProp = await getData(); return( <> - +
diff --git a/src/components/DataChart/DataChart.tsx b/src/components/DataChart/DataChart.tsx index a82fa26..9fbc5fe 100644 --- a/src/components/DataChart/DataChart.tsx +++ b/src/components/DataChart/DataChart.tsx @@ -1,5 +1,4 @@ -"use client"; -import React, {useEffect, useState} from 'react'; +import React from 'react'; import { Chart as ChartJS, CategoryScale, @@ -24,55 +23,13 @@ ChartJS.register( ); - - - -interface Dataset { - label: string; - data: number[]; - borderColor: string; - backgroundColor: string; -} - -interface DataChartResponseProps { - labels: string[]; - datasets: Dataset[]; -} - interface DataChartProps { - channel_name: string; - requestUrl?: string; + channel_name?: string; + chartData?: any; graphTitle?: string; } -const DataChart: React.FC = ({ channel_name, requestUrl, graphTitle }) => { - const [data, setData] = useState(); - const apiUrl = process.env.NEXT_PUBLIC_API_URL - - useEffect(() => { - const fetchData = async () => { - try { - const response = await fetch(requestUrl || `${apiUrl}/api/subscribers/${channel_name}`); - const json = await response.json(); - setData({ - labels: json.labels, - datasets: [ - { - label: 'Subscriber Count', - data: json.datasets, - borderColor: 'rgb(255, 99, 132)', - backgroundColor: 'rgba(255, 99, 132, 0.5)', - }, - ], - }); - } catch (error) { - console.error('Error fetching data:', error); - } - }; - - fetchData(); - }, [apiUrl, channel_name, requestUrl]); - +const DataChart: React.FC = ({ channel_name, chartData, graphTitle }) => { const options = { responsive: true, plugins: { @@ -97,10 +54,19 @@ const DataChart: React.FC = ({ channel_name, requestUrl, graphTi } }; - if (!data) { - return
Loading...
; + const data = { + labels: chartData.labels, + datasets: [ + { + label: 'Subscriber Count', + data: chartData.datasets, + borderColor: 'rgb(255, 99, 132)', + backgroundColor: 'rgba(255, 99, 132, 0.5)', + }, + ], } + return ; }; diff --git a/src/components/Footer/Footer.tsx b/src/components/Footer/Footer.tsx index 6585e52..7fb8303 100644 --- a/src/components/Footer/Footer.tsx +++ b/src/components/Footer/Footer.tsx @@ -4,16 +4,16 @@ import React from 'react'; const Footer = () => { return (