devexpress-reporting
Version:
DevExpress Reporting provides the capability to develop a reporting application to create and customize reports.
320 lines (319 loc) • 16.2 kB
JavaScript
/**
* DevExpress HTML/JS Reporting (viewer\parameters\previewParametersViewModel.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 previewParameter_1 = require("./previewParameter");
var settings_1 = require("../settings");
var previewParameterHelper_1 = require("./previewParameterHelper");
var parameterHelper_1 = require("./parameterHelper");
var analytics_utils_1 = require("@devexpress/analytics-core/analytics-utils");
var ko = require("knockout");
var analytics_internal_1 = require("@devexpress/analytics-core/analytics-internal");
var PreviewParametersViewModel = (function (_super) {
__extends(PreviewParametersViewModel, _super);
function PreviewParametersViewModel(reportPreview, parameterHelper, enableKeyboardSupport) {
var _this = _super.call(this) || this;
_this._parameters = [];
_this._getLookUpValueRequest = function (argsObject) {
return analytics_internal_1.ajax(settings_1.HandlerUri(), 'getLookUpValues', encodeURIComponent(JSON.stringify(argsObject)), function (message, jqXHR, textStatus) { return _this._reportPreview._processError(analytics_utils_1.getLocalization('Cannot supply filtered lookup values to a report parameter editor', 'ASPxReportsStringId.WebDocumentViewer_GetLookUpValuesError'), jqXHR); });
};
_this._getDoneGetLookUpValueHandler = function () {
var parametersViewModel = _this;
return function (response) {
try {
if (!response || !response.parameters) {
return;
}
response.parameters.forEach(function (lookUpCollection) {
var matchedParameter = parametersViewModel._parameters.filter(function (p) { return p.path === lookUpCollection.Key; })[0];
if (!parametersViewModel._shouldProcessParameter(matchedParameter))
return;
parametersViewModel._setLookUpValues(matchedParameter, lookUpCollection.Value, matchedParameter.visible && !matchedParameter.allowNull);
});
}
finally {
parametersViewModel.parametersLoading(false);
}
};
};
_this._getFailGetLookUpValueHandler = function () {
var parametersViewModel = _this;
return function (jqXHRError) {
parametersViewModel.parametersLoading(false);
};
};
_this.restore = function () {
if (_this.parametersLoading()) {
return;
}
try {
_this.parametersLoading(true);
_this._parameters.forEach(function (parameter) {
if (!_this._shouldProcessParameter(parameter))
return;
parameter.lookUpValues(parameter._originalLookUpValues);
parameter.initialize(parameter._originalValue, _this.parameterHelper);
});
}
finally {
_this.parameterHelper.callbacks && _this.parameterHelper.callbacks.parametersReset && _this.parameterHelper.callbacks.parametersReset(_this, _this._parameters);
_this.parametersLoading(false);
}
};
_this.getInfo = ko.observable(null);
_this.needToRefreshLookUps = ko.observable(false);
_this.isEmpty = ko.observable(true);
_this.processInvisibleParameters = false;
_this.parametersLoading = ko.observable(false);
_this._reportPreview = reportPreview;
_this.parameterHelper = parameterHelper || new previewParameterHelper_1.PreviewParameterHelper();
_this.validateAndSubmit = function (params) {
var result = params && params.validationGroup && params.validationGroup.validate && params.validationGroup.validate();
if (!result || result.isValid)
_this.submit();
};
_this.submit = function () {
if (_this.parametersLoading())
return;
_this.parametersLoading(true);
var promise = reportPreview.startBuild();
promise && promise.done(function (val) { _this.parametersLoading(false); });
};
_this._disposables.push(reportPreview.originalParametersInfo.subscribe(function (originalParametersInfo) {
_this.initialize(originalParametersInfo);
}));
_this.initialize(reportPreview.originalParametersInfo());
var notEmpty = ko.pureComputed(function () { return !_this.isEmpty(); });
_this.tabInfo = new analytics_utils_1.TabInfoWithPropertyGrid({
text: 'Parameters',
template: 'dxrd-preview-parameters',
model: _this,
keyboardHelper: enableKeyboardSupport ? new analytics_internal_1.AccordionKeyboardHelper() : undefined,
localizationId: 'PreviewStringId.RibbonPreview_Parameters_Caption',
imageClassName: 'parameters',
imageTemplateName: 'dxrd-svg-tabs-parameters',
visible: notEmpty
});
var popupVisibleSwitch = ko.observable(false);
var popupVisible = ko.pureComputed({
read: function () {
return notEmpty() && popupVisibleSwitch();
},
write: function (newVal) {
return popupVisibleSwitch(newVal);
}
});
_this.popupInfo = { visible: popupVisible, notEmpty: notEmpty };
_this._disposables.push(_this.popupInfo);
return _this;
}
Object.defineProperty(PreviewParametersViewModel.prototype, "_visibleParameters", {
get: function () {
return this._parameters.filter(function (p) { return p.visible; });
},
enumerable: true,
configurable: true
});
PreviewParametersViewModel.prototype._shouldProcessParameter = function (param) {
return this.processInvisibleParameters || (param && param.visible);
};
PreviewParametersViewModel.prototype._convertLocalDateToUTC = function (localDate) {
return new Date(Date.UTC(localDate.getFullYear(), localDate.getMonth(), localDate.getDate(), localDate.getHours(), localDate.getMinutes(), localDate.getSeconds()));
};
PreviewParametersViewModel.prototype._add = function (parameterInfo) {
var _this = this;
var parameter = new previewParameter_1.PreviewParameter(parameterInfo, this.parameterHelper);
this._parameters.push(parameter);
var needToRefreshLookUps = this.needToRefreshLookUps() || (this._shouldProcessParameter(parameter)) && parameter.isFilteredLookUpSettings;
this.needToRefreshLookUps(needToRefreshLookUps);
if (this._shouldProcessParameter(parameter)) {
this._disposables.push((parameter.isMultiValueWithLookUp ? parameter._value : parameter.value).subscribe(function (newValue) {
if (!_this.parametersLoading() && _this.needToRefreshLookUps()) {
_this.getLookUpValues(parameter.path);
}
}));
}
if (!parameterInfo.Visible) {
return;
}
this.isEmpty(false);
this[previewParameterHelper_1.PreviewParameterHelper.getPrivatePropertyName(parameter.path)] = parameter.value;
var parameterPropertyName = previewParameterHelper_1.PreviewParameterHelper.fixPropertyName(parameter.path);
if (parameter.isMultiValue || !parameter.isTypesCurrentType(parameter.intTypes.concat(parameter.floatTypes), parameter.type)) {
this[parameterPropertyName] = parameter.value;
}
else {
this[parameterPropertyName] = ko.pureComputed({
read: function () {
var parseValue = parameter.value();
if (parseValue === null || parseValue === undefined) {
return parseValue;
}
if (parameter.isTypesCurrentType(parameter.intTypes, parameter.type)) {
parseValue = parseInt(parseValue);
}
else if (parameter.isTypesCurrentType(parameter.floatTypes, parameter.type)) {
parseValue = parseFloat(parseValue);
}
return parseValue;
},
write: function (newVal) {
var expandValue = newVal;
if (parameter.allowNull && (expandValue === '' || expandValue === undefined)) {
expandValue = null;
}
else if (parameter.isTypesCurrentType(parameter.intTypes, parameter.type)) {
expandValue = analytics_internal_1.integerValueConverter(expandValue, '0');
}
else if (parameter.isTypesCurrentType(parameter.floatTypes, parameter.type)) {
expandValue = analytics_internal_1.floatValueConverter(expandValue, '0');
}
parameter.value(expandValue);
}
});
}
};
PreviewParametersViewModel.prototype._setLookUpValues = function (parameter, lookUpValues, assignFirstLookUpValue) {
if (!lookUpValues) {
parameter.lookUpValues([]);
return;
}
parameter.lookUpValues(this.parameterHelper.mapLookUpValues(parameter.type, lookUpValues));
var _parameterValuesContainedInLookUps = this._getParameterValuesContainedInLookups(lookUpValues, parameter);
if (parameter.isMultiValue) {
parameter.initialize(_parameterValuesContainedInLookUps.length > 0 ? _parameterValuesContainedInLookUps : [], this.parameterHelper);
}
else {
parameter.initialize(_parameterValuesContainedInLookUps[0] && _parameterValuesContainedInLookUps[0].Value || (assignFirstLookUpValue && lookUpValues.length > 0 ? lookUpValues[0].Value : null), this.parameterHelper);
}
};
PreviewParametersViewModel.prototype._getParameterValuesContainedInLookups = function (parameterLookUpValues, parameter) {
var _this = this;
if (parameterLookUpValues) {
if (parameter.isMultiValue) {
var selectedItems = parameter.value().value();
return selectedItems.filter(function (item) { return _this._filterParameterValuesContainsInLookups(parameterLookUpValues, parameter.type, item).length > 0; });
}
else {
return this._filterParameterValuesContainsInLookups(parameterLookUpValues, parameter.type, parameter.value());
}
}
return [];
};
PreviewParametersViewModel.prototype._filterParameterValuesContainsInLookups = function (parameterLookUpValues, parameterType, value) {
var _this = this;
return parameterLookUpValues.filter(function (x) {
return previewParameter_1.PreviewParameter._compareValues(_this.parameterHelper.getValueConverter(parameterType)(x.Value), value);
});
};
PreviewParametersViewModel.prototype.initialize = function (originalParametersInfo) {
var _this = this;
this._parameters.forEach(function (usedParameter) {
delete _this[previewParameterHelper_1.PreviewParameterHelper.fixPropertyName(usedParameter.path)];
delete _this[previewParameterHelper_1.PreviewParameterHelper.getPrivatePropertyName(usedParameter.path)];
});
this._parameters = [];
if (!originalParametersInfo) {
this.isEmpty(true);
this.getInfo([]);
return;
}
this.parameterHelper.initialize(originalParametersInfo.knownEnums);
(originalParametersInfo.parameters || []).forEach(function (parameter) {
_this._add(parameter);
});
if (this._visibleParameters.length === 0) {
this.isEmpty(true);
}
var info = this._visibleParameters.map(function (parameter) {
return parameter.valueInfo();
});
this.getInfo(info);
if (this._reportPreview.documentId)
return;
if (!originalParametersInfo.shouldRequestParameters || this.isEmpty()) {
this.submit();
}
else {
this._reportPreview.removeEmptyPages();
this.tabInfo.active(true);
this.popupInfo.visible(true);
this._reportPreview.pageLoading(false);
}
};
PreviewParametersViewModel.prototype.getPathsAfterPath = function (parameterPath) {
var _this = this;
var startIndex = 0;
for (var index = 0; index < this._parameters.length; index++) {
if (this._parameters[index].path === parameterPath) {
startIndex = index + 1;
break;
}
}
var paths = this._parameters
.filter(function (param, index) {
return (_this._shouldProcessParameter(param) && param.isFilteredLookUpSettings && (index >= startIndex));
})
.map(function (x) { return x.path; });
return paths || [];
};
PreviewParametersViewModel.prototype.serializeParameters = function () {
var params = [], self = this;
this._parameters.forEach(function (parameter) {
var convertItem = function (item) {
return (parameter.type === 'System.DateTime' && !!item && (item instanceof Date)) ? self._convertLocalDateToUTC(item) : item;
};
var value = parameter.isMultiValueWithLookUp ? parameter._value() : parameter.value();
if (parameter.allowNull) {
if ((parameter.isMultiValue && Array.isArray(value) && value.length === 0) || value === '') {
value = null;
}
}
params.push({ Value: parameterHelper_1.ParameterHelper.getSerializationValue(value, convertItem), Key: parameter.path, TypeName: parameter.type });
});
return params;
};
PreviewParametersViewModel.prototype.isPropertyDisabled = function (name) {
return this.parametersLoading();
};
PreviewParametersViewModel.prototype.getLookUpValues = function (changedParameterPath) {
var _this = this;
var requiredParameterPaths = this.getPathsAfterPath(changedParameterPath);
if (!requiredParameterPaths || requiredParameterPaths.length === 0) {
return;
}
var argsObject = {
reportId: this._reportPreview.reportId,
reportUrl: this._reportPreview.reportUrl,
requiredParameterPaths: requiredParameterPaths,
parameters: this.serializeParameters(),
timeZoneOffset: 0 - new Date().getTimezoneOffset()
};
setTimeout(function () {
_this.parametersLoading(true);
_this._getLookUpValueRequest(argsObject)
.done(_this._getDoneGetLookUpValueHandler())
.fail(_this._getFailGetLookUpValueHandler());
}, 10);
};
return PreviewParametersViewModel;
}(analytics_utils_1.Disposable));
exports.PreviewParametersViewModel = PreviewParametersViewModel;