UNPKG

react-application-core

Version:

A react-based application core for the business applications.

466 lines 18.3 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.FieldConverter = void 0; var R = require("ramda"); var inversify_1 = require("inversify"); var ts_smart_logger_1 = require("ts-smart-logger"); var definition_1 = require("../../definition"); var util_1 = require("../../util"); var definitions_interface_1 = require("../../definitions.interface"); var di_1 = require("../../di"); var FieldConverter = /** @class */ (function () { /** * @stable [09.01.2020] */ function FieldConverter() { this.converters = new Map(); this.fromNamedEntityToRawDataLabeledValueEntity = this.fromNamedEntityToRawDataLabeledValueEntity.bind(this); this.zipCodeEntityAsDisplayValue = this.zipCodeEntityAsDisplayValue.bind(this); this.register({ from: definition_1.FieldConverterTypesEnum.GEO_CODER_RESULT, to: definition_1.FieldConverterTypesEnum.PLACE_ENTITY, converter: util_1.asPlaceEntity, }); this.register({ from: definition_1.FieldConverterTypesEnum.PLACE_ENTITY, to: definition_1.FieldConverterTypesEnum.DISPLAY_VALUE, converter: this.$fromPlaceEntityToDisplayValue.bind(this), }); this.register({ from: definition_1.FieldConverterTypesEnum.ZIP_CODE_ENTITY, to: definition_1.FieldConverterTypesEnum.DISPLAY_VALUE, converter: this.zipCodeEntityAsDisplayValue, }); this.register({ from: definition_1.FieldConverterTypesEnum.PLACE_ENTITY, to: definition_1.FieldConverterTypesEnum.PLACE_PARAMETER, converter: this.$fromPlaceEntityToPlaceParameter.bind(this), }); this.register({ from: definition_1.FieldConverterTypesEnum.SELECT_VALUE, to: definition_1.FieldConverterTypesEnum.DISPLAY_VALUE, converter: this.$fromSelectValueToDisplayValue.bind(this), }); this.register({ from: definition_1.FieldConverterTypesEnum.SELECT_VALUE, to: definition_1.FieldConverterTypesEnum.ID, converter: this.$fromSelectValueToId.bind(this), }); this.register({ from: definition_1.FieldConverterTypesEnum.DATES_RANGE_ENTITY, to: definition_1.FieldConverterTypesEnum.DATES_RANGE_VALUE, converter: this.datesRangeEntityAsDatesRangeValue, }); this.register({ from: definition_1.FieldConverterTypesEnum.DATES_RANGE_VALUE, to: definition_1.FieldConverterTypesEnum.DATES_RANGE_ENTITY, converter: this.datesRangeValueAsDatesRangeEntity, }); this.register({ from: definition_1.FieldConverterTypesEnum.OAUTH_JWT_DECODED_INFO, to: definition_1.FieldConverterTypesEnum.USER_ENTITY, converter: this.$fromOAuthJwtDecodedInfoToUserEntity.bind(this), }); this.register({ from: definition_1.FieldConverterTypesEnum.CRON_EXPRESSION, to: definition_1.FieldConverterTypesEnum.CRON_PARAMETER, converter: this.$fromCronExpressionToCronParameter.bind(this), }); this.register({ from: definition_1.FieldConverterTypesEnum.NAMED_ENTITY, to: definition_1.FieldConverterTypesEnum.RAW_DATA_LABELED_VALUE_ENTITY, converter: this.$fromNamedEntityToRawDataLabeledValueEntity.bind(this), }); this.register({ from: definition_1.FieldConverterTypesEnum.MULTI_FIELD_VALUE, to: definition_1.FieldConverterTypesEnum.ENTITIES, converter: this.$fromMultiFieldValueToEntities.bind(this), }); this.register({ from: definition_1.FieldConverterTypesEnum.MULTI_FIELD_VALUE, to: definition_1.FieldConverterTypesEnum.EDIT_ENTITIES, converter: this.$fromMultiFieldValueToEditEntities.bind(this), }); this.register({ from: definition_1.FieldConverterTypesEnum.MULTI_FIELD_VALUE, to: definition_1.FieldConverterTypesEnum.DEFINED_ENTITIES, converter: this.$fromMultiFieldValueToDefinedEntities.bind(this), }); this.register({ from: definition_1.FieldConverterTypesEnum.MULTI_FIELD_VALUE, to: definition_1.FieldConverterTypesEnum.TRUE_ENTITIES_OBJECT, converter: this.$fromMultiFieldValueToTrueEntitiesObject.bind(this), }); this.register({ from: definition_1.FieldConverterTypesEnum.SELECT_VALUE, to: definition_1.FieldConverterTypesEnum.RAW_VALUE, converter: this.$fromSelectValueToRawValue.bind(this), }); this.register({ from: definition_1.FieldConverterTypesEnum.NOT_MULTI_FIELD_VALUE, to: definition_1.FieldConverterTypesEnum.ENTITIES, converter: this.$fromNotMultiFieldValueToEntities.bind(this), }); } FieldConverter_1 = FieldConverter; /** * @stable [09.01.2020] * @param {IFieldConverterConfigEntity} config */ FieldConverter.prototype.register = function (config) { this.converters.set(this.asKey(config), config.converter); FieldConverter_1.logger.debug("[$FieldConverter][register] The converter has been registered successfully:", config); }; /** * @stable [13.12.2020] * @param config */ FieldConverter.prototype.convert = function (config) { var value = config.value; var converter = this.converter(config); if (!util_1.TypeUtils.isFn(converter)) { throw new Error("The converter is not registered! A config " + JSON.stringify(config) + ":"); } return converter(value); }; /** * @stable [09.01.2020] * @param config */ FieldConverter.prototype.converter = function (config) { return this.converters.get(this.asKey(config)); }; /** * @stable [08.07.2020] * @param {SelectValueT} value * @returns {EntityIdT} */ FieldConverter.prototype.fromSelectValueToId = function (value) { return this.convert({ from: definition_1.FieldConverterTypesEnum.SELECT_VALUE, to: definition_1.FieldConverterTypesEnum.ID, value: value, }); }; /** * @stable [07.12.2020] * @param value */ FieldConverter.prototype.fromSelectValueToPositiveOrNegativeNumberLikeId = function (value) { return util_1.ConditionUtils.ifNotNilThanValue(this.fromSelectValueToId(value), function (result) { return util_1.ConditionUtils.orUndef(util_1.TypeUtils.isPositiveOrNegativeNumberLike(result), result); }, definitions_interface_1.UNDEF_SYMBOL); }; /** * @stable [28.10.2020] * @param value */ FieldConverter.prototype.fromSelectValueToRawValue = function (value) { return this.convert({ from: definition_1.FieldConverterTypesEnum.SELECT_VALUE, to: definition_1.FieldConverterTypesEnum.RAW_VALUE, value: value, }); }; /** * @stable [18.05.2020] * @param {SelectValueT} value * @returns {StringNumberT} */ FieldConverter.prototype.fromSelectValueToDisplayValue = function (value) { return this.convert({ from: definition_1.FieldConverterTypesEnum.SELECT_VALUE, to: definition_1.FieldConverterTypesEnum.DISPLAY_VALUE, value: value, }); }; /** * @stable [17.05.2020] * @param {PlaceEntityValueT} value * @returns {string} */ FieldConverter.prototype.fromPlaceEntityToDisplayValue = function (value) { return this.convert({ from: definition_1.FieldConverterTypesEnum.PLACE_ENTITY, to: definition_1.FieldConverterTypesEnum.DISPLAY_VALUE, value: value, }); }; /** * @stable [17.05.2020] * @param {PlaceEntityValueT} value * @returns {string} */ FieldConverter.prototype.fromPlaceEntityToPlaceParameter = function (value) { return this.convert({ from: definition_1.FieldConverterTypesEnum.PLACE_ENTITY, to: definition_1.FieldConverterTypesEnum.PLACE_PARAMETER, value: value, }); }; /** * @stable [14.03.2020] * @param {TValue} value * @returns {IReduxUserEntity} */ FieldConverter.prototype.fromOAuthJwtDecodedInfoToUserEntity = function (value) { return this.convert({ from: definition_1.FieldConverterTypesEnum.OAUTH_JWT_DECODED_INFO, to: definition_1.FieldConverterTypesEnum.USER_ENTITY, value: value, }); }; /** * @stable [08.07.2020] * @param {INamedEntity} value * @returns {IPresetsRawDataLabeledValueEntity} */ FieldConverter.prototype.fromNamedEntityToRawDataLabeledValueEntity = function (value) { return this.convert({ from: definition_1.FieldConverterTypesEnum.NAMED_ENTITY, to: definition_1.FieldConverterTypesEnum.RAW_DATA_LABELED_VALUE_ENTITY, value: value, }); }; /** * @stable [13.04.2020] * @nullable * @param {string} value * @returns {string} */ FieldConverter.prototype.fromCronExpressionToCronParameter = function (value) { return this.convert({ from: definition_1.FieldConverterTypesEnum.CRON_EXPRESSION, to: definition_1.FieldConverterTypesEnum.CRON_PARAMETER, value: value, }); }; /** * @stable [16.05.2020] * @param value */ FieldConverter.prototype.fromMultiFieldValueToEntities = function (value) { return this.convert({ from: definition_1.FieldConverterTypesEnum.MULTI_FIELD_VALUE, to: definition_1.FieldConverterTypesEnum.ENTITIES, value: value, }); }; /** * @stable [13.12.2020] * @param value */ FieldConverter.prototype.fromNotMultiFieldValueToEntities = function (value) { return this.convert({ from: definition_1.FieldConverterTypesEnum.NOT_MULTI_FIELD_VALUE, to: definition_1.FieldConverterTypesEnum.ENTITIES, value: value, }); }; /** * @stable [04.09.2020] * @param value */ FieldConverter.prototype.fromMultiFieldValueToTrueEntitiesObject = function (value) { return this.convert({ from: definition_1.FieldConverterTypesEnum.MULTI_FIELD_VALUE, to: definition_1.FieldConverterTypesEnum.TRUE_ENTITIES_OBJECT, value: value, }); }; /** * @stable [03.09.2020] * @param value */ FieldConverter.prototype.fromMultiFieldValueToEditEntities = function (value) { return this.convert({ from: definition_1.FieldConverterTypesEnum.MULTI_FIELD_VALUE, to: definition_1.FieldConverterTypesEnum.EDIT_ENTITIES, value: value, }); }; /** * @stable [16.05.2020] * @param {MultiFieldValueT<TEntity extends IEntity>} value * @returns {TEntity[]} */ FieldConverter.prototype.fromMultiFieldValueToDefinedEntities = function (value) { return this.convert({ from: definition_1.FieldConverterTypesEnum.MULTI_FIELD_VALUE, to: definition_1.FieldConverterTypesEnum.DEFINED_ENTITIES, value: value, }); }; /** * @stable [28.01.2020] * @param {PlaceEntityValueT} placeEntity * @returns {string} */ FieldConverter.prototype.zipCodeEntityAsDisplayValue = function (placeEntity) { if (R.isNil(placeEntity)) { return placeEntity; } if (util_1.TypeUtils.isPrimitive(placeEntity)) { return placeEntity; } var placeEntityAsObject = placeEntity; return placeEntityAsObject.zipCode || definition_1.FieldConstants.DISPLAY_EMPTY_VALUE; }; /** * @stable [18.05.2020] * @param {SelectValueT} option * @returns {StringNumberT} */ FieldConverter.prototype.$fromSelectValueToDisplayValue = function (option) { return util_1.SelectOptionUtils.fromSelectValueToDisplayValue(option); }; /** * @stable [07.03.2020] * @param {IDatesRangeEntity} entity * @returns {DatesRangeValueT} */ FieldConverter.prototype.datesRangeEntityAsDatesRangeValue = function (entity) { if (R.isNil(entity)) { return entity; } return util_1.FilterUtils.notNilValuesArrayFilter(entity.from, entity.to, entity.periodMode); }; /** * @stable [07.03.2020] * @param {DatesRangeValueT} value * @returns {IDatesRangeEntity} */ FieldConverter.prototype.datesRangeValueAsDatesRangeEntity = function (value) { if (R.isNil(value)) { return value; } return { from: value[0], to: value[1], periodMode: value[2], }; }; /** * @stable [14.03.2020] * @param {TValue} value * @returns {IReduxUserEntity} */ FieldConverter.prototype.$fromOAuthJwtDecodedInfoToUserEntity = function (value) { return { id: -1, name: 'Anonymous' }; }; /** * @stable [13.04.2020] * @nullable * @param {string} value * @returns {string} */ FieldConverter.prototype.$fromCronExpressionToCronParameter = function (value) { return util_1.ConditionUtils.ifNotNilThanValue(value, function () { return util_1.CronEntity.newInstance().fromExpression(value).toExpression(); }, definitions_interface_1.UNDEF_SYMBOL); }; /** * @stable [08.07.2020] * @param {INamedEntity} value * @returns {IPresetsRawDataLabeledValueEntity} */ FieldConverter.prototype.$fromNamedEntityToRawDataLabeledValueEntity = function (value) { return util_1.Mappers.namedEntityAsRawDataLabeledValueEntity(value); }; /** * @stable [17.05.2020] * @param {PlaceEntityValueT} placeEntity * @returns {string} */ FieldConverter.prototype.$fromPlaceEntityToDisplayValue = function (placeEntity) { return util_1.PlaceUtils.fromPlaceEntityToDisplayValue(placeEntity); }; /** * @stable [17.05.2020] * @param {PlaceEntityValueT} placeEntity * @returns {string} */ FieldConverter.prototype.$fromPlaceEntityToPlaceParameter = function (placeEntity) { return util_1.PlaceUtils.fromPlaceEntityToDisplayValue(placeEntity); }; /** * @stable [29.08.2020] * @param value * @private */ FieldConverter.prototype.$fromMultiFieldValueToEntities = function (value) { return util_1.MultiFieldUtils.multiFieldValueAsEntities(value); }; /** * @stable [13.12.2020] * @param value */ FieldConverter.prototype.$fromNotMultiFieldValueToEntities = function (value) { return util_1.MultiFieldUtils.notMultiFieldValueAsEntities(value); }; /** * @stable [03.09.2020] * @param value * @private */ FieldConverter.prototype.$fromMultiFieldValueToEditEntities = function (value) { return util_1.MultiFieldUtils.multiFieldValueAsEditEntities(value); }; /** * @stable [21.01.2021] * @param value */ FieldConverter.prototype.$fromMultiFieldValueToDefinedEntities = function (value) { return util_1.MultiFieldUtils.multiFieldValueAsDefinedEntities(value); }; /** * @stable [04.09.2020] * @param value * @private */ FieldConverter.prototype.$fromMultiFieldValueToTrueEntitiesObject = function (value) { return util_1.MultiFieldUtils.multiFieldValueAsTrueEntitiesObject(value); }; /** * @stable [18.05.2020] * @param value * @private */ FieldConverter.prototype.$fromSelectValueToId = function (value) { return util_1.SelectOptionUtils.fromSelectValueToId(value); }; /** * @stable [28.10.2020] * @param value * @private */ FieldConverter.prototype.$fromSelectValueToRawValue = function (value) { return util_1.SelectOptionUtils.fromSelectValueToRawValue(value); }; /** * @stable [16.05.2020] * @param {IFieldConverterConfigEntity} config * @returns {string} */ FieldConverter.prototype.asKey = function (config) { return config.from + "->" + config.to; }; var FieldConverter_1; FieldConverter.logger = ts_smart_logger_1.LoggerFactory.makeLogger('FieldConverter'); __decorate([ di_1.lazyInject(di_1.DI_TYPES.Translate), __metadata("design:type", Function) ], FieldConverter.prototype, "t", void 0); FieldConverter = FieldConverter_1 = __decorate([ inversify_1.injectable(), __metadata("design:paramtypes", []) ], FieldConverter); return FieldConverter; }()); exports.FieldConverter = FieldConverter; //# sourceMappingURL=field-converter.service.js.map