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


private createSeries(): void {
  this.config.series.forEach(({ name, id: serieId, dataFormatter, seriesOptions, priceScaleOptions }) => {
    const serie = SeriesFactory.create(name!)({
      lwcChart: this.lwcChart,
      dataSource: this.dataSource,
      customFormatter: dataFormatter
        ? (params) =>
            dataFormatter({
              ...params,
              settings: this.settings,
              indicatorReference: this,
            })
        : undefined,
      seriesOptions,
      priceScaleOptions,
      mainSymbol$: this.mainSymbol$,
      mainSerie$: this.associatedPane.getMainSerie(),
      showSymbolLabel: false,
      paneIndex: this.associatedPane.getId(),
      indicatorReference: this,
    });

    const handleDataChanged = () => {
      this.notifyDataChanged();
    };

    serie.subscribeDataChanged(handleDataChanged);

    this.seriesSubscriptions.add(() => {
      serie.unsubscribeDataChanged(handleDataChanged);
    });

    this.seriesMap.set(serieId, serie);
    this.series.push(serie);
  });
}

private destroySeries(): void {
  this.seriesSubscriptions.unsubscribe();
  this.seriesSubscriptions = new Subscription();

  this.series.forEach((serie) => {
    serie.destroy();
  });

  this.series = [];
  this.seriesMap.clear();
}

private notifyDataChanged(): void {
  this.dataChangeHandlers.forEach((handler) => {
    handler();
  });
}

private getDefaultSettings(): IndicatorSettings {
  const settings: IndicatorSettings = {};

  this.config.settings?.forEach((field) => {
    settings[field.key] = field.defaultValue;
  });

  return settings;
}