devexpress-reporting
Version:
DevExpress Reporting provides the capability to develop a reporting application to create and customize reports.
81 lines (80 loc) • 4.76 kB
JavaScript
/**
* DevExpress HTML/JS Reporting (designer\bands\_printAcrossBandsPlaceHolder.js)
* Version: 20.2.13
* Build date: Apr 10, 2023
* Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED
* License: https://www.devexpress.com/Support/EULAs/universal.xml
*/
;
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 (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var xrVerticalBand_1 = require("./xrVerticalBand");
var analytics_utils_1 = require("@devexpress/analytics-core/analytics-utils");
var ko = require("knockout");
var PrintAcrossBandsPlaceHolder = (function (_super) {
__extends(PrintAcrossBandsPlaceHolder, _super);
function PrintAcrossBandsPlaceHolder(band) {
var _this = _super.call(this) || this;
_this.band = band;
_this._disposables.push(_this.isVisible = ko.computed(function () {
return band.printAcrossBands() && !_this.bandModel.parentModel().bands().filter(function (x) { return x instanceof xrVerticalBand_1.VerticalBandViewModel; }).length;
}), _this.absolutePositionY = ko.computed(function () {
var subbandsWithoutPrintAcrossBands = band.bandsHolder.bands().filter(function (subband) { return !subband.printAcrossBands(); });
if (subbandsWithoutPrintAcrossBands.length > 0) {
return subbandsWithoutPrintAcrossBands[0].absolutePosition.y();
}
var nextUntransparentSiblingBand = _this.findNextUntransparentSiblingBand(band);
if (!nextUntransparentSiblingBand) {
nextUntransparentSiblingBand = _this.findNextUntransparentSiblingBand(band.parent);
}
return nextUntransparentSiblingBand && nextUntransparentSiblingBand.absolutePosition.y();
}), _this.height = ko.computed(function () {
var firstBandWithoutAcross = _this.findFirstNonAcrossBand();
return firstBandWithoutAcross ? (firstBandWithoutAcross.absolutePosition.y() - _this.absolutePositionY()) : 0;
}));
return _this;
}
PrintAcrossBandsPlaceHolder.prototype.findNextUntransparentSiblingBand = function (band) {
var currentBandIndex = band.parent.bandsHolder.bands().indexOf(band);
return band.parent.bandsHolder.bands().filter(function (band, index) { return (!band.printAcrossBands || band.printAcrossBands && !band.printAcrossBands()) && index > currentBandIndex; })[0];
};
PrintAcrossBandsPlaceHolder.prototype.findFirstNonAcrossBand = function () {
var isSubband = this.bandModel.controlType === 'SubBand';
var bandHolder = isSubband ? this.band.parent.parent['bandsHolder'] : this.band.parent.bandsHolder;
var bandsWithoutAcross = [];
if (this.bandModel.controlType === 'GroupHeaderBand' || (isSubband && this.bandModel.parentModel().controlType === 'GroupHeaderBand')) {
var groupHeaderLevel = isSubband ? this.bandModel.parentModel()['level']() : this.bandModel.level();
bandsWithoutAcross = bandHolder.bands().filter(function (_band) { return (_band.getControlModel().controlType === 'GroupFooterBand' && _band.getControlModel().level() > groupHeaderLevel)
|| _band.getControlModel().controlType === 'PageFooterBand'
|| _band.getControlModel().controlType === 'ReportFooterBand'
|| _band.getControlModel().controlType === 'BottomMarginBand'; });
}
else if (this.bandModel.controlType === 'PageHeaderBand' || (isSubband && this.bandModel.parentModel().controlType === 'PageHeaderBand')) {
bandsWithoutAcross = bandHolder.bands().filter(function (_band) { return (_band.getControlModel().controlType === 'BottomMarginBand'); });
}
if (bandsWithoutAcross.length > 0) {
return bandsWithoutAcross[0];
}
};
Object.defineProperty(PrintAcrossBandsPlaceHolder.prototype, "bandModel", {
get: function () {
return this.band.getControlModel();
},
enumerable: true,
configurable: true
});
return PrintAcrossBandsPlaceHolder;
}(analytics_utils_1.Disposable));
exports.PrintAcrossBandsPlaceHolder = PrintAcrossBandsPlaceHolder;