From 6a7260221fd5ea792ee0915c788d407fb386fe68 Mon Sep 17 00:00:00 2001 From: Jae Sung Park Date: Wed, 14 Nov 2018 14:53:38 +0900 Subject: [PATCH] fix(shape): Prevent when non-existed data.hide is given (#650) Add preventing condition to make sure calculating ratio value Ref #623 Close #650 --- spec/internals/data-spec.js | 2 ++ src/data/data.js | 17 +++++++++-------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/spec/internals/data-spec.js b/spec/internals/data-spec.js index 47aec27cb..8ab6474ab 100644 --- a/spec/internals/data-spec.js +++ b/spec/internals/data-spec.js @@ -1523,6 +1523,8 @@ describe("DATA", () => { ["data1", 230, null, 300], ["data2", 198, 87, null] ]; + + args.data.hide = ["false-data"]; }); it("check for null data", done => { diff --git a/src/data/data.js b/src/data/data.js index c184d98b8..c5b89747f 100644 --- a/src/data/data.js +++ b/src/data/data.js @@ -795,18 +795,19 @@ extend(ChartInternal.prototype, { let total = this.getTotalPerIndex(); if ($$.hiddenTargetIds.length) { - const hiddenSum = dataValues($$.hiddenTargetIds, false) - .reduce((acc, curr) => acc.map((v, i) => (isNumber(v) ? v : 0) + curr[i])); + let hiddenSum = dataValues($$.hiddenTargetIds, false); - total = total.map((v, i) => v - hiddenSum[i]); - } - - d.ratio = 0; + if (hiddenSum.length) { + hiddenSum = hiddenSum + .reduce((acc, curr) => acc.map((v, i) => (isNumber(v) ? v : 0) + curr[i])); - if (isNumber(d.value) && total && total[d.index] > 0) { - d.ratio = d.value / total[d.index]; + total = total.map((v, i) => v - hiddenSum[i]); + } } + d.ratio = isNumber(d.value) && total && total[d.index] > 0 ? + d.value / total[d.index] : 0; + ratio = d.ratio; } else if (type === "radar") { ratio = (parseFloat(Math.max(d.value, 0)) / $$.maxValue) * config.radar_size_ratio;