in src/UXClient/Components/LineChart/LineChart.ts [1314:1357]
private getHorizontalMarkersWithYScales () {
let visibleCDOs = this.aggregateExpressionOptions.filter((cDO) => this.chartComponentData.displayState[cDO.aggKey]["visible"]);
const markerList = [];
const pushMarker = (cDO, marker, markerList) => {
if (this.chartOptions.yAxisState === YAxisStates.Overlap) {
return;
}
const domain = this.chartOptions.yAxisState === YAxisStates.Stacked ?
this.swimlaneYExtents[cDO.swimLane] :
this.swimlaneYExtents[0];
// filter out markers not in the y range of that lane and in lanes that have overlap axis
if (domain &&
this.chartOptions.swimLaneOptions?.[cDO.swimLane]?.yAxisType !== YAxisStates.Overlap &&
marker.value >= domain[0] &&
marker.value <= domain[1]) {
markerList.push({yScale: this.yMap[cDO.aggKey], ...marker});
}
}
visibleCDOs.forEach((cDO) => {
cDO.horizontalMarkers.forEach((horizontalMarkerParams: HorizontalMarker) => {
pushMarker(cDO, horizontalMarkerParams, markerList);
});
});
// find a visible CDO for a swimlane
const findFirstVisibleCDO = (swimlaneNumber) => {
return visibleCDOs.find((cDO) => {
return (cDO.swimLane === swimlaneNumber);
});
}
if (this.chartOptions.yAxisState !== YAxisStates.Overlap && this.chartOptions.swimLaneOptions) {
Object.keys(this.chartOptions.swimLaneOptions).forEach((swimlaneNumber) => {
const swimlaneOptions = this.chartOptions.swimLaneOptions[swimlaneNumber];
swimlaneOptions.horizontalMarkers?.forEach((horizontalMarkerParams: HorizontalMarker) => {
const firstVisibleCDO = findFirstVisibleCDO(Number(swimlaneNumber));
if (firstVisibleCDO) {
pushMarker(firstVisibleCDO, horizontalMarkerParams, markerList);
}
});
});
}
return markerList;
}