private getHorizontalMarkersWithYScales()

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;
    }