mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-05-23 03:46:28 -05:00
* side layout initial * add elements to side nav * side buttons links * remove clog * calendar page initial * position sticky working * x trends page initial * new table * same mode selector * mobile friendly table * no underline for nav links * xsearch * x trends page outlined * sr initial * relocate calendar components * calendar fix flex * topnav fancier look * layout looking good edition * relocate xtrends * xtrends remove linecharts * x trends new * calender page new * delete headbanner, new login * remove calendar stuff from api * rename stuff in utils * fix user item margin * new home page initial * remove page concept * no pointer xtrends * remove xrank from app * xtrends service * move fa from app * move plus * maps tweaks * new table for plus history * navigational sidebar flex tweaks * builds page * analyzer * user page * free agents * plans * remove mx * tweaks * change layout to grid * home page finalized * mobile nav * restrict main content width * tweaks style * language switcher * container in css * sticky nav * use duplicate icons for now * change mapsketch width to old * chara tour vid * borzoic icons
62 lines
1.9 KiB
TypeScript
62 lines
1.9 KiB
TypeScript
import { RankedMode } from ".prisma/client";
|
|
import { Box, Flex } from "@chakra-ui/react";
|
|
import ModeSelector from "components/common/ModeSelector";
|
|
import MyHead from "components/common/MyHead";
|
|
import TrendTier from "components/xtrends/TrendTier";
|
|
import { useMyTheme } from "hooks/common";
|
|
import { GetStaticProps } from "next";
|
|
import { useState } from "react";
|
|
import xRankService, { XTrends } from "services/xtrends";
|
|
import { xTrendsTiers } from "utils/constants";
|
|
|
|
export interface XTrendsPageProps {
|
|
trends: XTrends;
|
|
}
|
|
|
|
const XTrendsPage = ({ trends }: XTrendsPageProps) => {
|
|
const { gray } = useMyTheme();
|
|
const [mode, setMode] = useState<RankedMode>("SZ");
|
|
|
|
return (
|
|
<>
|
|
<MyHead title="Top 500 Trends" />
|
|
<Flex flexDir={["column", null, "row"]} justify="space-between">
|
|
<ModeSelector
|
|
mode={mode}
|
|
setMode={setMode}
|
|
mx={["auto", null, "0"]}
|
|
mb={[4, null, 0]}
|
|
/>
|
|
</Flex>
|
|
{xTrendsTiers.map((tier, i) => (
|
|
<TrendTier
|
|
key={tier.label}
|
|
tier={tier}
|
|
data={trends[mode].filter((weapon, _, arr) => {
|
|
const targetCount = 1500 * (tier.criteria / 100);
|
|
const previousTargetCount =
|
|
i === 0 ? Infinity : 1500 * (xTrendsTiers[i - 1].criteria / 100);
|
|
|
|
return (
|
|
weapon.count >= targetCount && weapon.count < previousTargetCount
|
|
);
|
|
})}
|
|
/>
|
|
))}
|
|
<Box color={gray} fontSize="sm">
|
|
Weapons are ordered based on their appearance in the Top 500 of X Rank
|
|
in the last three months. Average X Power per weapon is also shown.
|
|
Progress icon describes the change with the latest month.
|
|
</Box>
|
|
</>
|
|
);
|
|
};
|
|
|
|
export default XTrendsPage;
|
|
|
|
export const getStaticProps: GetStaticProps<XTrendsPageProps> = async () => {
|
|
const trends = await xRankService.getXTrends();
|
|
|
|
return { props: { trends } };
|
|
};
|