]> git.ipfire.org Git - thirdparty/Chart.js.git/commitdiff
Update scale fitting to prevent horizontal scales from jumping around.
authoretimberg <evert.timberg@gmail.com>
Wed, 2 Dec 2015 02:01:13 +0000 (21:01 -0500)
committeretimberg <evert.timberg@gmail.com>
Wed, 2 Dec 2015 02:01:13 +0000 (21:01 -0500)
src/core/core.scaleService.js

index a1c1f1c207758c898d7bf5cb4213b22865c6c3db..01908f76d16c371d42785b551e04669babcfe254 100644 (file)
@@ -93,6 +93,8 @@
                                var horizontalScaleHeight = (height - chartHeight) / (topScales.length + bottomScales.length);
 
                                // Step 4;
+                               var maxChartHeight = height - (2 * yPadding);
+                               var maxChartWidth = width - (2 * xPadding);
                                var minimumScaleSizes = [];
 
                                var verticalScaleMinSizeFunction = function(scaleInstance) {
                                                minSize: minSize,
                                                scale: scaleInstance,
                                        });
+
+                                       maxChartWidth -= minSize.width;
                                };
 
                                var horizontalScaleMinSizeFunction = function(scaleInstance) {
-                                       var minSize = scaleInstance.update(chartWidth, horizontalScaleHeight);
+                                       var minSize = scaleInstance.update(maxChartWidth, horizontalScaleHeight);
                                        minimumScaleSizes.push({
                                                horizontal: true,
                                                minSize: minSize,
                                                scale: scaleInstance,
                                        });
+
+                                       maxChartHeight -= minSize.height;
                                };
 
                                // vertical scales
                                helpers.each(topScales, horizontalScaleMinSizeFunction);
                                helpers.each(bottomScales, horizontalScaleMinSizeFunction);
 
-                               // Step 5
-                               var maxChartHeight = height - (2 * yPadding);
-                               var maxChartWidth = width - (2 * xPadding);
-
-                               helpers.each(minimumScaleSizes, function(wrapper) {
-                                       if (wrapper.horizontal) {
-                                               maxChartHeight -= wrapper.minSize.height;
-                                       } else {
-                                               maxChartWidth -= wrapper.minSize.width;
-                                       }
-                               });
-
                                // At this point, maxChartHeight and maxChartWidth are the size the chart area could
                                // be if the axes are drawn at their minimum sizes.
 
-                               // Step 6
+                               // Steps 5 & 6
                                var verticalScaleFitFunction = function(scaleInstance) {
                                        var wrapper = helpers.findNextWhere(minimumScaleSizes, function(wrapper) {
                                                return wrapper.scale === scaleInstance;