UNPKG

react-application-core

Version:

A react-based application core for the business applications.

310 lines 12.1 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.MultiFieldUtils = void 0; var R = require("ramda"); var type_1 = require("./type"); var definitions_interface_1 = require("../definitions.interface"); var array_1 = require("./array"); var clone_1 = require("./clone"); var filter_1 = require("./filter"); var nvl_1 = require("./nvl"); var object_1 = require("./object"); /** * @stable [03.09.2020] * @param initial */ var fromMultiEntity = function (initial) { return ({ add: initial.add || [], edit: initial.edit || [], remove: initial.remove || [], source: initial.source || [], }); }; /** * @stable [29.08.2020] * @param value */ var isNotMultiEntity = function (value) { return Array.isArray(value) || type_1.TypeUtils.isPrimitive(value); }; /** * @stable [29.08.2020] * @param value */ var notMultiFieldValueAsEntities = function (value) { return type_1.TypeUtils.isPrimitive(value) ? [{ id: value }] : value; }; /** * @stable [29.08.2020] * @param value * @param converter * @param defaultValue */ var extractEntitiesFromMultiFieldValue = function (value, converter, defaultValue) { return isNotMultiEntity(value) ? (type_1.TypeUtils.isDef(defaultValue) ? defaultValue : notMultiFieldValueAsEntities(value)) : (R.isNil(value) ? [] : converter(value)); }; /** * @stable [21.01.2021] * @param value * @param defaultValue */ var multiFieldValueAsMultiItemSourceEntities = function (value, defaultValue) { return extractEntitiesFromMultiFieldValue(value, function (currentValue) { return currentValue.source; }, defaultValue); }; /** * @stable [21.01.2021] * @param value * @param defaultValue */ var multiFieldValueAsMultiItemEditEntities = function (value, defaultValue) { if (defaultValue === void 0) { defaultValue = []; } return extractEntitiesFromMultiFieldValue(value, function (currentValue) { return currentValue.edit; }, defaultValue); }; /** * @stable [21.01.2021] * @param value * @param defaultValue */ var multiFieldValueAsMultiItemAddEntities = function (value, defaultValue) { if (defaultValue === void 0) { defaultValue = []; } return extractEntitiesFromMultiFieldValue(value, function (currentValue) { return currentValue.add; }, defaultValue); }; /** * @stable [29.08.2020] * @param value * @param defaultValue */ var multiFieldValueAsMultiItemRemoveEntities = function (value, defaultValue) { if (defaultValue === void 0) { defaultValue = []; } return extractEntitiesFromMultiFieldValue(value, function (currentValue) { return currentValue.remove; }, defaultValue); }; /** * @stable [29.08.2020] * @param entity * @param mappedSourcedItems */ var multiFieldValueAsEditEntities = function (entity, mappedSourcedItems) { var multiEntity = entity; if (R.isNil(entity)) { return definitions_interface_1.UNDEF; } if (isNotMultiEntity(entity)) { return []; } var resultItems = new Map(); var cachedSourceItems = mappedSourcedItems || new Map(); if (R.isNil(mappedSourcedItems)) { multiEntity.source.forEach(function (sourceEntity) { return cachedSourceItems.set(sourceEntity.id, sourceEntity); }); } multiEntity.edit.forEach(function (editedItem) { var editedItemId = editedItem.id; var cachedResultItem = resultItems.get(editedItemId); // Collect the changes var $editedItem = cachedResultItem || clone_1.CloneUtils.shallowClone(cachedSourceItems.get(editedItemId)); Reflect.set($editedItem, editedItem.name, editedItem.value); if (R.isNil(cachedResultItem)) { resultItems.set(editedItemId, $editedItem); } }); return Array.from(resultItems.values()); }; /** * @stable [21.01.2021] * @param name * @param value * @param rawData * @param newEntity */ var asMultiItemEntity = function (name, value, rawData, newEntity) { return filter_1.FilterUtils.defValuesFilter({ id: rawData.id, value: value, name: name, rawData: rawData, newEntity: newEntity, }); }; /** * @stable [02.09.2020] * @param cfg */ var filterMultiFieldValue = function (cfg) { var addFilter = cfg.addFilter, currentEntity = cfg.currentEntity, editFilter = cfg.editFilter, removeFilter = cfg.removeFilter, sourceEntities = cfg.sourceEntities; if (R.isNil(currentEntity) || isNotMultiEntity(currentEntity)) { return definitions_interface_1.UNDEF; } var $currentEntity = currentEntity; var add = type_1.TypeUtils.isFn(addFilter) ? $currentEntity.add.filter(addFilter) : $currentEntity.add; var edit = type_1.TypeUtils.isFn(editFilter) ? $currentEntity.edit.filter(editFilter) : $currentEntity.edit; var remove = type_1.TypeUtils.isFn(removeFilter) ? $currentEntity.remove.filter(removeFilter) : $currentEntity.remove; if (add.length === 0 && edit.length === 0 && remove.length === 0) { return definitions_interface_1.UNDEF; } return { add: add, edit: edit, remove: remove, source: sourceEntities, }; }; /** * @stable [03.09.2020] * @param cfg */ var concatMultiFieldValue = function (cfg) { var concatEntity = cfg.concatEntity, currentEntity = cfg.currentEntity; if (R.isNil(currentEntity) || isNotMultiEntity(currentEntity)) { return definitions_interface_1.UNDEF; } if (R.isNil(concatEntity)) { return currentEntity; } var $currentEntity = currentEntity; var $concatEntity = fromMultiEntity(concatEntity); var add = $currentEntity.add.concat($concatEntity.add); var edit = $currentEntity.edit.concat($concatEntity.edit); var remove = $currentEntity.remove.concat($concatEntity.remove); return __assign(__assign({}, $currentEntity), { add: add, edit: edit, remove: remove }); }; /** * @stable [03.09.2020] * @param entity */ var multiFieldValueAsEntities = function (entity) { if (R.isNil(entity)) { return definitions_interface_1.UNDEF; } if (isNotMultiEntity(entity)) { return entity; } var multiEntity = entity; var sourceEntities = multiEntity.source || []; // Fill a cache var cachedSourceEntities = new Map(); sourceEntities.forEach(function (itm) { return cachedSourceEntities.set(itm.id, itm); }); // Pass a map to optimize var editedEntities = multiFieldValueAsEditEntities(entity, cachedSourceEntities); var cachedEditedEntities = new Map(); if (object_1.ObjectUtils.isObjectNotEmpty(editedEntities)) { editedEntities.forEach(function (itm) { return cachedEditedEntities.set(itm.id, itm); }); } // Remove the deleted entities multiEntity.remove.forEach(function (itm) { return cachedSourceEntities.delete(itm.id); }); return multiEntity.add.concat(Array.from(cachedSourceEntities.values()) .map(function (itm) { return nvl_1.NvlUtils.nvl(cachedEditedEntities.get(itm.id), itm); })); }; /** * @stable [21.01.2021] * @param entity */ var multiFieldValueAsDefinedEntities = function (entity) { return multiFieldValueAsEntities(entity) || []; }; /** * @stable [21.01.2021] * @param cfg */ var multiFieldValueAsUnknownEntitiesObject = function (cfg) { var entity = cfg.entity, _a = cfg.groupKeyAccessor, groupKeyAccessor = _a === void 0 ? function (item) { return item.id; } : _a, groupValueAccessor = cfg.groupValueAccessor; return R.mergeAll(multiFieldValueAsDefinedEntities(entity) .map(function (item) { var _a; return (_a = {}, _a[groupKeyAccessor(item)] = groupValueAccessor(item), _a); })); }; /** * @stable [21.01.2021] * @param cfg */ var multiFieldValueAsTrueEntitiesObject = function (cfg) { return multiFieldValueAsUnknownEntitiesObject(__assign(__assign({}, cfg), { groupValueAccessor: function () { return true; } })); }; /** * @stable [21.01.2021] * @param multiFieldValue * @param mapper */ var multiFieldValueAsMappedEntities = function (multiFieldValue, mapper) { var _a; return (_a = multiFieldValueAsEntities(multiFieldValue)) === null || _a === void 0 ? void 0 : _a.map(mapper); }; /** * @stable [21.01.2021] * @param multiFieldValueOrEntitiesIds */ var multiFieldValueAsEntitiesIds = function (multiFieldValueOrEntitiesIds) { return multiFieldValueAsMappedEntities(multiFieldValueOrEntitiesIds, function (entity) { return entity.id; }); }; /** * @stable [21.01.2021] * @param entity * @param multiFieldValue */ var buildPhantomEntity = function (entity, multiFieldValue) { return (__assign(__assign({}, entity), { id: array_1.ArrayUtils.nextMinNegativeValue(MultiFieldUtils.multiFieldValueAsEntitiesIds(multiFieldValue) || []) })); }; /** * @stable [21.01.2021] * @param name * @param multiFieldValue * @param predicate * @param factory */ var asMultiItemEditReplacedEntity = function (name, multiFieldValue, predicate, factory) { var multiItemSourceEntity = multiFieldValueAsMultiItemSourceEntities(multiFieldValue).find(predicate); return asMultiItemEntity(name, factory(multiFieldValueAsMultiItemEditEntities(multiFieldValue).find(predicate), multiItemSourceEntity), multiItemSourceEntity); }; /** * @stable [21.01.2021] * @param multiItemEntity */ var multiItemEntityAsEntity = function (multiItemEntity) { var _a; if (type_1.TypeUtils.isDef(multiItemEntity.rawData)) { return __assign(__assign({}, multiItemEntity.rawData), (_a = {}, _a[multiItemEntity.name] = multiItemEntity.value, _a)); } return multiItemEntity; }; /** * @stable [29.08.2020] */ var MultiFieldUtils = /** @class */ (function () { function MultiFieldUtils() { } MultiFieldUtils.asMultiItemEditReplacedEntity = asMultiItemEditReplacedEntity; MultiFieldUtils.asMultiItemEntity = asMultiItemEntity; MultiFieldUtils.buildPhantomEntity = buildPhantomEntity; MultiFieldUtils.concatMultiFieldValue = concatMultiFieldValue; MultiFieldUtils.filterMultiFieldValue = filterMultiFieldValue; MultiFieldUtils.fromMultiEntity = fromMultiEntity; MultiFieldUtils.isNotMultiEntity = isNotMultiEntity; MultiFieldUtils.multiFieldValueAsDefinedEntities = multiFieldValueAsDefinedEntities; MultiFieldUtils.multiFieldValueAsEditEntities = multiFieldValueAsEditEntities; MultiFieldUtils.multiFieldValueAsEntities = multiFieldValueAsEntities; MultiFieldUtils.multiFieldValueAsEntitiesIds = multiFieldValueAsEntitiesIds; MultiFieldUtils.multiFieldValueAsMappedEntities = multiFieldValueAsMappedEntities; MultiFieldUtils.multiFieldValueAsMultiItemAddEntities = multiFieldValueAsMultiItemAddEntities; MultiFieldUtils.multiFieldValueAsMultiItemEditEntities = multiFieldValueAsMultiItemEditEntities; MultiFieldUtils.multiFieldValueAsMultiItemRemoveEntities = multiFieldValueAsMultiItemRemoveEntities; MultiFieldUtils.multiFieldValueAsMultiItemSourceEntities = multiFieldValueAsMultiItemSourceEntities; MultiFieldUtils.multiFieldValueAsTrueEntitiesObject = multiFieldValueAsTrueEntitiesObject; MultiFieldUtils.multiFieldValueAsUnknownEntitiesObject = multiFieldValueAsUnknownEntitiesObject; MultiFieldUtils.multiItemEntityAsEntity = multiItemEntityAsEntity; MultiFieldUtils.notMultiFieldValueAsEntities = notMultiFieldValueAsEntities; return MultiFieldUtils; }()); exports.MultiFieldUtils = MultiFieldUtils; //# sourceMappingURL=multi-field.js.map