Перейти к содержанию

Утилиты

coords.js — почему logical space

Drag рисований работает в logical-индексах баров, а не в timestamp. Причина: в данных есть пропуски (выходные). При движении в timestamp-пространстве один шаг drag мог бы перепрыгнуть через 2 дня выходных. Logical-индекс монотонен — шаг drag = ровно 1 бар.

logicalToTime экстраполирует за пределы данных через период последнего/первого бара — нужно для корректного позиционирования рисований при скролле за крайние свечи.

timeToCoordExtended (drawingsPrimitive.js)

LW Charts timeToCoordinate возвращает null для timestamps, которых нет в серии. timeToCoordExtended добавляет экстраполяцию: если timestamp правее/левее данных — вычисляет координату через последний известный бар. Если внутри пропуска — интерполирует между соседями.

Используется в hit-testing чтобы рисования оставались кликабельными при прокрутке.

sessionBoxesPrimitive.js

Бокс рисуется через firstCandleTime / lastCandleTime свечей, а не через block.start / block.endtimeToCoordinate принимает только timestamps из серии.

Ширина бокса вычисляется из logicalToCoordinate(0) и logicalToCoordinate(1) — это ширина одного бара в пикселях, корректная при любом зуме.