public hasPriceScaleSeries(priceScaleId: Direction): boolean {
if (priceScaleId === Direction.Right && this.mainSeries.value) {
return true;
}
const indicators = Array.from(this.indicatorsMap.value.values());
for (let i = 0; i < indicators.length; i += 1) {
const series = Array.from(indicators[i].getSeriesMap().values()) as PriceScaleSeriesLike[];
for (let j = 0; j < series.length; j += 1) {
if (this.isSeriesOnPriceScale(series[j], priceScaleId)) {
return true;
}
}
}
return false;
}
private isSeriesOnPriceScale(series: PriceScaleSeriesLike, priceScaleId: Direction): boolean {
const options = series.options();
const seriesPriceScaleId = options.priceScaleId ?? Direction.Right;
return options.visible !== false && seriesPriceScaleId === priceScaleId;
}
interface PriceScaleSeriesLike {
options: () => {
priceScaleId?: string;
visible?: boolean;
};
}