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?
readonlyoptionalgapless?:boolean
Defined in: packages/core/src/data/types.ts:130
이 접근자는 구멍을 낼 수 없다고 선언한다. 생략하면 낼 수 있다고 본다.
getY의 반환 타입이 이미 아는 사실인데(number 대 number | null) 런타임에는 타입을 못 읽어서, 그 사실을 값으로 한 번 더 적는 자리다.
무엇을 아끼나: 구멍 유무를 매 프레임 창 전체에 getY를 불러 확인하면 큰 창에서 수십만 번이다. 그 답이 언제나 없는 시리즈(봉 등)는 이 선언이 그 스캔을 통째로 없앤다. 뷰포트 캐시는 여기서 못 돕는다 — 구멍의 유무는 창이 아니라 배열의 성질이다.
거짓으로 선언하면 구멍이 삼켜진다 — getY가 null·undefined를 돌려줄 수 있으면 절대 선언하지 않는다.
Methods
assertFinite()?
optionalassertFinite(point,index):void
Defined in: packages/core/src/data/types.ts:104
이 점의 값 필드 전부가 유한한가. 아니면 DataError를 던진다.
생략하면 데이터 문이 getY 하나만 본다 — 라인·파생처럼 값이 하나면 그것으로 충분하다. OHLC처럼 값이 넷이면 반드시 구현한다: getY가 close만 읽으므로 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()?
optionalgetYRange(point):Range|null
Defined in: packages/core/src/data/types.ts:114
이 점 하나의 데이터 값 폭 — 캔들이면 저가·고가. 생략하면 점의 값은 getY 하나다(라인·파생).
Series.valueExtent와 다른 진실이다 — 그쪽은 "그림의 값 폭"이라 히스토그램이 0을 포함하지만, 여기는 데이터가 실제로 가진 폭이다. 그림 기준을 여기 쓰면 스냅이 히스토그램의 0에 붙는 버그가 된다.
Parameters
point
T
Returns
Range | null