Skip to content

Documentation / @finchart/core / CoordinateAccessor

Interface: CoordinateAccessor<T>

Defined in: packages/core/src/data/types.ts:58

점에서 화면 배치용 x/y 좌표를 꺼낸다.

Type Parameters

T

T extends BaseDataPoint = BaseDataPoint

Properties

gapless?

readonly optional gapless?: boolean

Defined in: packages/core/src/data/types.ts:130

이 접근자는 구멍을 낼 수 없다고 선언한다. 생략하면 낼 수 있다고 본다.

getY의 반환 타입이 이미 아는 사실인데(numbernumber | null) 런타임에는 타입을 못 읽어서, 그 사실을 값으로 한 번 더 적는 자리다.

무엇을 아끼나: 구멍 유무를 매 프레임 창 전체에 getY를 불러 확인하면 큰 창에서 수십만 번이다. 그 답이 언제나 없는 시리즈(봉 등)는 이 선언이 그 스캔을 통째로 없앤다. 뷰포트 캐시는 여기서 못 돕는다 — 구멍의 유무는 창이 아니라 배열의 성질이다.

거짓으로 선언하면 구멍이 삼켜진다 — getYnull·undefined를 돌려줄 수 있으면 절대 선언하지 않는다.

Methods

assertFinite()?

optional assertFinite(point, index): void

Defined in: packages/core/src/data/types.ts:104

이 점의 값 필드 전부가 유한한가. 아니면 DataError를 던진다.

생략하면 데이터 문이 getY 하나만 본다 — 라인·파생처럼 값이 하나면 그것으로 충분하다. OHLC처럼 값이 넷이면 반드시 구현한다: getYclose만 읽으므로 open·high·low는 어느 문도 안 지난다.

close: null 한 봉이 600px pane에 7140px 빨간 봉을 그렸고, close: "102"는 깨진 화면이 아니라 틀린 화면을 냈다 — 도지처럼 보이는 멀쩡한 봉. 안 그리는 게 아니라 틀린 가격을 자신 있게 그리는, 금융 차트가 낼 수 있는 최악의 실패다.

값이 오는 곳: 거래소 REST는 가격을 문자열로 준다. open/high/low+로 풀고 close 하나를 흘리면 그 행이다. 휴장·미체결 봉의 close: null은 피드의 평범한 하루고 parseFloat("")NaN이다.

비용은 재 봤다: 100k 봉에서 x만 보는 루프가 0.10ms, OHLC 넷을 같은 루프에서 더 보면 0.10ms다 — 같은 루프라 추가 순회가 아니다. 다만 필드를 손으로 펴지 않고 반복문으로 얹으면(이터레이터 할당 + 점마다 동적 조회) 2배 넘게 느려진다 — ohlc-fields.test.ts가 필드 누락을 지킨다.

Parameters

point

T

index

number

Returns

void


getX()

getX(point): number

Defined in: packages/core/src/data/types.ts:65

어디에 놓을 것인가. 없을 수 없다.

x가 없는 점은 whitespace가 아니라 버려야 하는 점이다 — 어디에 둘지 모르면 구멍조차 그릴 수 없다.

Parameters

point

T

Returns

number


getY()

getY(point): number | null | undefined

Defined in: packages/core/src/data/types.ts:80

무엇을 그릴 것인가. null이면 값이 없다(whitespace).

값이 없는 자리에서 선은 끊기고, 값 범위(valueExtent)는 그 점을 세지 않으며, 솎기는 그 자리를 삼키지 않는다.

undefined도 돌려줄 수 있다 — "읽지 못했다"는 뜻이다. {x, value} 처럼 다른 필드명을 준 경우를 매니저가 안내할 수 있으려면, 그 값이 여기까지 나와야 한다.

소비자는 이미 전부 isGap으로 받는다(라인·에어리어·히스토그램· 베이스라인).

Parameters

point

T

Returns

number | null | undefined


getYRange()?

optional getYRange(point): Range | null

Defined in: packages/core/src/data/types.ts:114

이 점 하나의 데이터 값 폭 — 캔들이면 저가·고가. 생략하면 점의 값은 getY 하나다(라인·파생).

Series.valueExtent와 다른 진실이다 — 그쪽은 "그림의 값 폭"이라 히스토그램이 0을 포함하지만, 여기는 데이터가 실제로 가진 폭이다. 그림 기준을 여기 쓰면 스냅이 히스토그램의 0에 붙는 버그가 된다.

Parameters

point

T

Returns

Range | null