in dashboard/new-dashboard/src/configurators/MeasureConfigurator.ts [450:485]
function mergeSeries(dataList: (string | number)[][][], configuration: DataQueryExecutorConfiguration) {
const mergedDataList: DataQueryResult = []
const seriesIdsToIndex = new Map<string, number>()
const seriesIdToSeriesName = new Map<number, string>()
const seriesIdToMeasureName = new Map<number, string>()
for (const [dataIndex, seriesData] of dataList.entries()) {
if (seriesData[1]?.length === 0) {
console.log("Serie is empty and will be hidden: " + configuration.seriesNames[dataIndex])
continue
}
const measureName = configuration.measureNames[dataIndex]
let seriesName = configuration.seriesNames[dataIndex]
//fleet
if (seriesName == "" && (seriesData.length == 6 || seriesData.length == 10)) {
seriesName = seriesData[4][0] as string
} else if (seriesName == "" && seriesData.length > 6) {
// we take only the one project name, there can't be more
seriesName = seriesData[6][0] as string
}
seriesName = measureNameToLabel(seriesName)
const id = measureName === seriesName ? seriesName : `${measureName}@${seriesName}`
if (seriesIdsToIndex.has(id)) {
const seriesIndex = seriesIdsToIndex.get(id) as number
const values = mergedDataList[seriesIndex]
for (const [i, seriesDatum] of seriesData.entries()) {
values[i] = i < values.length ? [...values[i], ...seriesDatum] : [...seriesDatum]
}
} else {
const newId = mergedDataList.push(seriesData) - 1
seriesIdsToIndex.set(id, newId)
seriesIdToSeriesName.set(newId, seriesName)
seriesIdToMeasureName.set(newId, measureName)
}
}
return new MergeResults(mergedDataList, seriesIdToSeriesName, seriesIdToMeasureName)
}