UNPKG

react-application-core

Version:

A react-based application core for the business applications.

116 lines 5.83 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.toMultiFieldChangesEntityOnDelete = exports.toMultiFieldChangesEntityOnEdit = exports.isSameEntityByIdAndChangedFieldName = exports.fromMultiItemEntitiesToFieldsChanges = exports.fromMultiFieldValueToEditedEntities = exports.toLastAddedMultiItemEntityId = void 0; var R = require("ramda"); var definitions_interface_1 = require("../../../definitions.interface"); var util_1 = require("../../../util"); /** * @stable [29.07.2019] * @param {MultiFieldSingleValueT} multiFieldEntity * @returns {EntityIdT} */ exports.toLastAddedMultiItemEntityId = function (multiFieldEntity) { return util_1.ifNotNilThanValue(multiFieldEntity, function () { return (util_1.TypeUtils.isPrimitive(multiFieldEntity) ? multiFieldEntity : (util_1.ifNotNilThanValue(multiFieldEntity.add, function (add) { return util_1.ifNotNilThanValue(R.last(add), function (lastValue) { return lastValue.id; }); }))); }); }; /** * @stable [18.08.2018] * @param {MultiFieldValueT} multiFieldValue * @param {(entity: TItem, index: number) => TResult} mapper * @returns {TResult[]} */ function fromMultiFieldValueToEditedEntities(multiFieldValue, mapper) { var result = util_1.MultiFieldUtils.multiFieldValueAsEditEntities(multiFieldValue); return util_1.ConditionUtils.orUndef(!R.isNil(result), function () { return result.map(mapper); }); } exports.fromMultiFieldValueToEditedEntities = fromMultiFieldValueToEditedEntities; /** * @stable [04.07.2018] * @param {IMultiItemEntity[]} multiItemEntities * @returns {IKeyValue} */ exports.fromMultiItemEntitiesToFieldsChanges = function (multiItemEntities) { return R.reduceBy(function (acc, entity) { var _a; return (__assign(__assign({}, acc), (_a = {}, _a[entity.name] = entity.value, _a))); }, {}, function (entity) { return String(entity.id); }, multiItemEntities); }; /** * @stable [11.08.2018] * @param {IMultiItemEntity} first * @param {IMultiItemEntity} second * @returns {boolean} */ exports.isSameEntityByIdAndChangedFieldName = function (first, second) { return (first.id === second.id && first.name === second.name); }; /** * @stable [11.08.2018] * @param {IMultiItemEntity} item * @param {IEntity[]} addValue * @param {IMultiItemEntity[]} removeValue * @param {IMultiItemEntity[]} editValue * @param {IEntity[]} originalValue * @returns {IMultiFieldChangesEntity} */ exports.toMultiFieldChangesEntityOnEdit = function (item, addValue, removeValue, editValue, originalValue) { var removeArray = removeValue; var originalEditedItem = originalValue.find(function (originalItem0) { return originalItem0.id === item.id; }); var editedNewItem = addValue.find(function (editedNewItem0) { return editedNewItem0.id === item.id; }); var isEditedNewItem = !R.isNil(editedNewItem); var isOriginalEditedItem = !R.isNil(originalEditedItem); var editArray = isEditedNewItem ? editValue // If a user is editing a new record then returning an input value : ( // Otherwise, we should replace an old item with an input item editValue .filter(function (editedItem) { return !exports.isSameEntityByIdAndChangedFieldName(item, editedItem); }) .concat(item) .filter(function (editedItem) { // Need to destroy the dirty changes, if an edited entity attribute is equal an original entity attribute return !isOriginalEditedItem || !(exports.isSameEntityByIdAndChangedFieldName(item, editedItem) && originalEditedItem[item.name] === item.value); })); var addArray = isEditedNewItem ? (item.value === definitions_interface_1.UNDEF // Need to destroy the added entities ? R.filter(function (itm) { return itm.id !== item.id; }, addValue) : R.map(function (newItem) { return newItem.id === item.id ? util_1.MultiFieldUtils.multiItemEntityAsEntity(item) : newItem; }, addValue)) : addValue; return { addArray: addArray, removeArray: removeArray, editArray: editArray }; }; /** * @stable [18.08.2018] * @param {IMultiItemEntity} item * @param {IEntity[]} addValue * @param {IMultiItemEntity[]} removeValue * @param {IMultiItemEntity[]} editValue * @param {IEntity[]} originalValue * @returns {IMultiFieldChangesEntity} */ exports.toMultiFieldChangesEntityOnDelete = function (item, addValue, removeValue, editValue, originalValue) { var deletedItemId = item.id; var addValueLenBeforeFiltering = addValue.length; var editArray = editValue.filter((function (addItem) { return addItem.id !== deletedItemId; })); var addArray = addValue.filter((function (addItem) { return addItem.id !== deletedItemId; })); var removeArray = removeValue; if (addArray.length === addValueLenBeforeFiltering) { // The local added items do not contain deleted item var deletedEntity = originalValue.find(function (entity) { return entity.id === deletedItemId; }); removeArray = (R.isNil(deletedEntity) ? [] : [deletedEntity]).concat(removeValue); } else { // We just now have removed deleted item from addValue array } return { addArray: addArray, removeArray: removeArray, editArray: editArray }; }; //# sourceMappingURL=multifield.support.js.map