remove analytics page
Some checks failed
deploy / deploy (push) Failing after 21s

This commit is contained in:
Lee 2024-02-01 01:37:52 +00:00
parent 4e3ba2d0c7
commit 0f70a50bd4
3 changed files with 20 additions and 100 deletions

@ -1,89 +0,0 @@
import AnalyticsChart from "@/components/AnalyticsChart";
import Card from "@/components/Card";
import Container from "@/components/Container";
import { ScoresaberMetricsHistory } from "@/schemas/fascinated/scoresaberMetricsHistory";
import ssrSettings from "@/ssrSettings.json";
import { formatNumber } from "@/utils/numberUtils";
import { formatDate } from "@/utils/timeUtils";
import { isProduction } from "@/utils/utils";
import { Metadata } from "next";
import Link from "next/link";
async function getData() {
const response = await fetch(
"https://bs-tracker.fascinated.cc/analytics?time=30d",
{
next: {
revalidate: isProduction() ? 600 : 0, // 10 minutes (0 seconds in dev)
},
},
);
const json = await response.json();
return {
data: json as ScoresaberMetricsHistory,
};
}
export async function generateMetadata(): Promise<Metadata> {
const { data } = await getData();
const description =
"View Scoresaber metrics and statistics over the last 30 days.";
const lastActivePlayers =
data.activePlayersHistory[data.activePlayersHistory.length - 1].value;
const lastScoreCount =
data.scoreCountHistory[data.scoreCountHistory.length - 1].value;
return {
title: `Analytics`,
description: description,
openGraph: {
siteName: ssrSettings.siteName,
title: `Analytics`,
description:
description +
`
Last Updated: ${formatDate(new Date().toISOString())}
Players Online Today: ${formatNumber(lastActivePlayers)}
Scores set Today: ${formatNumber(lastScoreCount)}`,
},
};
}
export default async function Analytics() {
const { data } = await getData();
return (
<main>
<Container>
<Card
outerClassName="mt-2"
className="flex flex-col items-center justify-center"
>
<h1 className="text-center text-3xl font-bold">Analytics</h1>
<p className="text-center">
Scoresaber metrics and statistics over the last 30 days.
</p>
<p className="text-gray-300">
Want more in-depth data? Click{" "}
<span className="text-pp-blue">
<Link
href="https://grafana.fascinated.cc/d/b3c6c28d-39e9-4fa9-8e2b-b0ddb10f875e/beatsaber-metrics"
target="_blank"
rel="noopener noreferrer"
>
here
</Link>
</span>
</p>
<div className="mt-3 h-[400px] w-full">
<AnalyticsChart historyData={data} />
</div>
</Card>
</Container>
</main>
);
}

@ -1,8 +1,4 @@
import { import { MagnifyingGlassIcon } from "@heroicons/react/20/solid";
CogIcon,
MagnifyingGlassIcon,
ServerIcon,
} from "@heroicons/react/20/solid";
import { GlobeAltIcon, TvIcon } from "@heroicons/react/24/outline"; import { GlobeAltIcon, TvIcon } from "@heroicons/react/24/outline";
import { Card } from "../ui/card"; import { Card } from "../ui/card";
import FriendsButton from "./FriendsButton"; import FriendsButton from "./FriendsButton";
@ -29,12 +25,6 @@ export default function Navbar() {
icon={<TvIcon height={23} width={23} />} icon={<TvIcon height={23} width={23} />}
href="/overlay/builder" href="/overlay/builder"
/> />
<NavbarButton
ariaLabel="View analytics for Scoresaber"
text="Analytics"
icon={<ServerIcon height={23} width={23} />}
href="/analytics"
/>
<div className="m-auto" /> <div className="m-auto" />

@ -9,15 +9,34 @@ if (typeof window !== "undefined") {
} }
export const IDBStorage: StateStorage = { export const IDBStorage: StateStorage = {
/**
* Fetch an item from the storage
*
* @param name name of the item to be fetched
* @returns the value of the item or null if it doesn't exist
*/
getItem: async (name: string): Promise<string | null> => { getItem: async (name: string): Promise<string | null> => {
//console.log(name, "has been retrieved"); //console.log(name, "has been retrieved");
return (await get(name, storage)) || null; return (await get(name, storage)) || null;
}, },
/**
* Save an item to the storage
*
* @param name name of the item to be saved
* @param value value of the item to be saved
*/
setItem: async (name: string, value: string): Promise<void> => { setItem: async (name: string, value: string): Promise<void> => {
//console.log(name, "with value", value, "has been saved"); //console.log(name, "with value", value, "has been saved");
await set(name, value, storage); await set(name, value, storage);
}, },
/**
* Delete an item from the storage
*
* @param name name of the item to be deleted
*/
removeItem: async (name: string): Promise<void> => { removeItem: async (name: string): Promise<void> => {
//console.log(name, "has been deleted"); //console.log(name, "has been deleted");
await del(name, storage); await del(name, storage);