Загрузка данных


const saveSnapshot = () => {
  const snapshot = chartRef.current?.getSnapshot();

  if (!snapshot) {
    return;
  }

  const savedData = JSON.stringify({
    ...snapshot,
    charts: snapshot.charts.map((chart) => ({
      ...chart,
      panes: chart.panes.map((pane) => ({
        ...pane,
        indicators: pane.indicators.map((indicator) => {
          const compareSeries = indicator.config?.series[0];

          return {
            ...indicator,
            dataSource: undefined,
            config:
              indicator.indicatorType === undefined &&
              indicator.config?.label &&
              compareSeries
                ? {
                    label: indicator.config.label,
                    newPane: indicator.config.newPane,
                    series: [
                      {
                        name: compareSeries.name,
                        seriesOptions: {
                          priceScaleId:
                            compareSeries.seriesOptions?.priceScaleId,
                        },
                      },
                    ],
                  }
                : undefined,
          };
        }),
      })),
    })),
  });

  savedDataRef.current = savedData;

  updateProperties((state) => {
    state.moexChartState = {
      ...state.moexChartState,
      tf: timeframeRef.current || Timeframes['1m'],
      savedData,
    };
  });
};