From 9dfb92d087bfcd6bc3bbdd4e74deaf1bc9380c8c Mon Sep 17 00:00:00 2001 From: zkldi <20380519+zkldi@users.noreply.github.com> Date: Thu, 6 Jan 2022 13:14:14 +0000 Subject: [PATCH] Add rating algorithm tooltips --- client/package.json | 2 +- client/pnpm-lock.yaml | 8 ++-- .../components/layout/misc/QuickTooltip.tsx | 18 ++++++-- .../src/components/user/UGPTStatsOverview.tsx | 42 +++++++++++++++++-- 4 files changed, 59 insertions(+), 11 deletions(-) diff --git a/client/package.json b/client/package.json index 9754c9b5b..dda8c6ab5 100644 --- a/client/package.json +++ b/client/package.json @@ -83,7 +83,7 @@ "resolve": "1.12.0", "resolve-url-loader": "3.1.0", "socicon": "3.0.5", - "tachi-common": "0.4.22" + "tachi-common": "0.4.23" }, "devDependencies": { "@types/humanize-duration": "3.25.1", diff --git a/client/pnpm-lock.yaml b/client/pnpm-lock.yaml index 54effd428..657211bc0 100644 --- a/client/pnpm-lock.yaml +++ b/client/pnpm-lock.yaml @@ -85,7 +85,7 @@ specifiers: serve: 11.2.0 socicon: 3.0.5 style-loader: 1.0.0 - tachi-common: 0.4.22 + tachi-common: 0.4.23 terser-webpack-plugin: 1.4.1 ts-pnp: 1.1.4 typescript: 4.3.5 @@ -158,7 +158,7 @@ dependencies: resolve: 1.12.0 resolve-url-loader: 3.1.0 socicon: 3.0.5 - tachi-common: 0.4.22 + tachi-common: 0.4.23 devDependencies: '@types/humanize-duration': 3.25.1 @@ -11277,8 +11277,8 @@ packages: strip-ansi: 6.0.0 dev: true - /tachi-common/0.4.22: - resolution: {integrity: sha512-+3gQSUq3yp3GStTvrUxN+BVl9iGG7Vnqow5sKnV3zuYzjvJuZXy020B9/xqHgRtcy0GUig4IWRqkA7dHfUFI2g==} + /tachi-common/0.4.23: + resolution: {integrity: sha512-MlE2wY9XfNTiZoKJ+7utDdO/ItV3eb8KLEkOPXZMn+sqQbrJd0WSIM1j9vecdYUWG02+3NJf6awmud0Q6upgPA==} dependencies: monk: 7.3.4 transitivePeerDependencies: diff --git a/client/src/components/layout/misc/QuickTooltip.tsx b/client/src/components/layout/misc/QuickTooltip.tsx index a65d91edc..0fe609015 100644 --- a/client/src/components/layout/misc/QuickTooltip.tsx +++ b/client/src/components/layout/misc/QuickTooltip.tsx @@ -1,13 +1,25 @@ import { nanoid } from "nanoid"; -import React from "react"; +import React, { CSSProperties } from "react"; import { OverlayTrigger, Tooltip } from "react-bootstrap"; export default function QuickTooltip({ children, tooltipContent, -}: { tooltipContent: React.ReactChild } & { children: JSX.Element }) { + wide, +}: { + tooltipContent: React.ReactChild; + wide?: boolean; + children: JSX.Element; +}) { return ( - {tooltipContent}}> + + {tooltipContent} + + } + > {children} ); diff --git a/client/src/components/user/UGPTStatsOverview.tsx b/client/src/components/user/UGPTStatsOverview.tsx index 7251c30a4..21f3456f7 100644 --- a/client/src/components/user/UGPTStatsOverview.tsx +++ b/client/src/components/user/UGPTStatsOverview.tsx @@ -1,13 +1,24 @@ import ClassBadge from "components/game/ClassBadge"; +import QuickTooltip from "components/layout/misc/QuickTooltip"; import MiniTable from "components/tables/components/MiniTable"; +import Divider from "components/util/Divider"; +import Icon from "components/util/Icon"; import React from "react"; -import { GetGamePTConfig, IDStrings, ScoreCalculatedDataLookup, UserGameStats } from "tachi-common"; +import { + GetGamePTConfig, + IDStrings, + ScoreCalculatedDataLookup, + UGSRatingsLookup, + UserGameStats, +} from "tachi-common"; import { GameClassSets } from "tachi-common/js/game-classes"; import { FormatGPTRating, UppercaseFirst } from "util/misc"; export default function UGPTRatingsTable({ ugs }: { ugs: UserGameStats }) { const gptConfig = GetGamePTConfig(ugs.game, ugs.playtype); + const ratings = Object.entries(ugs.ratings) as [UGSRatingsLookup[IDStrings], number][]; + return ( <> @@ -32,9 +43,34 @@ export default function UGPTRatingsTable({ ugs }: { ugs: UserGameStats }) { ) )} - {Object.entries(ugs.ratings).map(([k, v]) => ( + {ratings.map(([k, v]) => ( - {UppercaseFirst(k)} + + + {gptConfig.profileRatingAlgDescriptions[k]} + {k in gptConfig.scoreRatingAlgDescriptions && ( + <> + ({UppercaseFirst(k)}:{" "} + {/* @ts-expect-error I know better. */} + {gptConfig.scoreRatingAlgDescriptions[k]}) + + )} + + } + wide + > +
+ {UppercaseFirst(k)} +
+
+ {FormatGPTRating( ugs.game,