UNPKG

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
/** * 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); } }