Skip to content

Commit

Permalink
Merge pull request #72 from qlik-oss/hva/modifier-forward-3
Browse files Browse the repository at this point in the history
fix(modifiers): fix forward and backward compatibility
  • Loading branch information
quanho committed Feb 14, 2020
2 parents db2de5d + 93907bd commit ef6d80d
Showing 1 changed file with 21 additions and 14 deletions.
35 changes: 21 additions & 14 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -194,14 +194,17 @@ function applyModifiers({
);
}

function updateDisabledModifiers(measure) {
// For forward compatibility
function updateModifiers(measure) {
// For forward and then backward compatibility
const modifiers = getModifiers(measure);
if (modifiers) {
if (Array.isArray(modifiers)) {
modifiers.forEach((modifier) => {
if (modifier.disabled) {
delete modifier.base;
delete modifier.outputExpression;
if (typeof modifier === 'object') {
if (modifier.disabled || (!availableModifiers[modifier.type] && modifier.base && modifier.base.qDef !== measure.qDef.qDef)) {
modifier.disabled = true;
delete modifier.base;
delete modifier.outputExpression;
}
}
});
}
Expand All @@ -220,7 +223,7 @@ function cleanUpMeasure(measure) {
delete measure.qDef.base;
}
measure.qDef.coloring && delete measure.qDef.coloring;
updateDisabledModifiers(measure);
updateModifiers(measure);
}

/**
Expand Down Expand Up @@ -333,7 +336,8 @@ function getModifiers(measure) {
}

function getBase(measure) {
return measure.base || (measure.qDef && measure.qDef.base);
const base = measure.base || (measure.qDef && measure.qDef.base);
return base || getBaseFromActiveModifier(measure);
}

function getLibraryId(measure) {
Expand Down Expand Up @@ -635,14 +639,14 @@ function updateIfChanged({ oldProperties, newProperties, model }) {
}

function getBaseFromActiveModifier(measure) {
const { modifiers } = measure.qDef;
const modifiers = getModifiers(measure);
for (let i = 0; i < modifiers.length; i++) {
const modifier = modifiers[i];
if (availableModifiers[modifier.type] && !modifier.disabled && modifier.base && modifier.outputExpression === measure.qDef.qDef) {
measure.qDef.base = extend(true, {}, modifier.base);
return;
if (availableModifiers[modifier.type] && !modifier.disabled && modifier.base && (!measure.qDef || modifier.outputExpression === measure.qDef.qDef)) {
return modifier.base;
}
}
return undefined;
}

function applyMeasureModifiers({
Expand All @@ -654,7 +658,10 @@ function applyMeasureModifiers({
let activeModifiersPerMeasure = 0;
// For forward and backward compatibility
if (!measureBase.isValid(measure)) {
getBaseFromActiveModifier(measure);
const base = getBaseFromActiveModifier(measure);
if (base) {
measure.qDef.base = extend(true, {}, base);
}
}
if (!measureBase.isValid(measure)) {
measureBase.initBase(measure, true);
Expand Down Expand Up @@ -823,7 +830,7 @@ function updateMeasuresProperties({
dimensionAndFieldList: list,
});
}
updateDisabledModifiers(measure);
updateModifiers(measure);
});
},
));
Expand Down

0 comments on commit ef6d80d

Please sign in to comment.