Skip to content

Состояние, синхронизация, экспорт

Состояние чарта

Зум и скрытые легендой серии — сериализуемое состояние:

ts
const state = chart.getState();
// { zoom: { x: [0.25, 0.75] }, hiddenSeries: ['line-1'] }
localStorage.setItem('chart-state', JSON.stringify(state));

// восстановление — при создании или на живом инстансе
Charts.create({ ...options, initialState: JSON.parse(saved) });
await chart.setState(JSON.parse(saved));

Синхронизация чартов

Чарты с одним sync.groupId разделяют подсветку узлов и окно зума:

ts
Charts.create({ ...top, sync: { groupId: 'dashboard' } });
Charts.create({ ...bottom, sync: { groupId: 'dashboard' } });
ОпцияПо умолчаниюОписание
groupId'default'имя группы
nodeInteractiontrueсинхронизация подсветки (по индексу данных)
zoomtrueсинхронизация окна зума

Модульная сборка

В сборке через grafit-charts/core синхронизация — отдельный модуль: register(syncModule).

Контекстное меню

contextMenu: { enabled: true } — правый клик открывает меню: «Скачать PNG», «Сбросить зум» (когда есть зум) и extraItems: [{ label, action }]. В сборке через grafit-charts/core — отдельный модуль: register(contextMenuModule).

Экспорт

ts
chart.download({ fileName: 'report.png' });
const dataUrl = chart.getImageDataURL();

Анимация

Появление серий анимируется по умолчанию (600 мс, ease-out). При update/updateDelta с данными той же длины числовые поля плавно интерполируются к новым значениям. animation: { enabled: false } отключает, duration меняет длительность.

Опции

ОпцияТипПо умолчаниюОписание
animation.enabledbooleantrueанимация входа и обновлений
animation.durationnumber600длительность появления, мс
contextMenu.enabledbooleantrueменю по правому клику
contextMenu.extraItems{ label, action }[]свои пункты после стандартных
download(options){ fileName?, fileFormat? }chart.pngэкспорт PNG/JPEG
initialStateChartStateстартовый зум и скрытые серии