Compare commits

..

1 Commits

Author SHA1 Message Date
Albert Backenhof
de2a483e34 Fixed number formatting bugs
-Using whitespace as thousand separator created bad
 format.
-Percentage values always had two decimals.
-Percentage values weren't multiplied by 100.

Issue: QLIK-95907
2019-05-17 10:21:44 +02:00
4 changed files with 36 additions and 30 deletions

View File

@@ -129,14 +129,14 @@ DataCell.propTypes = {
export default DataCell;
function formatMeasurementValue (measurement, styling) {
if (isNaN(measurement.value)) {
return styling.symbolForNulls;
}
const isColumnPercentageBased = (/%/).test(measurement.format);
let formattedMeasurementValue = '';
if (isColumnPercentageBased) {
if (isNaN(measurement.value)) {
formattedMeasurementValue = styling.symbolForNulls;
} else {
formattedMeasurementValue = ApplyPreMask('0,00%', measurement.value);
}
formattedMeasurementValue = ApplyPreMask(measurement.format, measurement.value * 100);
} else {
let magnitudeDivider;
switch (measurement.magnitude.toLowerCase()) {
@@ -148,29 +148,29 @@ function formatMeasurementValue (measurement, styling) {
break;
default:
magnitudeDivider = 1;
break;
}
const formattingStringWithoutMagnitude = measurement.format.replace(/k|K|m|M/gi, '');
if (isNaN(measurement.value)) {
formattedMeasurementValue = styling.symbolForNulls;
} else {
let preFormatValue = measurement.value;
if (isColumnPercentageBased) {
preFormatValue *= 100;
}
switch (formattingStringWithoutMagnitude) {
case '#.##0':
formattedMeasurementValue = addSeparators((preFormatValue / magnitudeDivider), '.', ',', 0);
break;
case '#,##0':
formattedMeasurementValue = addSeparators((preFormatValue / magnitudeDivider), ',', '.', 0);
break;
default:
formattedMeasurementValue = ApplyPreMask(
formattingStringWithoutMagnitude,
(preFormatValue / magnitudeDivider)
);
break;
}
const formattingStringWithoutMagnitude = measurement.format.replace(/k|K|m|M|/gi, '');
switch (formattingStringWithoutMagnitude) {
case '#.##0':
formattedMeasurementValue
= addSeparators((measurement.value / magnitudeDivider), '.', ',', 0);
break;
case '#,##0':
formattedMeasurementValue
= addSeparators((measurement.value / magnitudeDivider), ',', '.', 0);
break;
case '# ##0':
case '# ##0':
formattedMeasurementValue
= addSeparators((measurement.value / magnitudeDivider), ' ', '.', 0);
break;
default:
formattedMeasurementValue = ApplyPreMask(
formattingStringWithoutMagnitude,
(measurement.value / magnitudeDivider)
);
break;
}
}
return formattedMeasurementValue;

View File

@@ -73,7 +73,7 @@ const DataTable = ({ data, general, qlik, renderData, styling }) => {
}
const { dimension1: dimension1Info, dimension2, measurement } = measurementData.parents;
const id = `${dimension1Info.elementNumber}-${dimension2 && dimension2.elementNumber}-${measurement.header}-${measurement.index}`;
const id = `${dimension1Info.elementNumber}-${dimension2 && dimension2.elementNumber}-${measurement.header}`;
return (
<DataCell
data={data}

View File

@@ -42,7 +42,7 @@ const HeadersTable = ({ data, general, qlik, styling, isKpi }) => {
baseCSS={baseCSS}
general={general}
hasSecondDimension={hasSecondDimension}
key={`${measurementEntry.displayValue}-${measurementEntry.name}-${measurementEntry.index}`}
key={`${measurementEntry.displayValue}-${measurementEntry.name}`}
measurement={measurementEntry}
styling={styling}
/>
@@ -104,7 +104,7 @@ const HeadersTable = ({ data, general, qlik, styling, isKpi }) => {
dimensionEntry={dimensionEntry}
general={general}
hasSecondDimension={hasSecondDimension}
key={`${measurementEntry.displayValue}-${measurementEntry.name}-${measurementEntry.index}-${dimensionEntry.name}`}
key={`${measurementEntry.displayValue}-${measurementEntry.name}-${dimensionEntry.name}`}
measurement={measurementEntry}
styling={styling}
/>

View File

@@ -12,6 +12,9 @@ export function ApplyPreMask (mask, value) { // aqui
return (addSeparators(value, '.', ',', 0));
case '+#,##0':
return (addSeparators(value, ',', '.', 0));
case '# ##0':
case '# ##0':
return (addSeparators(value, ' ', '.', 0));
default:
return (applyMask(mask.substring(0, mask.indexOf(';')), value));
}
@@ -29,6 +32,9 @@ export function ApplyPreMask (mask, value) { // aqui
return (`(${addSeparators(vMyValue, '.', ',', 0)})`);
case '-#,##0':
return (`(${addSeparators(vMyValue, ',', '.', 0)})`);
case '# ##0':
case '# ##0':
return (`(${addSeparators(vMyValue, ' ', '.', 0)})`);
default:
return (`(${applyMask(vMyMask, vMyValue)})`);
}