react-application-core
Version:
A react-based application core for the business applications.
466 lines • 18.3 kB
JavaScript
"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