migrate some values to ssr data tracking so we don't need to rely on BL as much
Some checks failed
Deploy Backend / docker (ubuntu-latest) (push) Successful in 49s
Deploy Website / docker (ubuntu-latest) (push) Has been cancelled

This commit is contained in:
Lee
2024-10-26 18:41:51 +01:00
parent 5ff0d11f5a
commit 9626931b91
8 changed files with 196 additions and 68 deletions

View File

@ -14,8 +14,7 @@ type ScoreAccuracyProps = ScoreBadgeProps & {
};
export function ScoreAccuracyBadge({ score, leaderboard }: ScoreAccuracyProps) {
const scoreImprovement = score.additionalData?.scoreImprovement;
const previousAccuracy = scoreImprovement ? score.accuracy - scoreImprovement.accuracy : undefined;
const previousScore = score.previousScore;
const fcAccuracy = score.additionalData?.fcAccuracy;
const scoreBadge = getScoreBadgeFromAccuracy(score.accuracy);
@ -57,9 +56,13 @@ export function ScoreAccuracyBadge({ score, leaderboard }: ScoreAccuracyProps) {
{modCount > 0 && <ScoreModifiers type="simple" limit={1} score={score} />}
</p>
</Tooltip>
{scoreImprovement && previousAccuracy && (
<Tooltip display={`Previous Accuracy: ${previousAccuracy.toFixed(2)}%`}>
<Change className="text-xs" change={scoreImprovement.accuracy} formatValue={num => `${num.toFixed(2)}%`} />
{previousScore && previousScore.change && (
<Tooltip display={`Previous Accuracy: ${previousScore.accuracy.toFixed(2)}%`}>
<Change
className="text-xs"
change={previousScore.change.accuracy}
formatValue={num => `${num.toFixed(2)}%`}
/>
</Tooltip>
)}
</div>

View File

@ -4,7 +4,6 @@ import Tooltip from "@/components/tooltip";
import { ensurePositiveNumber, formatPp } from "@ssr/common/utils/number-utils";
import { scoresaberService } from "@ssr/common/service/impl/scoresaber";
import { Change } from "@/common/change";
import { Warning } from "@/components/warning";
type ScorePpProps = ScoreBadgeProps & {
/**
@ -14,8 +13,7 @@ type ScorePpProps = ScoreBadgeProps & {
};
export function ScorePpBadge({ score, leaderboard }: ScorePpProps) {
const scoreImprovement = score.additionalData?.scoreImprovement;
const previousAccuracy = scoreImprovement ? score.accuracy - scoreImprovement?.accuracy : undefined;
const previousScore = score.previousScore;
const fcAccuracy = score.additionalData?.fcAccuracy;
const pp = score.pp;
const weight = score.weight;
@ -28,39 +26,29 @@ export function ScorePpBadge({ score, leaderboard }: ScorePpProps) {
return (
<>
<Tooltip
display={
<div className="flex flex-col gap-2">
<div>
<p className="font-semibold">Performance Points</p>
<p>Raw: {formatPp(pp)}pp</p>
<p>
Weighted: {formatPp(weightedPp)}pp ({(100 * weight).toFixed(2)}%)
</p>
{fcPp && <p>Full Combo: {fcPp}pp</p>}
</div>
{previousAccuracy && (
<Warning>
<p className="text-red-700">
The previous pp may not be 100% accurate due to ScoreSaber API limitations.
<div className="flex flex-col items-center justify-center cursor-default">
<Tooltip
display={
<div className="flex flex-col gap-2">
<div>
<p className="font-semibold">Performance Points</p>
<p>Raw: {formatPp(pp)}pp</p>
<p>
Weighted: {formatPp(weightedPp)}pp ({(100 * weight).toFixed(2)}%)
</p>
</Warning>
)}
</div>
}
>
<div className="flex flex-col items-center justify-center cursor-default">
{fcPp && <p>Full Combo: {fcPp}pp</p>}
</div>
</div>
}
>
<p>{formatPp(pp)}pp</p>
{previousAccuracy && (
<Change
className="text-xs"
change={ensurePositiveNumber(pp - scoresaberService.getPp(leaderboard.stars, previousAccuracy))}
isPp
/>
)}
</div>
</Tooltip>
</Tooltip>
{previousScore && previousScore.change && (
<Tooltip display={<p>Previous PP: {formatPp(previousScore.pp)}pp</p>}>
<Change className="text-xs" change={ensurePositiveNumber(previousScore.change.pp)} isPp />
</Tooltip>
)}
</div>
</>
);
}

View File

@ -1,14 +1,19 @@
import { ScoreBadgeProps } from "@/components/score/badges/badge-props";
import { formatNumberWithCommas } from "@ssr/common/utils/number-utils";
import { Change } from "@/common/change";
import Tooltip from "@/components/tooltip";
export function ScoreScoreBadge({ score }: ScoreBadgeProps) {
const scoreImprovement = score.additionalData?.scoreImprovement;
const previousScore = score.previousScore;
return (
<div className="flex flex-col items-center justify-center">
<p>{formatNumberWithCommas(Number(score.score.toFixed(0)))}</p>
{scoreImprovement && <Change className="text-xs" change={scoreImprovement.score} />}
{previousScore && previousScore.change && (
<Tooltip display={<p>Previous Score: {previousScore.score}</p>}>
<Change className="text-xs" change={previousScore.change.score} />
</Tooltip>
)}
</div>
);
}