aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPinapelz <yukais@pinapelz.com>2025-07-06 15:02:14 -0700
committerPinapelz <yukais@pinapelz.com>2025-07-06 15:02:14 -0700
commitdf79d68cb3cbec15e985fed8c0cabc484ef55e35 (patch)
tree62c970857c24ee8f6ddf577ed2a03e82449ce01a
parentb5c0c0a991de459a6744d2475c735b0327a10f4d (diff)
move filter option configuration to constants.ts
-rw-r--r--frontend/src/pages/Score.tsx50
-rw-r--r--frontend/src/types/constants.ts17
2 files changed, 37 insertions, 30 deletions
diff --git a/frontend/src/pages/Score.tsx b/frontend/src/pages/Score.tsx
index 2bf1a2b..e32f001 100644
--- a/frontend/src/pages/Score.tsx
+++ b/frontend/src/pages/Score.tsx
@@ -9,6 +9,8 @@ import DancerushScoreDisplay from "../components/displays/DancerushScoreDisplay"
type SortField = string;
type SortDirection = "asc" | "desc";
+import { getFilterOptions } from "../types/constants";
+
const Score = () => {
const { user, isLoading, logout } = useAuth();
const navigate = useNavigate();
@@ -36,33 +38,24 @@ const Score = () => {
};
const renderRequestFilterMenu = () => {
- if (gameName === "dancerush") {
- const filterOptions = [
- { value: "timestamp", label: "Recent" },
- { value: "score", label: "Score" },
- { value: "lamp", label: "Rank" },
- { value: "lamo_diff", label: "Difficulty" },
- ];
-
- return (
- <div className="flex items-center space-x-2 bg-slate-900/50 backdrop-blur-sm rounded-xl p-1 border border-slate-800/50">
- {filterOptions.map((option) => (
- <button
- key={option.value}
- onClick={() => setRequestOrder(option.value)}
- className={`px-4 py-2 rounded-lg text-sm font-medium transition-all duration-200 ${
- requestOrder === option.value
- ? "bg-violet-600 text-white shadow-lg shadow-violet-500/25"
- : "text-slate-300 hover:text-white hover:bg-slate-800/50"
- }`}
- >
- {option.label}
- </button>
- ))}
- </div>
- );
- }
- return null;
+ const filterOptions = getFilterOptions(gameName);
+ return (
+ <div className="flex items-center space-x-2 bg-slate-900/50 backdrop-blur-sm rounded-xl p-1 border border-slate-800/50">
+ {filterOptions.map((option) => (
+ <button
+ key={option.value}
+ onClick={() => setRequestOrder(option.value)}
+ className={`px-4 py-2 rounded-lg text-sm font-medium transition-all duration-200 ${
+ requestOrder === option.value
+ ? "bg-violet-600 text-white shadow-lg shadow-violet-500/25"
+ : "text-slate-300 hover:text-white hover:bg-slate-800/50"
+ }`}
+ >
+ {option.label}
+ </button>
+ ))}
+ </div>
+ );
};
// eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -167,9 +160,6 @@ const Score = () => {
{/* Filter Menu */}
<div className="flex items-center justify-between mb-6">
<div className="flex items-center space-x-4">
- <span className="text-slate-300 text-sm font-medium">
- Sort by:
- </span>
{renderRequestFilterMenu()}
</div>
</div>
diff --git a/frontend/src/types/constants.ts b/frontend/src/types/constants.ts
index 3f2c97b..1e44b21 100644
--- a/frontend/src/types/constants.ts
+++ b/frontend/src/types/constants.ts
@@ -3,3 +3,20 @@ export const EamuseImportInfo: Record<string, { scorePage: string }> = {
scorePage: "https://p.eagate.573.jp/game/dan/1st/playdata/entrance.html#music_data",
},
};
+
+export function getFilterOptions(game: string): { value: string; label: string }[] {
+ switch (game) {
+ case "dancerush":
+ return [
+ { value: "timestamp", label: "Recent" },
+ { value: "score", label: "Score" },
+ { value: "lamp", label: "Rank" },
+ { value: "lamp_diff", label: "Difficulty"}
+ ];
+ default:
+ return [
+ { value: "timestamp", label: "Recent" },
+ { value: "score", label: "Score" },
+ ];
+ }
+}
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage