scichart
Version:
Fast WebGL JavaScript Charting Library and Framework
91 lines (90 loc) • 6.34 kB
JavaScript
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
if (typeof b !== "function" && b !== null)
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.TopAlignedOuterHorizontallyStackedAxisLayoutStrategy = void 0;
var Rect_1 = require("../../Core/Rect");
var LayoutStrategyType_1 = require("../../types/LayoutStrategyType");
var AxisLayoutHelpers_1 = require("./AxisLayoutHelpers");
var BaseAxisLayoutStrategy_1 = require("./BaseAxisLayoutStrategy");
/**
* The Horizontally Stacked Layout Strategy for Top Axes
*/
var TopAlignedOuterHorizontallyStackedAxisLayoutStrategy = /** @class */ (function (_super) {
__extends(TopAlignedOuterHorizontallyStackedAxisLayoutStrategy, _super);
function TopAlignedOuterHorizontallyStackedAxisLayoutStrategy() {
var _this = _super.call(this) || this;
_this.type = LayoutStrategyType_1.ELayoutStrategyType.TopStacked;
_this.isStacked = true;
_this.layoutAxisPartsStrategy = AxisLayoutHelpers_1.layoutAxisPartsTopStrategy;
return _this;
}
TopAlignedOuterHorizontallyStackedAxisLayoutStrategy.prototype.measureAxes = function (sciChartSurface, chartLayoutState, axes) {
var _this = this;
var _a;
var requiredSize = 0;
axes.forEach(function (axis) {
axis.measure();
_this.updateAxisLayoutState(axis);
var currentAxisRequiredSize = (0, AxisLayoutHelpers_1.getHorizontalAxisRequiredSize)(axis.axisLayoutState);
requiredSize = currentAxisRequiredSize > requiredSize ? currentAxisRequiredSize : requiredSize;
});
var firstStackedAxis = axes[0];
var lastStackedAxis = axes[axes.length - 1];
this.updateLeftAndRightChartLayoutState(chartLayoutState, firstStackedAxis === null || firstStackedAxis === void 0 ? void 0 : firstStackedAxis.axisLayoutState.additionalLeftSize, lastStackedAxis === null || lastStackedAxis === void 0 ? void 0 : lastStackedAxis.axisLayoutState.additionalRightSize);
var topViewportBorder = sciChartSurface.topViewportBorder, topCanvasBorder = sciChartSurface.topCanvasBorder, adjustedPadding = sciChartSurface.adjustedPadding;
requiredSize += topViewportBorder + topCanvasBorder + ((_a = adjustedPadding === null || adjustedPadding === void 0 ? void 0 : adjustedPadding.top) !== null && _a !== void 0 ? _a : 0);
chartLayoutState.topOuterAreaSize = Math.max(chartLayoutState.topOuterAreaSize, requiredSize);
};
TopAlignedOuterHorizontallyStackedAxisLayoutStrategy.prototype.layoutAxes = function (left, top, right, bottom, axes) {
var _this = this;
var totalAxisAreaWidth = right - left;
var firstAxis = axes[0];
var lastAxis = axes[axes.length - 1];
var axesWithDefinedLength = axes.filter(function (axis) { return axis.stackedAxisLength; });
var spaceWithoutBorders = axes.reduce(function (acc, axis) { return acc - axis.axisLayoutState.additionalBottomSize - axis.axisLayoutState.additionalTopSize; }, totalAxisAreaWidth +
(firstAxis === null || firstAxis === void 0 ? void 0 : firstAxis.axisLayoutState.additionalLeftSize) +
(lastAxis === null || lastAxis === void 0 ? void 0 : lastAxis.axisLayoutState.additionalRightSize));
var totalDefinedAxesLength = axesWithDefinedLength.reduce(function (acc, axis) { return acc + _this.calculateTotalAxisWidth(axis, spaceWithoutBorders); }, 0);
var availableSpaceForAxes = totalAxisAreaWidth +
(firstAxis === null || firstAxis === void 0 ? void 0 : firstAxis.axisLayoutState.additionalLeftSize) +
(lastAxis === null || lastAxis === void 0 ? void 0 : lastAxis.axisLayoutState.additionalRightSize) -
totalDefinedAxesLength;
if (availableSpaceForAxes < 0) {
throw new Error("Top stacked axes with defined size total ".concat(totalDefinedAxesLength, " pixels which is ").concat(-availableSpaceForAxes, " more than the space available"));
}
var defaultAxisReservedHeight = availableSpaceForAxes / (axes.length - axesWithDefinedLength.length);
var leftOffset = left - (firstAxis === null || firstAxis === void 0 ? void 0 : firstAxis.axisLayoutState.additionalLeftSize);
axes.forEach(function (axis) {
var _a = axis.axisLayoutState, axisSize = _a.axisSize, additionalLeftSize = _a.additionalLeftSize, additionalRightSize = _a.additionalRightSize, additionalBottomSize = _a.additionalBottomSize;
var bottomOffset = bottom - additionalBottomSize;
var topOffset = bottomOffset - axisSize;
var axisReservedHeight = axis.stackedAxisLength
? _this.calculateTotalAxisWidth(axis, spaceWithoutBorders)
: defaultAxisReservedHeight;
var rightOffset = leftOffset + axisReservedHeight - additionalRightSize;
leftOffset += additionalLeftSize;
axis.offset = leftOffset - left;
axis.axisLength = rightOffset - leftOffset;
axis.isPrimaryAxis = true;
axis.viewRect = Rect_1.Rect.createWithCoords(leftOffset, topOffset, rightOffset, bottomOffset);
leftOffset = rightOffset + additionalRightSize;
(0, AxisLayoutHelpers_1.layoutAxisParts)(axis, _this.layoutAxisPartsStrategy);
});
};
return TopAlignedOuterHorizontallyStackedAxisLayoutStrategy;
}(BaseAxisLayoutStrategy_1.BaseAxisLayoutStrategy));
exports.TopAlignedOuterHorizontallyStackedAxisLayoutStrategy = TopAlignedOuterHorizontallyStackedAxisLayoutStrategy;
;