Skip to content

Commit

Permalink
releasef add spot counting
Browse files Browse the repository at this point in the history
  • Loading branch information
Sammers21 committed Apr 20, 2024
1 parent 8aa04fd commit 997336d
Show file tree
Hide file tree
Showing 2 changed files with 160 additions and 16 deletions.
91 changes: 75 additions & 16 deletions frontend/src/components/TableFilter/CutOffRating.tsx
Original file line number Diff line number Diff line change
@@ -1,40 +1,99 @@
import { getRatingColor, getSeasonRankImageFromRating } from '@/utils/table';
import { getRatingColor, getSeasonRankImageFromRating } from "@/utils/table";
import { useSearchParams } from "react-router-dom";
import { getFromSearchParams } from "../DataTable";
import { useEffect, useState } from "react";
import {
SEARCH_PARAM_TO_FULL_SPEC,
SEARCH_PARAM_TO_SPEC,
} from "@/constants/filterSchema";

interface IProps {
bracket: string;
statistic: any;
}

const ratingRewardMap = {
'3v3': 'ARENA_3v3',
rbg: 'BATTLEGROUNDS/alliance',
"3v3": "ARENA_3v3",
rbg: "BATTLEGROUNDS/alliance",
};

const CutOffText = ({ bracket, statistic }: IProps) => {
const [searchParams] = useSearchParams();
const [selectedSpecs, setSelectedSpecs] = useState(
getFromSearchParams(searchParams, "specs")
);
const rankOneTitleColor = getRatingColor(true);

const rewards = statistic?.cutoffs?.rewards;
const spotWithNoAlts = statistic?.cutoffs?.spotWithNoAlts
const cutOffRating = rewards?.[ratingRewardMap[bracket]];
const spotsWithNoAlts = spotWithNoAlts?.[ratingRewardMap[bracket]];
const spotWithNoAlts = statistic?.cutoffs?.spotWithNoAlts;

return (
<span className="text-xs sm:text-lg font-light" style={{ color: rankOneTitleColor }}>
{bracket === '3v3'
? `Verdant Gladiator: Dragonflight Season 3 - Rating: ${cutOffRating}. Spots: ${spotsWithNoAlts}`
: `Hero of the Alliance & Horde: Verdant - Rating: ${cutOffRating}. Spots: ${spotsWithNoAlts}`}
</span>
);
useEffect(() => {
setSelectedSpecs(getFromSearchParams(searchParams, "specs"));
}, [searchParams]);

if (bracket === "rbg" || bracket === "3v3") {
const cutOffRating = rewards?.[ratingRewardMap[bracket]];
const spotsWithNoAlts = spotWithNoAlts?.[ratingRewardMap[bracket]];
return (
<span
className="text-xs sm:text-lg font-light"
style={{ color: rankOneTitleColor }}
>
{bracket === "3v3"
? `Verdant Gladiator - Rating: ${cutOffRating}. Spots: ${spotsWithNoAlts}`
: `Hero: Verdant - Rating: ${cutOffRating}. Spots: ${spotsWithNoAlts}`}
</span>
);
} else if (bracket === "shuffle" && selectedSpecs.length == 1) {
const specName = SEARCH_PARAM_TO_FULL_SPEC[selectedSpecs[0]];
const key = `SHUFFLE/${SEARCH_PARAM_TO_SPEC[selectedSpecs[0]]}`;
const cutOffRating = rewards?.[key];
const spotsWithNoAlts = spotWithNoAlts?.[key];
return (
<span
className="text-xs sm:text-lg font-light"
style={{ color: rankOneTitleColor }}
>
{`Verdant Legend for ${specName} - Rating: ${cutOffRating}. Spots: ${spotsWithNoAlts}`}
</span>
);
} else if (bracket === "shuffle" && selectedSpecs.length == 0) {
return (
<span
className="text-xs sm:text-lg font-light"
style={{ color: rankOneTitleColor }}
>
Select the spec filter to see the cutoff rating
</span>
);
} else if (bracket === "shuffle" && selectedSpecs.length > 1) {
return (
<span
className="text-xs sm:text-lg font-light"
style={{ color: rankOneTitleColor }}
>
Select only one spec to see the cutoff rating
</span>
);
} else {
return <div></div>;
}
};

