(min, max, model, barWidthAndOffset)
| 37737 | } |
| 37738 | |
| 37739 | function adjustScaleForOverflow(min, max, model, barWidthAndOffset) { |
| 37740 | |
| 37741 | // Get Axis Length |
| 37742 | var axisExtent = model.axis.getExtent(); |
| 37743 | var axisLength = axisExtent[1] - axisExtent[0]; |
| 37744 | |
| 37745 | // Get bars on current base axis and calculate min and max overflow |
| 37746 | var barsOnCurrentAxis = retrieveColumnLayout(barWidthAndOffset, model.axis); |
| 37747 | if (barsOnCurrentAxis === undefined) { |
| 37748 | return {min: min, max: max}; |
| 37749 | } |
| 37750 | |
| 37751 | var minOverflow = Infinity; |
| 37752 | each$1(barsOnCurrentAxis, function (item) { |
| 37753 | minOverflow = Math.min(item.offset, minOverflow); |
| 37754 | }); |
| 37755 | var maxOverflow = -Infinity; |
| 37756 | each$1(barsOnCurrentAxis, function (item) { |
| 37757 | maxOverflow = Math.max(item.offset + item.width, maxOverflow); |
| 37758 | }); |
| 37759 | minOverflow = Math.abs(minOverflow); |
| 37760 | maxOverflow = Math.abs(maxOverflow); |
| 37761 | var totalOverFlow = minOverflow + maxOverflow; |
| 37762 | |
| 37763 | // Calulate required buffer based on old range and overflow |
| 37764 | var oldRange = max - min; |
| 37765 | var oldRangePercentOfNew = (1 - (minOverflow + maxOverflow) / axisLength); |
| 37766 | var overflowBuffer = ((oldRange / oldRangePercentOfNew) - oldRange); |
| 37767 | |
| 37768 | max += overflowBuffer * (maxOverflow / totalOverFlow); |
| 37769 | min -= overflowBuffer * (minOverflow / totalOverFlow); |
| 37770 | |
| 37771 | return {min: min, max: max}; |
| 37772 | } |
| 37773 | |
| 37774 | function niceScaleExtent(scale, model) { |
| 37775 | var extentInfo = getScaleExtent(scale, model); |
no test coverage detected