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

useDrawings

Логическое пространство для drag

Перемещение рисований при drag работает в logical space (индексы баров), а не в пространстве Unix timestamps. Причина: в данных есть пропуски (выходные, праздники). Если двигать по времени, один пиксель drag может перепрыгнуть через воскресенье и сдвинуть рисование на нежданное количество «реального» времени. Logical index монотонен и непрерывен — один шаг drag = один бар, всегда.

Snap к OHLC (Ctrl)

При зажатом Ctrl координата курсора привязывается к ближайшей из точек open, high, low, close ближайшей свечи. Snap вычисляется в coords.js и отображается как визуальная точка через DrawingsPrimitive (не через LW Charts API).

localStorage: ключ по символу

Рисования хранятся под ключом em_drawings_{symbol}. При смене символа загружаются его рисования — предыдущие уже сохранены. Таймфрейм в ключ не входит: рисования общие для всех таймфреймов одного символа (координаты в logical space пересчитываются при каждом рендере).

Undo-стек

Стек хранится в памяти как массив JSON-снимков до 50 шагов. Сбрасывается при смене символа — история не переносится между сессиями.

Глобальные события на document

keydown для Delete/Backspace, Escape, Ctrl+Z.
mouseup на document — завершает drag если мышь отпустили за пределами overlay (иначе drag завис бы).