From 3862bd294cf42529bd964c25db6f32a50d77992f Mon Sep 17 00:00:00 2001 From: Albert Backenhof Date: Tue, 9 Apr 2019 08:29:37 +0200 Subject: [PATCH] Arrange matching dim1 data on the same row -The data is not guaranteed to be processed row by row. Therefore, make sure to check the entire matrix for the correct row (not just previous row) when appending new row data. Issue: DEB-155 --- src/initialize-transformed.js | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/initialize-transformed.js b/src/initialize-transformed.js index b62b74f..b008a33 100644 --- a/src/initialize-transformed.js +++ b/src/initialize-transformed.js @@ -113,7 +113,6 @@ function generateDataSet (component, dimensionsInformation, measurementsInformat const measurements = generateMeasurements(measurementsInformation); let matrix = []; - let previousDim1Entry; const hasDesignDimension = cubes.design; const hasSecondDimension = hasDesignDimension ? dimensionsInformation.length > 2 : dimensionsInformation.length > 1; cubes.data.forEach(row => { @@ -127,7 +126,7 @@ function generateDataSet (component, dimensionsInformation, measurementsInformat dimension2.push(dimension2Entry); firstDataCell = 2; } - const matrixRow = row + let matrixRow = row .slice(firstDataCell, row.length) .map((cell, cellIndex) => { const measurementInformation = measurements[cellIndex]; @@ -143,18 +142,17 @@ function generateDataSet (component, dimensionsInformation, measurementsInformat return generatedCell; }); + let appendToRowIndex = matrix.length; if (hasSecondDimension) { - const currentDim1Entry = row[0].qText; - const isSameDimension1AsPrevious = currentDim1Entry === previousDim1Entry; - if (isSameDimension1AsPrevious) { - matrix[matrix.length - 1] = matrix[matrix.length - 1].concat(matrixRow); - } else { - matrix[matrix.length] = matrixRow; + // See if there already is a row for the current dim1 + for (let i = 0; i < matrix.length; i++) { + if (matrix[i][0].parents.dimension1.header === matrixRow[0].parents.dimension1.header) { + appendToRowIndex = i; + matrixRow = matrix[i].concat(matrixRow); + } } - previousDim1Entry = currentDim1Entry; - } else { - matrix[matrix.length] = matrixRow; } + matrix[appendToRowIndex] = matrixRow; }); // filter header dimensions to only have distinct values