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


private collectAxisGroups(
  sources: readonly PriceLabelSource[],
): Map<string, AxisLabelsGroup> {
  const groups = new Map<string, AxisLabelsGroup>();

  sources.forEach((source) => {
    if (
      !source.series.isVisible() ||
      source.role === 'main' ||
      (source.role !== 'volume' && !this.isHistoryMode)
    ) {
      return;
    }

    const label = this.createLabel(source);

    if (!label) {
      return;
    }

    const paneIndex = source.series.getPane().paneIndex();
    const side = getAxisSide(source);
    const key = `${paneIndex}:${side}`;
    const group = groups.get(key);

    if (group) {
      group.labels.push(label);
      return;
    }

    groups.set(key, {
      paneIndex,
      side,
      labels: [label],
      reservedCoordinate: null,
    });
  });

  const mainSource = sources.find((source) => source.role === 'main');

  if (!mainSource) {
    return groups;
  }

  const showRealtimeLabel =
    this.isHistoryMode ||
    this.ensureSourceDefaults(mainSource.series).lastValueVisible;

  if (!showRealtimeLabel) {
    return groups;
  }

  const reservedCoordinate = this.getCurrentMainPriceCoordinate();

  if (reservedCoordinate === null) {
    return groups;
  }

  const paneIndex = mainSource.series.getPane().paneIndex();
  const side = getAxisSide(mainSource);
  const group = groups.get(`${paneIndex}:${side}`);

  if (group) {
    group.reservedCoordinate = reservedCoordinate;
  }

  return groups;
}