Files
frontend/apps/dm/app/common/transValueFormat.tsx
T
2026-05-04 18:11:08 +09:00

56 lines
1.9 KiB
TypeScript

import React from 'react'
type CommonProps = {
value: string | number | '';
format: string;
}
export default function TransValueFormat({value='', format=''}: CommonProps) {
return (
format === 'yyyyMMdd' ?
<>{value.toString().substring(0,4)+'-'+value.toString().substring(4,6)+'-'+value.toString().substring(6,8)}</>
: format === 'number' ?
<>{String(value ?? '').includes('.')
? String(value).split('.').map((part, index) =>
index === 0 ? part.replace(/\B(?=(\d{3})+(?!\d))/g, ",") : part
).join('.')
: String(value ?? '').replace(/\B(?=(\d{3})+(?!\d))/g, ",")}</>
: format === 'float1' ?
<>{String(value ?? '').includes('.')
? String(value).split('.').map((part, index) =>
index === 0 ? part.replace(/\B(?=(\d{3})+(?!\d))/g, ",") : part
).join('.')
: String(value ?? '').replace(/\B(?=(\d{3})+(?!\d))/g, ",")}</>
: <>{value}</>
)
}
/**
* 천,만 등의 단위 변경 && 반올림 및 소숫점 자리수 지정
* @param value
* @param unitSize 단위 변경 1000 인 경우, 100,000 -> 100 으로 변경
* @param decimalPlaces 어느 자리수에서 반올림할지 지정 1이면 소수 두번째 자리에서 반올림
* @returns
*/
export const formatUsage = (
value: string | number,
unitSize: number = 1,
decimalPlaces: number = 0
) => {
if (value === null || value === undefined || value === "") return "";
const numeric =
typeof value === "number" ? value : Number(String(value).replaceAll(",", ""));
if (Number.isNaN(numeric)) {
return String(value);
}
const scaledValue = numeric / unitSize;
const roundedValue =
Math.round(scaledValue * 10 ** decimalPlaces) / 10 ** decimalPlaces;
return roundedValue.toLocaleString("ko-KR", {
minimumFractionDigits: decimalPlaces,
maximumFractionDigits: decimalPlaces,
});
};