in src/UXClient/Components/LineChart/LineChart.ts [1192:1247]
private createYOffsets () {
let visibleGroups = this.data.filter((agg) => this.chartComponentData.displayState[agg.aggKey]["visible"]);
let visibleCDOs = this.aggregateExpressionOptions.filter((cDO) => this.chartComponentData.displayState[cDO.aggKey]["visible"]);
let visibleNumericCount;
let swimLaneSet = {};
visibleCDOs.forEach((aEO, i) => {
if (aEO.swimLane === null) {
aEO.swimLane = i + 1;
}
});
visibleCDOs.forEach((cDO) => {
swimLaneSet[cDO.swimLane] = swimLaneSet[cDO.swimLane] || (cDO.dataType === DataTypes.Numeric);
});
visibleNumericCount = Object.keys(swimLaneSet).reduce((visibleCount, swimLane) => {
return visibleCount + (swimLaneSet[swimLane] ? 1 : 0);
}, 0);
let countNumericLanes = visibleNumericCount;
let linechartTopPadding = this.chartOptions.isArea ? 0 : LINECHARTTOPPADDING;
let useableHeight = this.chartHeight - linechartTopPadding;
let fixedEventsHeight = 0;
if (this.chartOptions.swimLaneOptions) {
Object.keys(this.chartOptions.swimLaneOptions).forEach((swimlaneKey) => {
let swimlane = Number(swimlaneKey)
let sLO = this.chartOptions.swimLaneOptions[swimlane];
if (sLO.collapseEvents) {
let swimlaneHeight = this.getEventsCollapsedSwimlaneHeight(visibleCDOs, swimlane);
fixedEventsHeight += swimlaneHeight;
}
});
}
let heightNonNumeric = visibleCDOs.reduce((sumPrevious, currGroup, i) => {
if (currGroup.dataType === DataTypes.Events && this.chartOptions.swimLaneOptions && this.chartOptions.swimLaneOptions[currGroup.swimLane] && this.chartOptions.swimLaneOptions[currGroup.swimLane].collapseEvents) {
return sumPrevious;
}
return sumPrevious + (currGroup.dataType !== DataTypes.Numeric ? Utils.getNonNumericHeight(currGroup.height) : 0);
}, 0);
heightNonNumeric += fixedEventsHeight;
let heightPerNumeric = (useableHeight - heightNonNumeric) / countNumericLanes;
this.setSwimLaneYExtents(
visibleGroups,
visibleCDOs,
Object.keys(swimLaneSet)
.filter((lane) => swimLaneSet[lane])
.map((stringLane) => Number(stringLane)),
this.chartOptions.swimLaneOptions
);
return this.getSwimlaneOffsets(linechartTopPadding, visibleGroups, visibleCDOs, heightPerNumeric, swimLaneSet);
}