Documentation / @finchart/core / SeriesHandle
Interface: SeriesHandle<T, TPoint>
Defined in: packages/core/src/plot/pane.ts:189
등록 하나의 데이터를 쥔 손잡이. addSeries가 돌려준다. 시리즈가 여럿인 무대에서 "새 데이터를 누구에게 주는가"는 plot.setData로 답할 수 없어서 등록마다 자기 손잡이를 갖는다.
규칙: 줄 게 해제뿐이면 함수, 더 있으면 객체. addDecoration·plot.on은 그래서 함수를 그대로 돌려준다. dispose는 이름만 PluginApi와 같고 상속하지 않는다 — 상속하면 "Plot이 알아서 정리해 준다"는 없는 약속이 생긴다.
Extends
Source<TPoint>
Type Parameters
T
T extends BaseDataPoint
TPoint
TPoint extends BaseDataPoint = T
Properties
attached
readonlyattached:boolean
Defined in: packages/core/src/plot/pane.ts:276
이 손잡이가 아직 pane에 붙어 있는가. 쓰기 문 다섯은 떨어진 손잡이에서 던지므로, 그 전에 묻는 자리다.
socket.on("tick", (t) => { if (handle.attached) handle.updateLast(t); });없으면 늦게 오는 콜백을 쓰는 쪽이 try/catch를 두르는 것 말고 방법이 없다 — 던지는 계약은 물어볼 수 있을 때만 성립한다.
묻는 것과 던지는 것의 경계가 다르다. 무대가 통째로 내려간 경우 (Plot.removePane·destroy)에도 이것은 거짓이지만 쓰기 문은 던지지 않는다 — 언마운트 도중 늦게 도착한 콜백이 부르는 것이 정상 경로이고, 그때 pane은 이미 목록에도 레이아웃에도 없어서 쓴 것이 아무 데도 안 닿는다. 두 경우를 갈라 읽는다:
attached | 쓰기 문 | 무슨 일이 있었나 |
|---|---|---|
| false | 던진다 | 등록이 사라졌다 — dispose()·syncSeries 축출 |
| false | 조용하다 | 무대가 내려갔다 — removePane·destroy |
read()·xRange·dispose()는 떨어진 뒤에도 안전하다 — 묻기 전에 읽어도 터지지 않는다.
xRange
readonlyxRange:Range|null
Defined in: packages/core/src/plot/pane.ts:249
이 등록이 그리는 점들의 x 범위. 비었으면 null.
파생이면 파생 결과의 범위다 — 이동평균은 앞의 period개가 없으므로 원본보다 짧다. 무한 스크롤이 묻는 "어디까지 왔나"는 그리는 것 기준이 맞다.
Methods
append()
append(
points):void
Defined in: packages/core/src/plot/pane.ts:220
뒤에 최신을 잇는다. 도메인은 그대로 둔다.
Parameters
points
T[]
Returns
void
dispose()
dispose():
void
Defined in: packages/core/src/plot/pane.ts:279
등록을 뗀다. 두 번 불러도 안전하다.
Returns
void
prepend()
prepend(
points):void
Defined in: packages/core/src/plot/pane.ts:217
앞에 과거를 잇는다. 도메인은 그대로 둔다 — 왼쪽으로 끌다 과거를 불러올 때 화면이 전체 구간으로 튕겨 돌아가면 안 되기 때문이다.
Parameters
points
T[]
Returns
void
read()
read():
TPoint[]
Defined in: packages/core/src/plot/pane.ts:208
이 등록이 그리는 점들. 지표의 입력이 되는 자리다.
const price = pane.addSeries({ series: candleSeries(), data: candles });
computation({ inputs: [price], calc: (candles) => ... });파생이 걸려 있으면 파생 결과다 — 화면에 있는 것이 곧 다음 계산의 입력이다.
돌려주는 배열은 살아 있는 것이다. 고치지 마라. 복사본을 주지 않는 이유는 이 문이 지표 파이프라인의 입력이라서다 — 틱마다 도는 자리에서 10만 점을 복사하면 그 자체가 프레임 예산을 먹는다. 정렬·필터가 필요하면 받는 쪽이 [...handle.read()]로 뜬다.
Returns
TPoint[]
Overrides
setData()
setData(
data):void
Defined in: packages/core/src/plot/pane.ts:211
데이터셋을 통째로 간다. 두 축을 다시 맞춘다.
Parameters
data
T[]
Returns
void
swapSeries()
swapSeries(
next):void
Defined in: packages/core/src/plot/pane.ts:241
그리는 표현만 갈아 끼운다 — 데이터·파생·이 손잡이를 문 것들 (지표의 source, 실시간 updateLast)은 전부 그대로다. 캔들 ↔ 에어리어 같은 차트 유형 전환이 이 문이다: plot.setSeries는 pane의 다른 시리즈(이동평균 등)까지 버리므로 그 자리에 못 쓴다.
값 축은 다시 맞춘다 — 시리즈마다 차지하는 구간이 다르다 (캔들은 low~high, 종가 라인은 close만).
Series는 무상태여야 한다 (SeriesSpec.series와 같은 규칙) — 상태를 드는 표현은 갈아 끼우는 순간 그 상태가 날아간다.
Parameters
next
Series<TPoint>
Returns
void
updateLast()
updateLast(
point):void
Defined in: packages/core/src/plot/pane.ts:227
진행 중인 봉의 틱. 마지막 점과 같은 x면 교체, 크면 append다. 작으면 DataError — 과거를 고치는 것은 setData의 일이다. 도메인은 안 건드린다 — pan/zoom도, 수동 값 구간도 그대로다.
Parameters
point
T
Returns
void