const CutOffRating = ({ bracket, statistic }: IProps) => {
if (!statistic?.cutoffs?.rewards?.ARENA_3v3 || !['rbg', '3v3'].includes(bracket)) {
if (
!statistic?.cutoffs?.rewards?.ARENA_3v3 ||
!["shuffle", "rbg", "3v3"].includes(bracket)
) {
return <div></div>;
}

return (
<div className="flex items-center mr-2">
<img className="w-7 h-7 mr-2" src={getSeasonRankImageFromRating(0, true)} alt="Season Rank" />
<img
className="w-7 h-7 mr-2"
src={getSeasonRankImageFromRating(0, true)}
alt="Season Rank"
/>
<CutOffText statistic={statistic} bracket={bracket} />
</div>
);
Expand Down
85 changes: 85 additions & 0 deletions frontend/src/constants/filterSchema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,91 @@ export const CRESTS_AND_SPECS = {
13: ['devastationevoker', 'preservationevoker', 'augmentationevoker'],
};

export const SEARCH_PARAM_TO_SPEC = {
'afflictionwarlock': 'affliction',
'demonologywarlock': 'demonology',
'destructionwarlock': 'destruction',
'arcanemage': 'arcane',
'firemage': 'fire',
'frostmage': 'frostm',
'armswarrior': 'arms',
'furywarrior': 'fury',
'protectionwarrior': 'protection',
'assassinationrogue': 'assassination',
'outlawrogue': 'outlaw',
'subtletyrogue': 'subtlety',
'balancedruid': 'balance',
'feraldruid': 'feral',
'guardiandruid': 'guardian',
'restorationdruid': 'restodruid',
'beastmasteryhunter': 'beastmastery',
'marksmanshiphunter': 'marksmanship',
'survivalhunter': 'survival',
'disciplinepriest': 'discipline',
'holypriest': 'holypri',
'shadowpriest': 'shadow',
'blooddeathknight': 'blood',
'frostdeathknight': 'frostd',
'unholydeathknight': 'unholy',
'elementalshaman': 'elemental',
'enhancementshaman': 'enhancement',
'restorationshaman': 'restosham',
'holypaladin': 'holypala',
'protectionpaladin': 'protection',
'retributionpaladin': 'retribution',
'brewmastermonk': 'brewmaster',
'windwalkermonk': 'windwalker',
'mistweavermonk': 'mistweaver',
'havocdemonhunter': 'havoc',
'vengeancedemonhunter': 'vengeance',
'devastationevoker': 'devastation',
'preservationevoker': 'preservation',
'augmentationevoker': 'augmentation',
};

export const SEARCH_PARAM_TO_FULL_SPEC = {
'afflictionwarlock': 'Affliction Warlock',
'demonologywarlock': 'Demonology Warlock',
'destructionwarlock': 'Destruction Warlock',
'arcanemage': 'Arcane Mage',
'firemage': 'Fire Mage',
'frostmage': 'Frost Mage',
'armswarrior': 'Arms Warrior',
'furywarrior': 'Fury Warrior',
'protectionwarrior': 'Protection Warrior',
'assassinationrogue': 'Assassination Rogue',
'outlawrogue': 'Outlaw Rogue',
'subtletyrogue': 'Subtlety Rogue',
'balancedruid': 'Balance Druid',
'feraldruid': 'Feral Druid',
'guardiandruid': 'Guardian Druid',
'restorationdruid': 'Restoration Druid',
'beastmasteryhunter': 'Beast Mastery Hunter',
'marksmanshiphunter': 'Marksmanship Hunter',
'survivalhunter': 'Survival Hunter',
'disciplinepriest': 'Discipline Priest',
'holypriest': 'Holy Priest',
'shadowpriest': 'Shadow Priest',
'blooddeathknight': 'Blood Death Knight',
'frostdeathknight': 'Frost Death Knight',
'unholydeathknight': 'Unholy Death Knight',
'elementalshaman': 'Elemental Shaman',
'enhancementshaman': 'Enhancement Shaman',
'restorationshaman': 'Restoration Shaman',
'holypaladin': 'Holy Paladin',
'protectionpaladin': 'Protection Paladin',
'retributionpaladin': 'Retribution Paladin',
'brewmastermonk': 'Brewmaster Monk',
'windwalkermonk': 'Windwalker Monk',
'mistweavermonk': 'Mistweaver Monk',
'havocdemonhunter': 'Havoc Demon Hunter',
'vengeancedemonhunter': 'Vengeance Demon Hunter',
'devastationevoker': 'Devastation Evoker',
'preservationevoker': 'Preservation Evoker',
'augmentationevoker': 'Augmentation Evoker',
};


export const CLASS_AND_SPECS = {
Warrior: ['Arms', 'Fury', 'Protection'],
Paladin: ['Holy', 'Protection', 'Retribution'],
Expand Down

0 comments on commit 997336d

Please sign in to comment.