전체적인 리팩토링
This commit is contained in:
@@ -150,8 +150,7 @@ function resolveBarTimestamp(
|
||||
|
||||
/**
|
||||
* 타임스탬프를 타임프레임 버킷 경계에 정렬
|
||||
* - 1m: 초/밀리초를 제거해 분 경계에 정렬
|
||||
* - 30m/1h: 분 단위를 버킷에 정렬
|
||||
* - 분봉(1/5/10/15/30/60분): 분 단위를 버킷 경계에 정렬
|
||||
* - 1d: 00:00:00
|
||||
* - 1w: 월요일 00:00:00
|
||||
*/
|
||||
@@ -160,12 +159,14 @@ function alignTimestamp(
|
||||
timeframe: DashboardChartTimeframe,
|
||||
): UTCTimestamp {
|
||||
const d = new Date(timestamp * 1000);
|
||||
const minuteBucket = resolveMinuteBucket(timeframe);
|
||||
|
||||
if (timeframe === "1m") {
|
||||
d.setUTCSeconds(0, 0);
|
||||
} else if (timeframe === "30m" || timeframe === "1h") {
|
||||
const bucket = timeframe === "30m" ? 30 : 60;
|
||||
d.setUTCMinutes(Math.floor(d.getUTCMinutes() / bucket) * bucket, 0, 0);
|
||||
if (minuteBucket !== null) {
|
||||
d.setUTCMinutes(
|
||||
Math.floor(d.getUTCMinutes() / minuteBucket) * minuteBucket,
|
||||
0,
|
||||
0,
|
||||
);
|
||||
} else if (timeframe === "1d") {
|
||||
d.setUTCHours(0, 0, 0, 0);
|
||||
} else if (timeframe === "1w") {
|
||||
@@ -300,7 +301,17 @@ export function formatSignedPercent(value: number) {
|
||||
* 분봉 타임프레임인지 판별
|
||||
*/
|
||||
export function isMinuteTimeframe(tf: DashboardChartTimeframe) {
|
||||
return tf === "1m" || tf === "30m" || tf === "1h";
|
||||
return resolveMinuteBucket(tf) !== null;
|
||||
}
|
||||
|
||||
function resolveMinuteBucket(tf: DashboardChartTimeframe): number | null {
|
||||
if (tf === "1m") return 1;
|
||||
if (tf === "5m") return 5;
|
||||
if (tf === "10m") return 10;
|
||||
if (tf === "15m") return 15;
|
||||
if (tf === "30m") return 30;
|
||||
if (tf === "1h") return 60;
|
||||
return null;
|
||||
}
|
||||
|
||||
function normalizeTickTime(value?: string) {
|
||||
|
||||
Reference in New Issue
Block a user