전략편집기 수정
This commit is contained in:
@@ -5,6 +5,9 @@ import type { LogicNode } from './strategyTypes';
|
||||
import { CONDITION_LABEL } from './strategyTypes';
|
||||
import type { StrategyDto } from './backendApi';
|
||||
import { formatIndicatorDisplayLabel } from './indicatorRegistry';
|
||||
import { coerceFiniteNumber, safeToFixed } from './safeFormat';
|
||||
|
||||
export { coerceFiniteNumber } from './safeFormat';
|
||||
|
||||
export interface VirtualConditionRow {
|
||||
id: string;
|
||||
@@ -71,14 +74,6 @@ function walk(
|
||||
node.children?.forEach(c => walk(c, timeframe, side, out, seen));
|
||||
}
|
||||
|
||||
/** API·DSL에서 문자열로 올 수 있는 값을 안전하게 숫자로 변환 */
|
||||
export function coerceFiniteNumber(v: unknown): number | null {
|
||||
if (v == null || v === '') return null;
|
||||
if (typeof v === 'number') return Number.isFinite(v) ? v : null;
|
||||
const n = Number(v);
|
||||
return Number.isFinite(n) ? n : null;
|
||||
}
|
||||
|
||||
export function extractVirtualConditions(strategy: StrategyDto | null | undefined): VirtualConditionRow[] {
|
||||
if (!strategy) return [];
|
||||
const out: VirtualConditionRow[] = [];
|
||||
@@ -112,5 +107,5 @@ export function formatIndicatorValue(v: number | null | unknown): string {
|
||||
const n = coerceFiniteNumber(v);
|
||||
if (n == null) return '—';
|
||||
if (Math.abs(n) >= 1000) return n.toLocaleString(undefined, { maximumFractionDigits: 0 });
|
||||
return n.toFixed(2);
|
||||
return safeToFixed(n, 2);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user