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


export function getTimeFromXCoordinate(chart: IChartApi, xCoordinate: number, series?: SeriesApi): Time | null {
  if (series) {
    const time = getNearestSeriesTimeFromXCoordinate(chart, series, xCoordinate);

    if (time !== null) {
      return time;
    }
  }

  return chart.timeScale().coordinateToTime(xCoordinate as Coordinate) ?? null;
}




function getNearestSeriesTimeFromXCoordinate(chart: IChartApi, series: SeriesApi, xCoordinate: number): Time | null {
  const logical = chart.timeScale().coordinateToLogical(xCoordinate as Coordinate);

  if (logical === null) {
    return null;
  }

  const data = series.data() as readonly SeriesTimeItem[];

  if (!data.length) {
    return null;
  }

  const nearestIndex = clamp(Math.round(Number(logical)), 0, data.length - 1);
  const item = data[nearestIndex];

  return item?.time ?? null;
}