diff --git a/src/app/server/[server]/historical-data/page.tsx b/src/app/server/[server]/historical-data/page.tsx
index 35ac9cb..515a071 100644
--- a/src/app/server/[server]/historical-data/page.tsx
+++ b/src/app/server/[server]/historical-data/page.tsx
@@ -15,6 +15,7 @@ import { banner } from "@/banner";
import Link from "next/link";
import TabServer from "@/components/misc/TabServer";
import { ChartComponent } from "@/components/Chart";
+import { NewChart } from "@/components/NewChart";
type Props = {
params: { server: string };
@@ -81,9 +82,8 @@ export default function ServerPage({ params }: { params: { server: string } }) {
diff --git a/src/components/FavoritesView.tsx b/src/components/FavoritesView.tsx
index e948399..a693328 100644
--- a/src/components/FavoritesView.tsx
+++ b/src/components/FavoritesView.tsx
@@ -14,7 +14,7 @@ export default function FavoritesView() {
const [loading, setLoading] = useState(true);
useEffectOnce(() => {
- fetch("/api/accountLocked/getAllFavorites").then((c) => {
+ fetch("/api/favorites/getAllFavorites").then((c) => {
c.json().then((d) => {
let num = 0;
d.result.forEach((a: any, i: number) => {
@@ -28,7 +28,7 @@ export default function FavoritesView() {
if (num == d.result.length) {
setLoading(false);
}
- }),
+ })
);
});
if (d.result.length == 0) setLoading(false);
@@ -65,7 +65,7 @@ export default function FavoritesView() {
className=" min-w-[128px] max-w-[328px] mb-2 h-[32px] max-md:hidden"
onClick={() => {
navigator.clipboard.writeText(
- server.name + ".mshf.minehut.gg",
+ server.name + ".mshf.minehut.gg"
);
toast.success("Copied IP to clipboard");
}}
@@ -105,7 +105,7 @@ export default function FavoritesView() {
}
function convert(value: number) {
- var result: string = "";
+ var result: string = value.toString();
if (value >= 1000000) {
result = Math.floor(value / 1000000) + "m";
} else if (value >= 1000) {
diff --git a/src/components/NewChart.tsx b/src/components/NewChart.tsx
new file mode 100644
index 0000000..b015123
--- /dev/null
+++ b/src/components/NewChart.tsx
@@ -0,0 +1,174 @@
+"use client";
+
+import * as React from "react";
+import { CartesianGrid, Line, LineChart, XAxis, YAxis } from "recharts";
+
+import {
+ Card,
+ CardContent,
+ CardDescription,
+ CardHeader,
+ CardTitle,
+} from "@/components/ui/card";
+import {
+ ChartConfig,
+ ChartContainer,
+ ChartTooltip,
+ ChartTooltipContent,
+} from "@/components/ui/chart";
+import { useEffectOnce } from "@/lib/useEffectOnce";
+import { ServerResponse } from "./ServerView";
+
+const chartConfig = {
+ player_count: {
+ label: "Joins",
+ color: "hsl(var(--chart-1))",
+ },
+ favorites: {
+ label: "Favorites",
+ color: "hsl(var(--chart-3))",
+ },
+} satisfies ChartConfig;
+
+export function NewChart({ server }: { server: string }) {
+ const [activeChart, setActiveChart] =
+ React.useState("player_count");
+
+ const [chartData, setChartData] = React.useState([]);
+ const [joins, setJoins] = React.useState(0);
+ const [favorites, setFavorites] = React.useState(0);
+
+ const allNums = { player_count: joins, favorites };
+ useEffectOnce(() => {
+ fetch("/api/history/getShortTermData", {
+ headers: { "Content-Type": "application/json" },
+ body: JSON.stringify({
+ scopes: ["player_count", "favorites", "time"],
+ server,
+ }),
+ method: "POST",
+ }).then((c) => {
+ c.json().then((b) => {
+ setChartData(b.data);
+ fetch("/api/favorites/getCommunityNum", {
+ headers: { "Content-Type": "application/json" },
+ body: JSON.stringify({ server }),
+ method: "POST",
+ }).then((b) =>
+ b.json().then((f) => {
+ setFavorites(f.result);
+ })
+ );
+ fetch("https://api.minehut.com/server/" + server + "?byName=true").then(
+ (k) => {
+ k.json().then((p: { server: ServerResponse }) => {
+ setJoins(p.server.joins);
+ });
+ }
+ );
+ });
+ });
+ });
+
+ return (
+
+
+
+
+ {chartConfig[activeChart].label} Chart for {server}
+
+ Showing the past 30 entries.
+
+
+ {["player_count", "favorites"].map((key) => {
+ const chart = key as keyof typeof chartConfig;
+ return (
+
+ );
+ })}
+
+
+
+
+
+
+ {
+ const date = new Date(value);
+ return date.toLocaleTimeString("en-US", {
+ timeStyle: "short",
+ });
+ }}
+ />
+ {
+ return (
+ value +
+ (activeChart == "player_count"
+ ? ` plyr${value != 1 ? "s" : ""}.`
+ : ` ${value == 1 ? "favorite" : "favrts."}`)
+ );
+ }}
+ />
+
+ }
+ />
+
+
+
+
+
+ );
+}
+
+function convert(value: number) {
+ var result: string = value.toString();
+ if (value >= 1000000) {
+ result = Math.floor(value / 1000000) + "m";
+ } else if (value >= 1000) {
+ result = Math.floor(value / 1000) + "k";
+ }
+ return result;
+}
diff --git a/src/components/ServerView.tsx b/src/components/ServerView.tsx
index 7e68800..d735da3 100644
--- a/src/components/ServerView.tsx
+++ b/src/components/ServerView.tsx
@@ -54,7 +54,7 @@ export default function ServerView(props: { server: string }) {
useEffect(() => {
setRandomText(getRandomText());
single.init().then(() => {
- fetch("/api/accountLocked/isFavorited", {
+ fetch("/api/favorites/isFavorited", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
@@ -211,7 +211,7 @@ export default function ServerView(props: { server: string }) {