From b0b7286dbc88456f955b31d5553e97195e7ee0e4 Mon Sep 17 00:00:00 2001 From: Sammers21 Date: Mon, 22 Apr 2024 18:51:41 +0300 Subject: [PATCH] releasef using arrows for ranks --- .../src/components/DataTable/useColumns.tsx | 428 ++++++++++-------- 1 file changed, 236 insertions(+), 192 deletions(-) diff --git a/frontend/src/components/DataTable/useColumns.tsx b/frontend/src/components/DataTable/useColumns.tsx index 641591f5..5eb67e56 100644 --- a/frontend/src/components/DataTable/useColumns.tsx +++ b/frontend/src/components/DataTable/useColumns.tsx @@ -1,192 +1,236 @@ -import { - getProfileUrl, - getClassNameColor, - getRankDiffColor, - getRealmColor, - getDiffColor, - getDiffCell, - getDetaisImages, - getWinRate, - getWonAndLossColors, - getRatingColor, - getSeasonRankImageFromRating, -} from '@/utils/table'; -import type { IActivityRecord } from '@/types'; -import { nickNameLenOnMobile } from '@/utils/common'; - -const getTableColumns = (activity: string, isMobile: boolean, region: string): any[] => { - const rank = { - field: 'pos', - label: 'RANK', - render: ({ record }: { record: IActivityRecord }) => { - const pos = record?.character?.pos || record?.pos; - const rankDiff = record?.diff?.rank_diff; - return ( -
- {isMobile && ({`#${pos}`})} - {!isMobile && ({`#${pos}`})} - {!isMobile && Number.isInteger(rankDiff) && ( - - {getDiffCell(rankDiff)} - - )} -
- ); - }, - }; - - const details = { - field: 'details', - label: isMobile ? 'DTLS' : 'DETAILS', - render: ({ record }: { record: IActivityRecord }) => { - const wowClass = record?.character?.class || record?.class; - const wowSpec = record?.character?.full_spec || record?.full_spec; - const wowRace = record?.character?.race || record?.race; - const wowGender = record?.character?.gender || record?.gender; - - const icons = getDetaisImages({ wowClass, wowSpec, wowRace, wowGender }); - - return ( -
- {window.innerWidth > 600 && ( - race icon - )} - {window.innerWidth > 700 && ( - class icon - )} - - spec icon -
- ); - }, - }; - - const name = { - field: 'name', - label: 'NAME', - render: ({ record }: { record: IActivityRecord }) => { - const wowClass = record?.character?.class || record?.class; - const url = getProfileUrl(record, region); - - let name = record?.character?.name || record?.name; - if (isMobile) { - const max = nickNameLenOnMobile(); - name = `${name.substring(0, max)}`; - } - - return ( - - {name} - - ); - }, - }; - - const realm = { - field: 'realm', - label: 'REALM', - render: ({ record }: { record: IActivityRecord }) => { - const fraction = record?.character?.fraction || record?.fraction; - const realm = record?.character?.realm || record?.realm; - - return ( - - {realm} - - ); - }, - }; - - const wonLost = { - field: 'stats', - label: isMobile ? 'W/L' : 'WON / LOST', - render: ({ record }: { record: IActivityRecord }) => { - const winRate = getWinRate(record.wins, record.losses); - - const won = record?.diff?.won ?? record?.wins; - const loss = record?.diff?.lost ?? record?.losses; - const { wonColor, lossColor } = getWonAndLossColors(won, loss); - - return ( -
- {`${won} `} - {` / `} - - {loss} - - - {winRate && ( - {winRate} - )} -
- ); - }, - }; - - const rating = { - field: 'rating', - label: 'RATING', - render: ({ record }: { record: IActivityRecord }) => { - const rating = record?.character?.rating ?? record?.rating; - const ratingColor = getRatingColor(record?.character?.in_cutoff ?? record?.in_cutoff); - const ratingDiff = record?.diff?.rating_diff; - const ratingImg = rating - return ( -
- {!isMobile && ratingImg} - - {rating} - - {Number.isInteger(ratingDiff) && ( - - {getDiffCell(ratingDiff)} - - )} -
- ); - }, - }; - - const colums = isMobile - ? [rank, details, name, wonLost, rating] - : [rank, details, name, realm, wonLost, rating]; - - const lastSeenColumn = { - field: 'lastSeen', - label: isMobile ? 'LS' : 'LAST SEEN', - render: ({ record }: { record: IActivityRecord }) => { - if (!record?.diff?.last_seen) return <>; - const split = record.diff.last_seen.split(' '); - const content = isMobile ? `${split[0]} ${split[1].charAt(0)}.` : record.diff.last_seen; - - return {content}; - }, - }; - - return activity === 'activity' ? [...colums, lastSeenColumn] : colums; -}; - -export default getTableColumns; +import { + getProfileUrl, + getClassNameColor, + getRankDiffColor, + getRealmColor, + getDiffColor, + getDiffCell, + getDetaisImages, + getWinRate, + getWonAndLossColors, + getRatingColor, + getSeasonRankImageFromRating, +} from "@/utils/table"; +import type { IActivityRecord } from "@/types"; +import { nickNameLenOnMobile } from "@/utils/common"; +import ArrowUpwardIcon from "@mui/icons-material/ArrowUpward"; +import ArrowDownwardIcon from "@mui/icons-material/ArrowDownward"; +const getTableColumns = ( + activity: string, + isMobile: boolean, + region: string +): any[] => { + const rank = { + field: "pos", + label: "RANK", + render: ({ record }: { record: IActivityRecord }) => { + const pos = record?.character?.pos || record?.pos; + var rankDiff = record?.diff?.rank_diff; + var arrow + if (rankDiff < 0) { + arrow = + } else { + arrow = + } + var unsignRankDiff = Math.abs(rankDiff) + return ( +
+ {isMobile && ( + {`#${pos}`} + )} + {!isMobile && ( + {`#${pos}`} + )} + {!isMobile && Number.isInteger(rankDiff) && ( + + {arrow} + {/* {getDiffCell(rankDiff)} */} + {unsignRankDiff} + + )} +
+ ); + }, + }; + + const details = { + field: "details", + label: isMobile ? "DTLS" : "DETAILS", + render: ({ record }: { record: IActivityRecord }) => { + const wowClass = record?.character?.class || record?.class; + const wowSpec = record?.character?.full_spec || record?.full_spec; + const wowRace = record?.character?.race || record?.race; + const wowGender = record?.character?.gender || record?.gender; + + const icons = getDetaisImages({ wowClass, wowSpec, wowRace, wowGender }); + + return ( +
+ {window.innerWidth > 600 && ( + race icon + )} + {window.innerWidth > 700 && ( + class icon + )} + + spec icon +
+ ); + }, + }; + + const name = { + field: "name", + label: "NAME", + render: ({ record }: { record: IActivityRecord }) => { + const wowClass = record?.character?.class || record?.class; + const url = getProfileUrl(record, region); + + let name = record?.character?.name || record?.name; + if (isMobile) { + const max = nickNameLenOnMobile(); + name = `${name.substring(0, max)}`; + } + + return ( + + {name} + + ); + }, + }; + + const realm = { + field: "realm", + label: "REALM", + render: ({ record }: { record: IActivityRecord }) => { + const fraction = record?.character?.fraction || record?.fraction; + const realm = record?.character?.realm || record?.realm; + + return ( + + {realm} + + ); + }, + }; + + const wonLost = { + field: "stats", + label: isMobile ? "W/L" : "WON / LOST", + render: ({ record }: { record: IActivityRecord }) => { + const winRate = getWinRate(record.wins, record.losses); + + const won = record?.diff?.won ?? record?.wins; + const loss = record?.diff?.lost ?? record?.losses; + const { wonColor, lossColor } = getWonAndLossColors(won, loss); + + return ( +
+ {`${won} `} + {` / `} + + {loss} + + + {winRate && ( + + {winRate} + + )} +
+ ); + }, + }; + + const rating = { + field: "rating", + label: "RATING", + render: ({ record }: { record: IActivityRecord }) => { + const rating = record?.character?.rating ?? record?.rating; + const ratingColor = getRatingColor( + record?.character?.in_cutoff ?? record?.in_cutoff + ); + const ratingDiff = record?.diff?.rating_diff; + const ratingImg = ( + rating + ); + return ( +
+ {!isMobile && ratingImg} + + {rating} + + {Number.isInteger(ratingDiff) && ( + + {getDiffCell(ratingDiff)} + + )} +
+ ); + }, + }; + + const colums = isMobile + ? [rank, details, name, wonLost, rating] + : [rank, details, name, realm, wonLost, rating]; + + const lastSeenColumn = { + field: "lastSeen", + label: isMobile ? "LS" : "LAST SEEN", + render: ({ record }: { record: IActivityRecord }) => { + if (!record?.diff?.last_seen) return <>; + const split = record.diff.last_seen.split(" "); + const content = isMobile + ? `${split[0]} ${split[1].charAt(0)}.` + : record.diff.last_seen; + + return {content}; + }, + }; + + return activity === "activity" ? [...colums, lastSeenColumn] : colums; +}; + +export default getTableColumns;