fix pp value on chart?
This commit is contained in:
parent
a15f8f46f9
commit
ac4298c765
9
projects/common/src/utils/number-utils.ts
Normal file
9
projects/common/src/utils/number-utils.ts
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
/**
|
||||||
|
* Checks if a number is a whole number
|
||||||
|
*
|
||||||
|
* @param number the number to check
|
||||||
|
* @returns whether the number is a whole number
|
||||||
|
*/
|
||||||
|
export function isWholeNumber(number: number) {
|
||||||
|
return number % 1 === 0;
|
||||||
|
}
|
@ -46,7 +46,7 @@ export type DatasetConfig = {
|
|||||||
hideOnMobile?: boolean;
|
hideOnMobile?: boolean;
|
||||||
displayName: string;
|
displayName: string;
|
||||||
position: AxisPosition;
|
position: AxisPosition;
|
||||||
precision?: number; // Added precision option here
|
valueFormatter?: (value: number) => string; // Added precision option here
|
||||||
};
|
};
|
||||||
labelFormatter: (value: number) => string;
|
labelFormatter: (value: number) => string;
|
||||||
};
|
};
|
||||||
@ -63,7 +63,7 @@ const generateAxis = (
|
|||||||
display: boolean,
|
display: boolean,
|
||||||
position: AxisPosition,
|
position: AxisPosition,
|
||||||
displayName: string,
|
displayName: string,
|
||||||
precision: number | undefined // Adding precision parameter
|
valueFormatter?: (value: number) => string
|
||||||
): Axis => ({
|
): Axis => ({
|
||||||
id,
|
id,
|
||||||
position,
|
position,
|
||||||
@ -74,7 +74,7 @@ const generateAxis = (
|
|||||||
stepSize: 10,
|
stepSize: 10,
|
||||||
callback: (value: number) => {
|
callback: (value: number) => {
|
||||||
// Apply precision if specified, otherwise default to no decimal places
|
// Apply precision if specified, otherwise default to no decimal places
|
||||||
return precision !== undefined ? value.toFixed(precision) : value.toString();
|
return valueFormatter !== undefined ? valueFormatter(value) : value.toString();
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
reverse,
|
reverse,
|
||||||
@ -127,7 +127,7 @@ export default function GenericChart({ labels, datasetConfig, histories }: Chart
|
|||||||
isMobile && config.axisConfig.hideOnMobile ? false : config.axisConfig.display,
|
isMobile && config.axisConfig.hideOnMobile ? false : config.axisConfig.display,
|
||||||
config.axisConfig.position,
|
config.axisConfig.position,
|
||||||
config.axisConfig.displayName,
|
config.axisConfig.displayName,
|
||||||
config.axisConfig.precision // Pass precision from config to generateAxis
|
config.axisConfig.valueFormatter
|
||||||
);
|
);
|
||||||
|
|
||||||
return generateDataset(config.title, historyArray, config.color, config.axisId);
|
return generateDataset(config.title, historyArray, config.color, config.axisId);
|
||||||
|
@ -5,6 +5,7 @@ import React from "react";
|
|||||||
import { DatasetConfig } from "@/components/chart/generic-chart";
|
import { DatasetConfig } from "@/components/chart/generic-chart";
|
||||||
import GenericPlayerChart from "@/components/player/chart/generic-player-chart";
|
import GenericPlayerChart from "@/components/player/chart/generic-player-chart";
|
||||||
import ScoreSaberPlayer from "@ssr/common/types/player/impl/scoresaber-player";
|
import ScoreSaberPlayer from "@ssr/common/types/player/impl/scoresaber-player";
|
||||||
|
import { isWholeNumber } from "@ssr/common/utils/number-utils";
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
player: ScoreSaberPlayer;
|
player: ScoreSaberPlayer;
|
||||||
@ -49,7 +50,12 @@ const datasetConfig: DatasetConfig[] = [
|
|||||||
hideOnMobile: true,
|
hideOnMobile: true,
|
||||||
displayName: "PP",
|
displayName: "PP",
|
||||||
position: "right",
|
position: "right",
|
||||||
precision: 1,
|
valueFormatter: value => {
|
||||||
|
if (isWholeNumber(value)) {
|
||||||
|
return value.toString();
|
||||||
|
}
|
||||||
|
return value.toFixed(1);
|
||||||
|
},
|
||||||
},
|
},
|
||||||
labelFormatter: (value: number) => `PP ${formatNumberWithCommas(value)}pp`,
|
labelFormatter: (value: number) => `PP ${formatNumberWithCommas(value)}pp`,
|
||||||
},
|
},
|
||||||
|
Reference in New Issue
Block a user