import { Box, Button, FormLabel, Select } from "@chakra-ui/react"; import { t, Trans } from "@lingui/macro"; import { useLingui } from "@lingui/react"; import SubText from "components/common/SubText"; import WeaponImage from "components/common/WeaponImage"; import WeaponSelector from "components/common/WeaponSelector"; import { useMyTheme } from "hooks/common"; import { salmonRunStages } from "lib/lists/stages"; import { GetAllSalmonRunRotationsData } from "prisma/queries/getAllSalmonRunRotations"; import { useState } from "react"; import useSWR from "swr"; export const randomToNaturalName = { RANDOM: t`Random`, RANDOM_GRIZZCO: t`Random (Grizzco)`, } as const; interface Props { rotationId?: number; setRotationId: (id: number | null) => void; } const RotationSelector: React.FC = ({ rotationId, setRotationId }) => { const { gray } = useMyTheme(); const { i18n } = useLingui(); const { data } = useSWR("/api/sr/rotations"); const [stage, setStage] = useState("Spawning Grounds"); const [weapons, setWeapons] = useState([]); const filteredRotations = getFilteredRotations(); if (rotationId && data) { const rotation = data.find((rotation) => rotation.id === rotationId)!; return ( Selected rotation #{rotation.id} {i18n._(rotation.stage)} {new Date(rotation.startTime).toLocaleDateString()} {rotation.weapons.map((wpn, i) => ( ))} ); } return ( <> Stage Weapons {filteredRotations && filteredRotations.length > 0 && ( Rotation )} {filteredRotations && filteredRotations.length === 0 && ( No rotations matching with this criteria. Please choose different weapons. )} ); function getFilteredRotations() { if (!data) return null; if (!stage || weapons.length === 0) return null; return data.filter((rotation) => { return ( rotation.stage === stage && weapons.every((wpn) => rotation.weapons.includes(wpn)) ); }); } }; export default RotationSelector;