UNPKG

devexpress-reporting

Version:

DevExpress Reporting provides the capability to develop a reporting application to create and customize reports.

139 lines (138 loc) 7.21 kB
/** * DevExpress HTML/JS Reporting (designer\controls\xrPivotgrid.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 */ "use strict"; 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 pivotgridfield_1 = require("./pivotgrid/pivotgridfield"); var xrControl_1 = require("./xrControl"); var analytics_internal_1 = require("@devexpress/analytics-core/analytics-internal"); var analytics_utils_1 = require("@devexpress/analytics-core/analytics-utils"); var analytics_widgets_1 = require("@devexpress/analytics-core/analytics-widgets"); var ko = require("knockout"); var $ = require("jquery"); function comparerFields(firstField, secondField) { return firstField.areaIndex() - secondField.areaIndex(); } var XRPivotGridViewModel = (function (_super) { __extends(XRPivotGridViewModel, _super); function XRPivotGridViewModel(model, parent, serializer) { var _this = _super.call(this, model, parent, serializer) || this; _this.fields = analytics_utils_1.deserializeArray(model && model.Fields || [], function (item) { return new pivotgridfield_1.PivotGridFieldViewModel(item, _this, serializer); }); _this._disposables.push(_this.fields.subscribe(function () { ['FilterArea', 'DataArea', 'ColumnArea', 'RowArea'].forEach(function (area) { var areaFields = _this.getFieldsFromArea(area); for (var index = 0; index < areaFields.length; index++) { areaFields[index].areaIndex(index); } }); })); _this.addFieldToArea = function (area) { if (_this.lockedInUserDesigner()) return; var newField = new pivotgridfield_1.PivotGridFieldViewModel({ '@ControlType': 'PivotGridField', '@Area': area }, _this, serializer); newField.index(_this.fields().length); newField.areaIndex(_this.getFieldsFromArea(area).length); _this.fields.push(newField); }; _this._initCriteriaString(); return _this; } XRPivotGridViewModel.prototype.dispose = function () { _super.prototype.dispose.call(this); this.disposeObservableArray(this.fields); this.resetObservableArray(this.fields); }; XRPivotGridViewModel.prototype._initCriteriaString = function () { var _this = this; this.prefilter.criteriaString = new analytics_widgets_1.FilterStringOptions(this.prefilter._criteriaString); this.prefilter.criteriaString.helper.canChoiceParameters = false; this.prefilter.criteriaString.helper.canChoiceProperty = false; this.prefilter.criteriaString.helper.getDisplayPropertyName = function (path, name) { var field = analytics_internal_1.find(_this.fields.peek(), function (f) { return f.name() === name; }); return $.Deferred() .resolve(field ? field.getDisplayName() : name) .promise(); }; this.prefilter.parent = this; }; XRPivotGridViewModel.prototype.removeChild = function (selectedField) { this.fields.splice(this.fields().indexOf(selectedField), 1); }; XRPivotGridViewModel.prototype.getFieldsFromArea = function (area) { var result = []; result.push.apply(result, this.fields().filter(function (field) { return field.area() === area; })); return result.sort(comparerFields); }; XRPivotGridViewModel.prototype.getPath = function (propertyName) { return this.dsHelperProvider() && this.dsHelperProvider().getDataSourcePath(this.dataSource()); }; return XRPivotGridViewModel; }(xrControl_1.XRControlViewModel)); exports.XRPivotGridViewModel = XRPivotGridViewModel; var XRPivotGridSurface = (function (_super) { __extends(XRPivotGridSurface, _super); function XRPivotGridSurface(control, context) { var _this = _super.call(this, control, context) || this; _this.contenttemplate = 'dxrd-pivotgrid-content'; _this.selectiontemplate = 'dxrd-pivotgrid-selection'; _this._disposables.push(_this.filterFields = ko.pureComputed(function () { return _this.getAreaFields('FilterArea'); })); _this._disposables.push(_this.dataFields = ko.pureComputed(function () { return _this.getAreaFields('DataArea'); })); _this._disposables.push(_this.columnFields = ko.pureComputed(function () { return _this.getAreaFields('ColumnArea'); })); _this._disposables.push(_this.rowFields = ko.pureComputed(function () { return _this.getAreaFields('RowArea'); })); _this._disposables.push(_this.totalsHeight = ko.pureComputed(function () { return _this.columnFields().length > 0 ? _this.columnFields().length * pivotgridfield_1.PivotGridFieldViewModel.fieldHeight : pivotgridfield_1.PivotGridFieldViewModel.fieldHeight; })); _this._disposables.push(_this.rowHeaderHeight = ko.pureComputed(function () { return _this.totalsHeight() + (_this.dataFields().length > 0 ? pivotgridfield_1.PivotGridFieldViewModel.fieldHeight : 0) + 8; })); _this._disposables.push(_this.totalsDataFieldWidth = ko.pureComputed(function () { return _this.getTotalsAreaFieldWidth('DataArea', context.zoom()); })); _this._disposables.push(_this.totalsRowFieldWidth = ko.pureComputed(function () { return _this.getTotalsAreaFieldWidth('RowArea', context.zoom()); })); return _this; } XRPivotGridSurface.prototype._getChildrenHolderName = function () { return 'fields'; }; XRPivotGridSurface.prototype.getAreaFields = function (area) { return this.fields().filter(function (field) { return field.area() === area; }).sort(comparerFields); }; XRPivotGridSurface.prototype.getTotalsAreaFieldWidth = function (area, zoom) { var total = 0, areaFields = this.getAreaFields(area); areaFields.forEach(function (field) { total += field.rect().width; }); return areaFields.length > 0 ? total / zoom : 100; }; XRPivotGridSurface.prototype.getAdornTemplate = function () { return this.isIntersect() ? 'dxrd-intersect' : ''; }; XRPivotGridSurface.prototype.isThereIntersectionWithChildCollection = function () { return false; }; return XRPivotGridSurface; }(xrControl_1.XRControlSurface)); exports.XRPivotGridSurface = XRPivotGridSurface;