From 5a08e81aabdfb32b68f713fc180a8ee910377031 Mon Sep 17 00:00:00 2001 From: Jukka Kurkela Date: Thu, 27 Jun 2019 08:40:11 +0300 Subject: [PATCH] Reduce complexity --- src/controllers/controller.bar.js | 16 +++++++++------- src/scales/scale.linear.js | 25 ++++++++++++++++++------- 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/src/controllers/controller.bar.js b/src/controllers/controller.bar.js index 0eabca186cf..1757d78948a 100644 --- a/src/controllers/controller.bar.js +++ b/src/controllers/controller.bar.js @@ -118,7 +118,7 @@ function getMatchingVisibleMetas(scale) { var isHorizontal = scale.isHorizontal(); return scale.chart._getSortedVisibleDatasetMetas() .filter(function(meta) { - return meta.bar && isHorizontal ? meta.xAxisID === scale.id : meta.yAxisID === scale.id; + return meta.bar && (isHorizontal ? meta.xAxisID === scale.id : meta.yAxisID === scale.id); }); } @@ -216,9 +216,8 @@ module.exports = DatasetController.extend({ */ _getStacks: function(last) { var me = this; - var chart = me.chart; var scale = me._getIndexScale(); - var metasets = chart._getSortedVisibleDatasetMetas(); + var metasets = getMatchingVisibleMetas(scale); var stacked = scale.options.stacked; var ilen = metasets.length; var stacks = []; @@ -226,10 +225,13 @@ module.exports = DatasetController.extend({ for (i = 0; i < ilen; ++i) { meta = metasets[i]; - if (meta.bar && - (stacked === false || - (stacked === true && stacks.indexOf(meta.stack) === -1) || - (stacked === undefined && (meta.stack === undefined || stacks.indexOf(meta.stack) === -1)))) { + // stacked | meta.stack + // | found | not found | undefined + // false | x | x | x + // true | | x | + // undefined | | x | x + if (stacked === false || stacks.indexOf(meta.stack) === -1 || + (stacked === undefined && meta.stack === undefined)) { stacks.push(meta.stack); } if (meta.index === last) { diff --git a/src/scales/scale.linear.js b/src/scales/scale.linear.js index 88ad8b365ea..460ea964904 100644 --- a/src/scales/scale.linear.js +++ b/src/scales/scale.linear.js @@ -41,6 +41,19 @@ function getOrCreateStack(stacks, stacked, meta) { return stacks[key]; } +function isInvalidOrHidden(value, meta, i) { + return isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden; +} + +function initStackIndex(pos, neg, i) { + pos[i] = pos[i] || 0; + neg[i] = neg[i] || 0; +} + +function isNegative(value) { + return value.min < 0 || value.max < 0; +} + function stackData(scale, stacks, meta, data) { var opts = scale.options; var stacked = opts.stacked; @@ -51,17 +64,16 @@ function stackData(scale, stacks, meta, data) { var i, value; for (i = 0; i < ilen; ++i) { + initStackIndex(pos, neg, i); + value = scale._parseValue(data[i]); - if (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden) { + if (isInvalidOrHidden(value, meta, i)) { continue; } - pos[i] = pos[i] || 0; - neg[i] = neg[i] || 0; - if (opts.relativePoints) { pos[i] = 100; - } else if (value.min < 0 || value.max < 0) { + } else if (isNegative(value)) { neg[i] += value.min; } else { pos[i] += value.max; @@ -75,8 +87,7 @@ function updateMinMax(scale, meta, data) { for (i = 0; i < ilen; ++i) { value = scale._parseValue(data[i]); - - if (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden) { + if (isInvalidOrHidden(value, meta, i)) { continue; }