devexpress-reporting
Version:
DevExpress Reporting provides the capability to develop a reporting application to create and customize reports.
160 lines (159 loc) • 8.98 kB
JavaScript
/**
* DevExpress HTML/JS Reporting (designer\wizard\pages\chooseSummaryOptionsPage.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 _masterDetailWizardUtils_1 = require("../internal/_masterDetailWizardUtils");
var addGroupingLevelPage_1 = require("./addGroupingLevelPage");
var pageId_1 = require("../pageId");
var analytics_utils_1 = require("@devexpress/analytics-core/analytics-utils");
var ko = require("knockout");
var $ = require("jquery");
var analytics_wizard_1 = require("@devexpress/analytics-core/analytics-wizard");
var ChooseSummaryOptionsPage = (function (_super) {
__extends(ChooseSummaryOptionsPage, _super);
function ChooseSummaryOptionsPage() {
var _this = _super.call(this) || this;
_this._allColumns = {};
_this._masterDetailColumns = {};
_this._toggleIgnoreNullValues = function () {
_this.ignoreNullValues(!_this.ignoreNullValues());
_this._onChange();
};
_this._summaryOptions = ko.observableArray([]);
_this.ignoreNullValues = ko.observable(false);
_this._template = 'dxrd-page-masterdetail-summary';
_this._reportTree = ko.observableArray([]);
_this._currentPath = ko.observable('');
_this._availableFields = ko.observableArray([]);
_this._summaryInfos = ko.observableArray([]);
_this._selectFieldToSummaryCaption = analytics_utils_1.getLocalization('Select fields and assign summary functions to them', 'ASPxReportsStringId.ReportDesigner_MasterDetailWizard_SummaryOptions_SelectFieldsAndSummaries');
_this._fieldsCaption = analytics_utils_1.getLocalization('Fields', 'DevExpress.XtraReports.UI.XRPivotGrid.Fields');
_this._summaryFunctionCaption = analytics_utils_1.getLocalization('Summary Functions', 'ASPxReportsStringId.ReportDesigner_MasterDetailWizard_SummaryOptions_SummaryFunctions');
_this._ignoreNullValuesCaption = analytics_utils_1.getLocalization('Ignore null values', 'ASPxReportsStringId.ReportDesigner_Wizard_SummaryOptions_IgnoreNullValues');
_this._disposables.push(_this._currentPath.subscribe(function (newPath) {
_this._changeQuery(newPath);
}));
return _this;
}
ChooseSummaryOptionsPage.prototype._createSummaryInfo = function () {
var _this = this;
var newItem = new _masterDetailWizardUtils_1.SummaryInfo();
this._disposables.push(newItem.field.subscribe(function (newValue) {
_this._createNewItemIfNeed();
}));
return newItem;
};
ChooseSummaryOptionsPage.prototype._createNewItemIfNeed = function () {
var _summaryInfos = this._summaryInfos.peek();
if (_summaryInfos.filter(function (item) { return !item.field(); }).length === 0 && _summaryInfos.length < this._availableFields.peek().length)
this._summaryInfos.push(this._createSummaryInfo());
var fieldNames = this._summaryInfos.peek().filter(function (item) { return !!item.field(); }).map(function (item) { return item.field().name; });
this._displayedFields[this._currentPath()] && this._displayedFields[this._currentPath()]().forEach(function (item) { return item.visible(fieldNames.indexOf(item.name) === -1); });
this._onChange();
};
ChooseSummaryOptionsPage.prototype._changeQuery = function (path) {
this._currentPath(path);
this._summaryInfoMapByDataMember[this._currentDataMember] = this._summaryInfos();
this._currentDataMember = path;
this._availableFields(this._masterDetailColumns[path] || []);
this._summaryInfos(this._summaryInfoMapByDataMember[path] || []);
this._createNewItemIfNeed();
};
ChooseSummaryOptionsPage.prototype._removeSummaryInfo = function (info) {
var index = this._summaryInfos.indexOf(info);
if (index === -1)
return;
this._summaryInfos.splice(index, 1);
this._createNewItemIfNeed();
this._onChange();
};
ChooseSummaryOptionsPage.prototype.canFinish = function () {
return true;
};
ChooseSummaryOptionsPage.prototype.initialize = function (state) {
var _this = this;
this._masterDetailColumns = $.extend(true, {}, state.masterDetailSummaryOptionsColumns);
this.ignoreNullValues(state.ignoreNullValuesForSummary);
this._reportTree(addGroupingLevelPage_1._fillTreeQueries([], state.masterDetailInfoCollection, 0));
this._currentDataMember = this._reportTree()[0].path;
var allColumnsTest = {};
this._reportTree().forEach(function (query) {
allColumnsTest[query.path] = state.masterDetailSummaryOptionsColumns[query.path] && state.masterDetailSummaryOptionsColumns[query.path].map(function (field) { return field.name; });
});
var changes = [];
$.each(allColumnsTest, function (key, value) {
changes = changes.concat(ko.utils.compareArrays(_this._allColumns[key], value));
});
var isColumnsChanged = changes.some(function (change, index, array) { return change.status != 'retained'; });
if (isColumnsChanged) {
this._allColumns = allColumnsTest;
this._summaryInfos([]);
this._summaryInfoMapByDataMember = {};
this._displayedFields = {};
$.each(this._masterDetailColumns, function (key, value) {
_this._displayedFields[key] = ko.observableArray([]);
_this._displayedFields[key](value.map(function (item) {
return { name: item.name, displayName: item.displayName, visible: ko.observable(true) };
}));
});
}
else {
this._summaryInfos(this._summaryInfoMapByDataMember[this._currentDataMember]);
}
this._changeQuery(this._currentDataMember);
return $.Deferred().resolve().promise();
};
ChooseSummaryOptionsPage.prototype.commit = function () {
this._summaryInfoMapByDataMember[this._currentDataMember] = this._summaryInfos();
var masterDetailSummaryOptionsColumns = this._masterDetailColumns;
var masterDetailSummariesInfo = {};
$.each(this._summaryInfoMapByDataMember, function (key, value) {
masterDetailSummariesInfo[key] = value.filter(function (item) { return !!item.field(); }).map(function (summaryOption) { return ({ column: summaryOption.field(), summaryFunctions: summaryOption.value.value().map(function (item) { return summaryOption.value.dataSource.map(function (option) { return option.value; }).indexOf(item); }) }); });
});
var ignoreNullValuesForSummary = this.ignoreNullValues();
return $.Deferred().resolve({
masterDetailSummaryOptionsColumns: masterDetailSummaryOptionsColumns,
masterDetailSummariesInfo: masterDetailSummariesInfo,
ignoreNullValuesForSummary: ignoreNullValuesForSummary
}).promise();
};
return ChooseSummaryOptionsPage;
}(analytics_wizard_1.WizardPageBase));
exports.ChooseSummaryOptionsPage = ChooseSummaryOptionsPage;
function _registerChooseSummaryOptionsPage(factory) {
factory.registerMetadata(pageId_1.ReportWizardPageId.ChooseSummaryOptionsPage, {
create: function () {
return new ChooseSummaryOptionsPage();
},
description: analytics_utils_1.getLocalization('Choose summary functions to calculate in reports.', 'ReportBoxDesignerStringId.Wizard_MasterDetailChooseSummaryOptions_Description'),
template: 'dxrd-page-masterdetail-summary',
getState: function (state) { return state; },
setState: function (data, state) {
state.masterDetailSummariesInfo = data.masterDetailSummariesInfo;
state.ignoreNullValuesForSummary = data.ignoreNullValuesForSummary;
},
resetState: function (state, defaultState) {
state.masterDetailSummariesInfo = defaultState.masterDetailSummariesInfo;
state.ignoreNullValuesForSummary = defaultState.ignoreNullValuesForSummary;
}
});
}
exports._registerChooseSummaryOptionsPage = _registerChooseSummaryOptionsPage;