매매 시그널 알림 화면 수정
This commit is contained in:
@@ -5,6 +5,11 @@
|
||||
import { useSyncExternalStore } from 'react';
|
||||
import { TickMarkType, type Time } from 'lightweight-charts';
|
||||
import type { Timeframe } from '../types';
|
||||
import {
|
||||
formatLwcTickMarkWithPattern,
|
||||
formatLwcTimeWithPattern,
|
||||
getChartTimeFormat,
|
||||
} from './chartTimeFormat';
|
||||
|
||||
export const DEFAULT_DISPLAY_TIMEZONE = 'Asia/Seoul';
|
||||
|
||||
@@ -68,10 +73,6 @@ export function getTimezoneAbbr(tz: string): string {
|
||||
return TIMEZONE_OPTIONS.find(o => o.id === id)?.abbr ?? id.split('/').pop() ?? 'TZ';
|
||||
}
|
||||
|
||||
function isDailyTimeframe(tf?: string): boolean {
|
||||
return tf === '1D' || tf === '1W' || tf === '1M';
|
||||
}
|
||||
|
||||
/** 하단 바·시계 등 HH:mm:ss */
|
||||
export function formatUnixClock(unixSec: number, tz?: string, withSeconds = true): string {
|
||||
if (!unixSec) return '–';
|
||||
@@ -90,24 +91,7 @@ export function formatUnixClock(unixSec: number, tz?: string, withSeconds = true
|
||||
/** 차트 축·범례용 */
|
||||
export function formatUnixForChart(unixSec: number, timeframe?: Timeframe, tz?: string): string {
|
||||
if (!unixSec) return '';
|
||||
const zone = normalizeTimezone(tz ?? _tz);
|
||||
const d = new Date(unixSec * 1000);
|
||||
if (isDailyTimeframe(timeframe)) {
|
||||
return new Intl.DateTimeFormat('en-GB', {
|
||||
timeZone: zone,
|
||||
year: '2-digit',
|
||||
month: '2-digit',
|
||||
day: '2-digit',
|
||||
}).format(d);
|
||||
}
|
||||
return new Intl.DateTimeFormat('en-GB', {
|
||||
timeZone: zone,
|
||||
month: '2-digit',
|
||||
day: '2-digit',
|
||||
hour: '2-digit',
|
||||
minute: '2-digit',
|
||||
hour12: false,
|
||||
}).format(d);
|
||||
return formatLwcTimeWithPattern(unixSec, timeframe, tz ?? _tz, getChartTimeFormat());
|
||||
}
|
||||
|
||||
/** LWC Time → unix 초 (없으면 null) */
|
||||
@@ -126,17 +110,7 @@ export function formatLwcTime(
|
||||
timeframe?: Timeframe,
|
||||
tz?: string,
|
||||
): string {
|
||||
if (typeof time === 'number') {
|
||||
return formatUnixForChart(time, timeframe, tz);
|
||||
}
|
||||
const zone = normalizeTimezone(tz ?? _tz);
|
||||
const utc = Date.UTC(time.year, time.month - 1, time.day);
|
||||
return new Intl.DateTimeFormat('en-GB', {
|
||||
timeZone: zone,
|
||||
year: '2-digit',
|
||||
month: '2-digit',
|
||||
day: '2-digit',
|
||||
}).format(new Date(utc));
|
||||
return formatLwcTimeWithPattern(time, timeframe, tz ?? _tz, getChartTimeFormat());
|
||||
}
|
||||
|
||||
/** LWC X축 눈금 — 선택한 표시 시간대 기준 (기본 포맷터는 브라우저 로컬 TZ 사용) */
|
||||
@@ -146,43 +120,13 @@ export function formatLwcTickMark(
|
||||
timeframe?: Timeframe,
|
||||
tz?: string,
|
||||
): string {
|
||||
const zone = normalizeTimezone(tz ?? _tz);
|
||||
const unixSec = lwcTimeToUnix(time);
|
||||
if (unixSec == null) return '';
|
||||
const d = new Date(unixSec * 1000);
|
||||
|
||||
switch (tickMarkType) {
|
||||
case TickMarkType.Year:
|
||||
return new Intl.DateTimeFormat('en-GB', { timeZone: zone, year: 'numeric' }).format(d);
|
||||
case TickMarkType.Month:
|
||||
return new Intl.DateTimeFormat('en-GB', { timeZone: zone, month: 'short' }).format(d);
|
||||
case TickMarkType.DayOfMonth:
|
||||
if (isDailyTimeframe(timeframe)) {
|
||||
return new Intl.DateTimeFormat('en-GB', {
|
||||
timeZone: zone,
|
||||
month: 'short',
|
||||
day: 'numeric',
|
||||
}).format(d);
|
||||
}
|
||||
return new Intl.DateTimeFormat('en-GB', { timeZone: zone, day: 'numeric' }).format(d);
|
||||
case TickMarkType.Time:
|
||||
return new Intl.DateTimeFormat('en-GB', {
|
||||
timeZone: zone,
|
||||
hour: '2-digit',
|
||||
minute: '2-digit',
|
||||
hour12: false,
|
||||
}).format(d);
|
||||
case TickMarkType.TimeWithSeconds:
|
||||
return new Intl.DateTimeFormat('en-GB', {
|
||||
timeZone: zone,
|
||||
hour: '2-digit',
|
||||
minute: '2-digit',
|
||||
second: '2-digit',
|
||||
hour12: false,
|
||||
}).format(d);
|
||||
default:
|
||||
return formatUnixForChart(unixSec, timeframe, zone);
|
||||
}
|
||||
return formatLwcTickMarkWithPattern(
|
||||
time,
|
||||
tickMarkType,
|
||||
timeframe,
|
||||
tz ?? _tz,
|
||||
getChartTimeFormat(),
|
||||
);
|
||||
}
|
||||
|
||||
/** 하단 바 표시: `06:36:00 KST` */
|
||||
|
||||
Reference in New Issue
Block a user