mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2026-04-17 23:08:36 +02:00
UI: Add option to set fractional digits (#2419)
This commit is contained in:
@@ -4,10 +4,16 @@ import { Settings } from "../../Settings/Settings";
|
|||||||
import { OptionSwitch } from "../../ui/React/OptionSwitch";
|
import { OptionSwitch } from "../../ui/React/OptionSwitch";
|
||||||
import { GameOptionsPage } from "./GameOptionsPage";
|
import { GameOptionsPage } from "./GameOptionsPage";
|
||||||
import { FormatsNeedToChange } from "../../ui/formatNumber";
|
import { FormatsNeedToChange } from "../../ui/formatNumber";
|
||||||
|
import { OptionsSlider } from "./OptionsSlider";
|
||||||
|
|
||||||
export const NumericDisplayPage = (): React.ReactElement => {
|
export const NumericDisplayPage = (): React.ReactElement => {
|
||||||
const [locale, setLocale] = useState(Settings.Locale);
|
const [locale, setLocale] = useState(Settings.Locale);
|
||||||
|
|
||||||
|
function handleFractionalDigitChange(_event: Event | React.SyntheticEvent, newValue: number | number[]): void {
|
||||||
|
Settings.fractionalDigits = newValue as number;
|
||||||
|
FormatsNeedToChange.emit();
|
||||||
|
}
|
||||||
|
|
||||||
function handleLocaleChange(event: SelectChangeEvent): void {
|
function handleLocaleChange(event: SelectChangeEvent): void {
|
||||||
setLocale(event.target.value);
|
setLocale(event.target.value);
|
||||||
Settings.Locale = event.target.value;
|
Settings.Locale = event.target.value;
|
||||||
@@ -52,6 +58,15 @@ export const NumericDisplayPage = (): React.ReactElement => {
|
|||||||
text="Hide thousands separator"
|
text="Hide thousands separator"
|
||||||
tooltip={<>If this is set, thousands separators will not be displayed.</>}
|
tooltip={<>If this is set, thousands separators will not be displayed.</>}
|
||||||
/>
|
/>
|
||||||
|
<OptionsSlider
|
||||||
|
label="Fractional Digits"
|
||||||
|
initialValue={Settings.fractionalDigits}
|
||||||
|
callback={handleFractionalDigitChange}
|
||||||
|
step={1}
|
||||||
|
min={0}
|
||||||
|
max={5}
|
||||||
|
tooltip={<>The default number of decimal places to display on small numbers. Default value: 3</>}
|
||||||
|
/>
|
||||||
<OptionSwitch
|
<OptionSwitch
|
||||||
checked={Settings.hideTrailingDecimalZeros}
|
checked={Settings.hideTrailingDecimalZeros}
|
||||||
onChange={(newValue) => {
|
onChange={(newValue) => {
|
||||||
|
|||||||
@@ -192,6 +192,8 @@ export const Settings = {
|
|||||||
useEngineeringNotation: false,
|
useEngineeringNotation: false,
|
||||||
/** Whether to disable suffixes and always use exponential form (scientific or engineering). */
|
/** Whether to disable suffixes and always use exponential form (scientific or engineering). */
|
||||||
disableSuffixes: false,
|
disableSuffixes: false,
|
||||||
|
/** The default amount of digits displayed after the decimal separator. */
|
||||||
|
fractionalDigits: 3,
|
||||||
/**
|
/**
|
||||||
* Player-defined key bindings. Don't use this property directly. It must be merged with DefaultKeyBindings in
|
* Player-defined key bindings. Don't use this property directly. It must be merged with DefaultKeyBindings in
|
||||||
* src\utils\KeyBindingUtils.ts.
|
* src\utils\KeyBindingUtils.ts.
|
||||||
|
|||||||
@@ -119,7 +119,12 @@ export function formatPercent(n: number, fractionalDigits = 2, multStart = 1e6)
|
|||||||
return getFormatter(fractionalDigits, percentFormats, { style: "percent" }).format(n);
|
return getFormatter(fractionalDigits, percentFormats, { style: "percent" }).format(n);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function formatNumber(n: number, fractionalDigits = 3, suffixStart = 1000, isInteger = false) {
|
export function formatNumber(
|
||||||
|
n: number,
|
||||||
|
fractionalDigits = Settings.fractionalDigits,
|
||||||
|
suffixStart = 1000,
|
||||||
|
isInteger = false,
|
||||||
|
) {
|
||||||
// NaN does not get formatted
|
// NaN does not get formatted
|
||||||
if (Number.isNaN(n)) return "NaN";
|
if (Number.isNaN(n)) return "NaN";
|
||||||
const nAbs = Math.abs(n);
|
const nAbs = Math.abs(n);
|
||||||
|
|||||||
Reference in New Issue
Block a user