devexpress-reporting
Version:
DevExpress Reporting provides the capability to develop a reporting application to create and customize reports.
216 lines (215 loc) • 10.4 kB
JavaScript
/**
* DevExpress HTML/JS Reporting (designer\wizard\pages\chooseSummaryOptionsSection.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 _masterDetailWizardUtils_1 = require("../internal/_masterDetailWizardUtils");
var addGroupingLevelPage_1 = require("./addGroupingLevelPage");
var chooseSummaryOptionsPage_1 = require("./chooseSummaryOptionsPage");
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 AddSummaryFieldsPage = (function (_super) {
__extends(AddSummaryFieldsPage, _super);
function AddSummaryFieldsPage() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this._toggleIgnoreNullValues = function () {
_this.ignoreNullValues(!_this.ignoreNullValues());
_this._onChange();
};
_this._fieldListProvider = ko.observable(null);
_this.ignoreNullValues = ko.observable(false);
_this._template = 'dxrd-page-masterdetail-summary-section';
_this._reportTree = ko.observableArray([]);
_this._availableFieldsCount = ko.observable(0);
_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('Field', 'ASPxReportsStringId.ReportDesigner_Wizard_SummaryFields_Text');
_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');
return _this;
}
AddSummaryFieldsPage.prototype.dispose = function () {
_super.prototype.dispose.call(this);
this.disposeObservableArray(this._summaryInfos);
};
AddSummaryFieldsPage.prototype._fillTreeQueries = function (tree, queries, availableQueries) {
addGroupingLevelPage_1._fillTreeQueries([], queries, 0).forEach(function (value) {
if (availableQueries[value.path]) {
var fields = value.fields.filter(function (x) { return availableQueries[value.path].some(function (field) { return field.name === x.name; }); });
var treeItem = $.extend(true, {}, value);
treeItem.fields = fields;
tree.push(treeItem);
}
});
return tree;
};
AddSummaryFieldsPage.prototype._createSummaryInfo = function () {
var _this = this;
var newItem = new _masterDetailWizardUtils_1.SummaryInfoFieldlist();
newItem._disposables.push(newItem.selectedPath.subscribe(function (newVal) {
if (!newVal)
newItem.field(null);
else {
_this._fieldListProvider().getItemByPath({
fullPath: newVal,
path: newVal
}).done(function (item) {
newItem.field(item);
_this._createNewItemIfNeed();
});
}
_this._onChange();
}));
newItem._disposables.push(newItem.functionNames.subscribe(function (newVal) {
_this._onChange();
}));
return newItem;
};
AddSummaryFieldsPage.prototype._createNewItemIfNeed = function () {
var _summaryInfos = this._summaryInfos.peek();
if (_summaryInfos.filter(function (item) { return !item.field(); }).length === 0 && _summaryInfos.length < this._availableFieldsCount())
this._summaryInfos.push(this._createSummaryInfo());
};
AddSummaryFieldsPage.prototype._getParentName = function (parent) {
if (parent.parent) {
return [this._getParentName(parent.parent), parent.displayName].join('.');
}
return parent.displayName;
};
AddSummaryFieldsPage.prototype._flat = function (fields, parent) {
var _this = this;
var flatList = fields.map(function (x) {
if (x.path) {
x.name = x.path;
}
else {
x.path = [parent.path, x.name].join('.');
}
if (parent) {
x.parent = {
path: parent.path,
displayName: _this._getParentName(parent)
};
}
return x;
});
fields.forEach(function (x) {
if (x.fields) {
flatList = flatList.concat(_this._flat(x.fields, x));
}
});
return flatList;
};
AddSummaryFieldsPage.prototype._removeSummaryInfo = function (info) {
var index = this._summaryInfos.indexOf(info);
if (index === -1)
return;
info.dispose();
this._summaryInfos.splice(index, 1);
if (this._summaryInfos.length === 0) {
this._createNewItemIfNeed();
}
this._onChange();
};
AddSummaryFieldsPage.prototype.canFinish = function () {
return true;
};
AddSummaryFieldsPage.prototype._updateSummaries = function (flatlist) {
var _this = this;
this._summaryInfos().filter(function (x) { return x.field() && flatlist.every(function (item) { return item.path !== x.field().path; }); }).forEach(function (item) {
_this._summaryInfos().splice(_this._summaryInfos().indexOf(item), 1);
});
this._summaryInfos.valueHasMutated();
};
AddSummaryFieldsPage.prototype.initialize = function (state) {
var _this = this;
this.ignoreNullValues(state.ignoreNullValuesForSummary);
this._reportTree(this._fillTreeQueries([], state.masterDetailInfoCollection, state.masterDetailSummaryOptionsColumns));
var flatList = this._flat(this._reportTree());
this._updateSummaries(flatList);
this._availableFieldsCount(this._reportTree().reduce(function (count, item) {
count += item.fields.length;
return count;
}, 0));
this._fieldListProvider({
getItemByPath: function (path) {
return $.Deferred().resolve(flatList.filter(function (x) { return x.path === path.fullPath; })[0]).promise();
},
getItems: function (path) {
var deferred = $.Deferred();
if (path.fullPath === '') {
deferred.resolve(_this._reportTree().filter(function (root) { return root.fields.some(function (field) { return _this._summaryInfos().every(function (summaryInfo) {
return summaryInfo.field() !== field;
}); }); }));
}
else {
var item = _this._reportTree().filter(function (x) { return x.path === path.fullPath; })[0];
if (item) {
deferred.resolve(item.fields.filter(function (field) {
return _this._summaryInfos().every(function (summaryInfo) { return summaryInfo.field() !== field; });
}));
}
else
deferred.resolve([]);
}
return deferred.promise();
}
});
this._createNewItemIfNeed();
return $.Deferred().resolve().promise();
};
AddSummaryFieldsPage.prototype.commit = function () {
var masterDetailSummariesInfo = {};
this._summaryInfos().forEach(function (summaryOption) {
var field = summaryOption.field();
if (!field)
return;
if (!masterDetailSummariesInfo[field['parent'].path]) {
masterDetailSummariesInfo[field['parent'].path] = [];
}
masterDetailSummariesInfo[field['parent'].path].push({
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({
masterDetailSummariesInfo: masterDetailSummariesInfo,
ignoreNullValuesForSummary: ignoreNullValuesForSummary
}).promise();
};
return AddSummaryFieldsPage;
}(analytics_wizard_1.WizardPageBase));
exports.AddSummaryFieldsPage = AddSummaryFieldsPage;
function _registerAddSummaryFieldsPage(factory) {
chooseSummaryOptionsPage_1._registerChooseSummaryOptionsPage(factory);
var meta = factory.getMetadata(pageId_1.ReportWizardPageId.ChooseSummaryOptionsPage);
meta.create = function () {
return new AddSummaryFieldsPage();
};
meta['disabledText'] = analytics_utils_1.getLocalization('To add a summary field to the report, select a data field (numeric, date-time or boolean) and ensure that it is not used in groups.', 'ASPxReportsStringId.ReportDesigner_Wizard_AddSummaryFields_Placeholder');
meta.template = 'dxrd-page-masterdetail-summary-section';
}
exports._registerAddSummaryFieldsPage = _registerAddSummaryFieldsPage;