use originHyperCubeDefinition as basis for dynamically created hyperCubes

This commit is contained in:
Kristoffer Lind
2019-02-28 11:01:05 +01:00
parent a400e9c233
commit fdb2aaaef4
2 changed files with 11 additions and 24 deletions

Binary file not shown.

View File

@@ -6,44 +6,30 @@ function createCube (definition, app) {
});
}
function createDimension (dimensionInformation) {
return {
qDef: {
qFieldDefs: dimensionInformation.qGroupFieldDefs
}
};
}
async function buildDataCube (dimensionsInformation, dimensionIndexes, app, measurementsInformation) {
const dimension1 = dimensionsInformation[dimensionIndexes.dimension1];
async function buildDataCube (originCubeDefinition, dimensionIndexes, app) {
const cubeDefinition = {
...originCubeDefinition,
qInitialDataFetch: [
{
qHeight: 1000,
qWidth: 10
}
],
qDimensions: [createDimension(dimension1)],
qMeasures: measurementsInformation.map(measurementInformation => ({
qDef: {
qDef: measurementInformation.qFallbackTitle
}
}))
qDimensions: [originCubeDefinition.qDimensions[dimensionIndexes.dimension1]],
qMeasures: originCubeDefinition.qMeasures
};
if (dimensionIndexes.dimension2) {
const dimension2 = dimensionsInformation[dimensionIndexes.dimension2];
cubeDefinition.qDimensions.push(createDimension(dimension2));
cubeDefinition.qDimensions.push(originCubeDefinition.qDimensions[dimensionIndexes.dimension2]);
}
const cube = await createCube(cubeDefinition, app);
return cube.qHyperCube.qDataPages[0].qMatrix;
}
async function buildDesignCube (dimensionsInformation, dimensionIndexes, app) {
async function buildDesignCube (originCubeDefinition, dimensionIndexes, app) {
if (!dimensionIndexes.design) {
return null;
}
const dimensionInfo = dimensionsInformation[dimensionIndexes.design];
const cube = await createCube({
qInitialDataFetch: [
{
@@ -51,7 +37,7 @@ async function buildDesignCube (dimensionsInformation, dimensionIndexes, app) {
qWidth: 1
}
],
qDimensions: [createDimension(dimensionInfo)]
qDimensions: [originCubeDefinition.qDimensions[dimensionIndexes.design]]
}, app);
return cube.qHyperCube.qDataPages[0].qMatrix;
@@ -81,13 +67,14 @@ function getDimensionIndexes (dimensionsInformation, designDimensionIndex) {
}
export async function initializeCubes ({ component, layout }) {
const properties = await component.backendApi.getProperties();
const originCubeDefinition = properties.qHyperCubeDef;
const app = qlik.currApp(component);
const designDimensionIndex = findDesignDimension(layout.qHyperCube.qDataPages[0].qMatrix);
const dimensionsInformation = layout.qHyperCube.qDimensionInfo;
const measurementsInformation = layout.qHyperCube.qMeasureInfo;
const dimensionIndexes = getDimensionIndexes(dimensionsInformation, designDimensionIndex);
const designCube = await buildDesignCube(dimensionsInformation, dimensionIndexes, app);
const dataCube = await buildDataCube(dimensionsInformation, dimensionIndexes, app, measurementsInformation);
const designCube = await buildDesignCube(originCubeDefinition, dimensionIndexes, app);
const dataCube = await buildDataCube(originCubeDefinition, dimensionIndexes, app);
return {
design: designCube,