]> git.ipfire.org Git - thirdparty/Chart.js.git/commitdiff
Fix an error in the scale service that prevented the chart from filling the canvas...
authorEvert Timberg <evert.timberg@gmail.com>
Mon, 18 May 2015 14:27:39 +0000 (10:27 -0400)
committerEvert Timberg <evert.timberg@gmail.com>
Mon, 18 May 2015 14:27:39 +0000 (10:27 -0400)
src/Chart.Scale.js

index 681f44bc83d2b5729bb1d9473cfea3990c21e301..e07aacb036344e717ac8e50663e7088a953fba56 100644 (file)
                                var horizontalScaleHeight = (height - chartHeight) / (topScales.length + bottomScales.length);
                                
                                // Step 4;
-                               var scalesToMinSize = {};
+                               var minimumScaleSizes = [];
                                
                                var verticalScaleMinSizeFunction = function(scaleInstance) {
                                        var minSize = scaleInstance.fit(verticalScaleWidth, chartHeight);
-                                       scalesToMinSize[scaleInstance] = minSize;
+                                       minimumScaleSizes.push({
+                                               horizontal: false,
+                                               minSize: minSize,
+                                               scale: scaleInstance,
+                                       });
                                };
                                
                                var horizontalScaleMinSizeFunction = function(scaleInstance) {
                                        var minSize = scaleInstance.fit(chartWidth, horizontalScaleHeight);
-                                       scalesToMinSize[scaleInstance] = minSize;
+                                       minimumScaleSizes.push({
+                                               horizontal: true,
+                                               minSize: minSize,
+                                               scale: scaleInstance,
+                                       });
                                };
                                
                                // vertical scales
                                var maxChartHeight = height - (2 * yPadding);
                                var maxChartWidth = width - (2 * xPadding);
                                
-                               var chartWidthReduceFunction = function(scaleInstance) {
-                                       maxChartWidth -= scalesToMinSize[scaleInstance].width;
-                               };
-                               
-                               var chartHeightReduceFunction = function(scaleInstance) {
-                                       maxChartHeight -= scalesToMinSize[scaleInstance].height;
-                               };
-                               
-                               helpers.each(leftScales, chartWidthReduceFunction);
-                               helpers.each(rightScales, chartWidthReduceFunction);
-                               helpers.each(topScales, chartHeightReduceFunction);
-                               helpers.each(bottomScales, chartHeightReduceFunction);
+                               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
                                var verticalScaleFitFunction = function(scaleInstance) {
-                                       var minSize = scalesToMinSize[scaleInstance];
-                                       scaleInstance.fit(minSize.width, maxChartHeight);
+                                       var wrapper = helpers.findNextWhere(minimumScaleSizes, function(wrapper) {
+                                               return wrapper.scale === scaleInstance;
+                                       });
+
+                                       if (wrapper) {
+                                               scaleInstance.fit(wrapper.minSize.width, maxChartHeight);
+                                       }
                                };
                                
                                var horizontalScaleFitFunction = function(scaleInstance) {
-                                       var minSize = scalesToMinSize[scaleInstance];
-                                       scaleInstance.fit(maxChartWidth, minSize.width);
+                                       var wrapper = helpers.findNextWhere(minimumScaleSizes, function(wrapper) {
+                                               return wrapper.scale === scaleInstance;
+                                       });
+
+                                       if (wrapper) {
+                                               scaleInstance.fit(maxChartWidth, wrapper.minSize.width);
+                                       }
                                };
                                
                                helpers.each(leftScales, verticalScaleFitFunction);