devexpress-reporting
Version:
DevExpress Reporting provides the capability to develop a reporting application to create and customize reports.
109 lines (108 loc) • 4.86 kB
JavaScript
/**
* DevExpress HTML/JS Reporting (designer\dataObjects\parameters\rangeSettings.js)
* Version: 25.2.3
* Build date: Dec 15, 2025
* Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
* License: https://www.devexpress.com/Support/EULAs/universal.xml
*/
import { DotnetTypes, extend } from '@devexpress/analytics-core/analytics-internal';
import { isDateType, serializeParameterDate } from '@devexpress/analytics-core/analytics-utils';
import { editorTemplates } from '@devexpress/analytics-core/analytics-widgets';
import * as ko from 'knockout';
import { rangeBoundaryParameterInfos, rangeEditor, rangeSettingsInfos } from '../metadata/parameters/rangeSettings';
import { ObjectItem } from '../objectStorageItem';
import { createExpressionProperty } from './parameterExpressionBinding';
export class RangeParametersSettings extends ObjectItem {
constructor(model, dsHelperProvider, serializer) {
super(extend({ '@ObjectType': 'DevExpress.XtraReports.Parameters.RangeParametersSettings' }, model), dsHelperProvider, serializer);
}
_updateInfo(info) {
if (this._isEditing())
info.forEach(x => {
if (x.editor && x.editor === editorTemplates.getEditor('objecteditor'))
x.editor = rangeEditor;
});
}
preInitProperties(model, helper, serializer) {
super.preInitProperties(model, helper, serializer);
this._isEditing = ko.observable(false);
}
getInfo() {
const info = super.getInfo().concat(rangeSettingsInfos);
this._updateInfo(info);
return info;
}
initalizeRangeParameter(rangeParameter, parameter, namePostfix = '_Start') {
rangeParameter.parameterName(parameter.name + namePostfix);
rangeParameter.value(parameter.defaultValue);
}
assingParameterInfo(parameter) {
[this.startParameter(), this.endParameter()].forEach((rangeParameter) => {
rangeParameter.valueInfo = parameter.valueInfo;
rangeParameter.type = parameter.type;
rangeParameter._specifics(parameter.parameterTypesHelper.getSpecifics(parameter.type()));
!ko.unwrap(rangeParameter.value) && rangeParameter.setDefaultValue();
createExpressionProperty(rangeParameter, 'Value');
});
}
initializeParameters(parameter) {
this.assingParameterInfo(parameter);
this.initalizeRangeParameter(this.startParameter(), parameter);
this.initalizeRangeParameter(this.endParameter(), parameter, '_End');
}
}
export class RangeBoundaryParameter extends ObjectItem {
getInfo() {
if (this.valueInfo) {
const info = extend(true, [], rangeBoundaryParameterInfos);
let valueInfo = this.valueInfo();
if (this.type() === DotnetTypes.SystemDateTime) {
valueInfo = extend({}, this.valueInfo(), { editorOptions: { type: 'date' } });
this._specifics('datetime');
}
else if (this.type() === DotnetTypes.SystemDateOnly) {
valueInfo = extend({}, this.valueInfo(), { editorOptions: { type: 'date' } });
this._specifics('date');
}
else if (this.type() === DotnetTypes.SystemTimeOnly) {
valueInfo = extend({}, this.valueInfo(), { editorOptions: { type: 'time' } });
this._specifics('time');
}
info.splice(info.indexOf(info.filter((prop) => { return prop.propertyName === 'value'; })[0]), 1, valueInfo);
return info;
}
return rangeBoundaryParameterInfos;
}
setDefaultValue() {
if (this.type && isDateType(this.type())) {
!this.value && (this.value = ko.observable());
const date = new Date();
date.setHours(0, 0, 0, 0);
this.value(serializeParameterDate(date, this.type()));
}
}
constructor(model, dsHelperProvider, serializer) {
super(model, dsHelperProvider, serializer);
this._specifics = ko.observable('date');
this.templateName = 'dx-treelist-item';
}
get name() {
return this.parameterName();
}
get displayName() {
return this.parameterName();
}
get specifics() {
return this._specifics();
}
}
export class RangeStartParameter extends RangeBoundaryParameter {
constructor(model, dsHelperProvider, serializer) {
super(extend({ '@ObjectType': 'DevExpress.XtraReports.Parameters.RangeStartParameter' }, model), dsHelperProvider, serializer);
}
}
export class RangeEndParameter extends RangeBoundaryParameter {
constructor(model, dsHelperProvider, serializer) {
super(extend({ '@ObjectType': 'DevExpress.XtraReports.Parameters.RangeEndParameter' }, model), dsHelperProvider, serializer);
}
}