UNPKG

devexpress-reporting

Version:

DevExpress Reporting provides the capability to develop a reporting application to create and customize reports.

92 lines (91 loc) 6.92 kB
/** * DevExpress HTML/JS Reporting (designer\dataObjects\parameters\parameterTypesHelper.js) * Version: 24.2.6 * Build date: Mar 18, 2025 * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED * License: https://www.devexpress.com/Support/EULAs/universal.xml */ import { DotnetTypes, enumValueConverter, floatValueConverter, integerValueConverter, parseDate } from '@devexpress/analytics-core/analytics-internal'; import { validateGuid } from '@devexpress/analytics-core/analytics-widgets-internal'; import { parseTime } from '@devexpress/analytics-core/analytics-utils'; export class ParameterTypesHelper { _getTypeInfo(typeName) { const values = ParameterTypesHelper.typeValues.filter((type) => { return type.value === typeName; }); if (values.length > 0) return values[0]; if (this.enumValueTypes?.length) { const enumValues = this.enumValueTypes.filter((enumInfo) => enumInfo.value === typeName); if (enumValues.length > 0) return enumValues[0]; } return null; } _tryConvertValue(value, typeName) { const condition = val => { return val !== void 0 && val !== null && !isNaN(typeof val === 'string' ? '' : val); }; if (!condition(value)) { return { isValid: false, newValue: null }; } const typeValue = this._getTypeInfo(typeName), newValue = (typeValue && typeValue.valueConverter) ? typeValue.valueConverter(value, this.getDefaultValue(typeName)) : value; return { isValid: condition(newValue), newValue: newValue }; } convertSingleValue(value, typeName) { const result = this._tryConvertValue(value, typeName); return result.isValid ? result.newValue : this.getDefaultValue(typeName); } getSpecifics(typeName) { const typeValue = this._getTypeInfo(typeName); return typeValue ? typeValue.specifics : 'default'; } getIcon(typeName) { const typeValue = this._getTypeInfo(typeName); return typeValue && typeValue.icon; } getDefaultValue(typeName) { const typeValue = this._getTypeInfo(typeName); let _value = typeValue ? typeValue.defaultValue : ''; if (_value === '' && !!this.knownEnums?.length) { const enumType = this.knownEnums.filter((enumInfo) => enumInfo.enumType === typeName)[0]; if (!!enumType) { _value = enumType.values[0]?.value ?? 0; } } else if (_value instanceof Date) { _value = new Date(_value); } return _value; } getEnumTypeValues() { if (!!this.knownEnums?.length) { const enumtypeValues = []; this.knownEnums.forEach(knownEnum => { enumtypeValues.push({ value: knownEnum.enumType, displayValue: knownEnum.enumType, defaultValue: knownEnum.values[0].value, specifics: 'Enum', valueConverter: function (val, defaultValue) { return enumValueConverter(val, defaultValue, knownEnum.values); } }); }); return enumtypeValues; } } constructor(knownEnums) { this.knownEnums = knownEnums; this.enumValueTypes = this.getEnumTypeValues(); } } ParameterTypesHelper.defaultGuidValue = '00000000-0000-0000-0000-000000000000'; ParameterTypesHelper.typeValues = [ { value: DotnetTypes.SystemString, displayValue: 'String', defaultValue: '', specifics: 'String', valueConverter: function (val) { return val.toString(); }, localizationId: 'UtilsUIStringId.Parameter_Type_String' }, { value: DotnetTypes.SystemDateTime, displayValue: 'Date and Time', defaultValue: new Date(new Date().setHours(0, 0, 0, 0)), specifics: 'DateTime', valueConverter: function (val) { return parseDate(val); }, localizationId: 'UtilsUIStringId.Parameter_Type_DateTime' }, { value: DotnetTypes.SystemDateOnly, displayValue: 'Date', defaultValue: new Date(new Date().setHours(0, 0, 0, 0)), specifics: 'Date', valueConverter: function (val) { return parseDate(val); }, localizationId: 'UtilsUIStringId.Parameter_Type_DateOnly' }, { value: DotnetTypes.SystemTimeOnly, displayValue: 'Time', defaultValue: new Date(new Date().setHours(0, 0, 0, 0)), specifics: 'Time', valueConverter: function (val) { return parseTime(val); }, localizationId: 'UtilsUIStringId.Parameter_Type_TimeOnly' }, { value: DotnetTypes.SystemInt16, displayValue: 'Number (16 bit integer)', defaultValue: '0', specifics: 'Integer', valueConverter: function (val, defaultValue) { return integerValueConverter(val, defaultValue, DotnetTypes.SystemInt16); }, localizationId: 'UtilsUIStringId.Parameter_Type_Int16' }, { value: DotnetTypes.SystemInt32, displayValue: 'Number (32 bit integer)', defaultValue: '0', specifics: 'Integer', valueConverter: function (val, defaultValue) { return integerValueConverter(val, defaultValue, DotnetTypes.SystemInt32); }, localizationId: 'UtilsUIStringId.Parameter_Type_Int32' }, { value: DotnetTypes.SystemInt64, displayValue: 'Number (64 bit integer)', defaultValue: '0', specifics: 'Integer', valueConverter: function (val, defaultValue) { return integerValueConverter(val, defaultValue, DotnetTypes.SystemInt64); }, localizationId: 'UtilsUIStringId.Parameter_Type_Int64' }, { value: DotnetTypes.SystemSingle, displayValue: 'Number (floating-point)', defaultValue: '0', specifics: 'Float', valueConverter: function (val, defaultValue) { return floatValueConverter(val, defaultValue, DotnetTypes.SystemSingle); }, localizationId: 'UtilsUIStringId.Parameter_Type_Float' }, { value: DotnetTypes.SystemDouble, displayValue: 'Number (double-precision floating-point)', defaultValue: '0', specifics: 'Float', valueConverter: function (val, defaultValue) { return floatValueConverter(val, defaultValue, DotnetTypes.SystemDouble); }, localizationId: 'UtilsUIStringId.Parameter_Type_Double' }, { value: DotnetTypes.SystemDecimal, displayValue: 'Number (decimal)', defaultValue: '0', specifics: 'Float', valueConverter: function (val, defaultValue) { return floatValueConverter(val, defaultValue, DotnetTypes.SystemDecimal); }, localizationId: 'UtilsUIStringId.Parameter_Type_Decimal' }, { value: DotnetTypes.SystemBoolean, displayValue: 'Boolean', defaultValue: false, specifics: 'Bool', valueConverter: function (val) { return String(val).toLowerCase() === 'true' ? true : (String(val).toLowerCase() === 'false' ? false : null); }, localizationId: 'UtilsUIStringId.Parameter_Type_Boolean' }, { value: DotnetTypes.SystemGuid, displayValue: 'Guid', defaultValue: ParameterTypesHelper.defaultGuidValue, valueConverter: function (val) { return validateGuid(val) ? val : ParameterTypesHelper.defaultGuidValue; }, specifics: 'guid', localizationId: 'UtilsUIStringId.Parameter_Type_Guid' } ];