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
JavaScript
/**
* 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' }
];