UNPKG

@egalteam/framework

Version:

Egal

288 lines (287 loc) 13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.GetItemsFilterParams = void 0; var GetItemsFilterParams = /** @class */ (function () { function GetItemsFilterParams(filterObj) { this.filter = []; this.tempArr = []; this.userFilterInput = filterObj; } /** * Функция разбирает массив с фильтрами, полученный от пользователя * и передает каждый айтем в след. функцию */ GetItemsFilterParams.prototype.checkFilterType = function () { var _this = this; if (this.userFilterInput) { this.userFilterInput.forEach(function (item) { _this.createDefaultObjectInstance(item); }); } }; /** * Функция формирует массив с условиями для одного фильтра * @param filterItem */ GetItemsFilterParams.prototype.createDefaultObjectInstance = function (filterItem) { var _this = this; var _a, _b, _c, _d, _e; var filterAll = []; var filterAllLeft = []; var filterAllRight = []; var temporalFilterArrLeft = []; var temporalFilterArrRight = []; var multiFilterFieldLeft; var multiFilterFieldRight; var leftComplexFilter = []; var rightComplexFilter = []; if ((filterItem === null || filterItem === void 0 ? void 0 : filterItem.left) && !((_a = filterItem.left) === null || _a === void 0 ? void 0 : _a.left) && !((_b = filterItem.right) === null || _b === void 0 ? void 0 : _b.left)) { if (Array.isArray(filterItem.left.value)) { filterItem.left.value.forEach(function (valueItem) { temporalFilterArrLeft = [filterItem.left.field, filterItem.left.operator, valueItem]; filterAllLeft.push(temporalFilterArrLeft); }); multiFilterFieldLeft = filterAllLeft .map(function (e, i) { return (i < filterAllLeft.length - 1 ? [e, 'OR'] : [e]); }) .reduce(function (a, b) { return a.concat(b); }); leftComplexFilter.push(multiFilterFieldLeft); } else { leftComplexFilter = [ filterItem.left.field, filterItem.left.operator, filterItem.left.value ]; } if (Array.isArray(filterItem.right.value)) { filterItem.right.value.forEach(function (valueItem) { temporalFilterArrRight = [filterItem.right.field, filterItem.right.operator, valueItem]; filterAllRight.push(temporalFilterArrRight); }); multiFilterFieldRight = filterAllRight .map(function (e, i) { return (i < filterAllRight.length - 1 ? [e, 'OR'] : [e]); }) .reduce(function (a, b) { return a.concat(b); }); rightComplexFilter.push(multiFilterFieldRight); } else { rightComplexFilter = [ filterItem.right.field, filterItem.right.operator, filterItem.right.value ]; } this.defaultFilterArr = [leftComplexFilter, filterItem.type, rightComplexFilter]; if (((_c = this.userFilterInput) === null || _c === void 0 ? void 0 : _c.length) === 1) { this.tempArr = this.defaultFilterArr; } else { this.tempArr.push(this.defaultFilterArr); } } else if (((_d = filterItem.left) === null || _d === void 0 ? void 0 : _d.left) || ((_e = filterItem.right) === null || _e === void 0 ? void 0 : _e.left)) { if (filterItem.left.left && !filterItem.right.left) { this.formComplexLeftNestedFilter(filterItem); } if (!filterItem.left.left && filterItem.right.left) { this.formComplexRightNestedValue(filterItem); } if (filterItem.left.left && filterItem.right.left) { } } else if (Array.isArray(filterItem.value)) { filterItem.value.forEach(function (valueItem) { _this.defaultFilterArr = [filterItem.field, filterItem.operator, valueItem]; filterAll.push(_this.defaultFilterArr); }); this.multiFilterField = filterAll .map(function (e, i) { return (i < filterAll.length - 1 ? [e, 'OR'] : [e]); }) .reduce(function (a, b) { return a.concat(b); }); this.tempArr.push(this.multiFilterField); } else if (Array.isArray(filterItem)) { this.tempArr.push(filterItem); } else { this.defaultFilterArr = [filterItem.field, filterItem.operator, filterItem.value]; this.tempArr.push(this.defaultFilterArr); } }; GetItemsFilterParams.prototype.formComplexLeftNestedFilter = function (filterItem) { var _a; var filterAllLeft = []; var filterAllRight = []; var filterAllRightPart = []; var leftComplexFilter = []; var rightComplexFilter = []; var rightFilterPart = []; var temporalLeftFilterArr = []; var temporalRightFilterArr = []; var temporalFilterArr = []; var multiFilterLeftField; var multiFilterRightField; var multiFilterNestedRightField; var defaultNestedFilterArr = []; if (Array.isArray(filterItem.left.left.value)) { filterItem.left.left.value.forEach(function (valueItem) { temporalLeftFilterArr = [ filterItem.left.left.field, filterItem.left.left.operator, valueItem ]; filterAllLeft.push(temporalLeftFilterArr); }); multiFilterLeftField = filterAllLeft .map(function (e, i) { return (i < filterAllLeft.length - 1 ? [e, 'OR'] : [e]); }) .reduce(function (a, b) { return a.concat(b); }); leftComplexFilter.push(multiFilterLeftField); } else { leftComplexFilter = [ filterItem.left.left.field, filterItem.left.left.operator, filterItem.left.left.value ]; } if (Array.isArray(filterItem.left.right.value)) { filterItem.left.right.value.forEach(function (valueItem) { temporalRightFilterArr = [ filterItem.left.right.field, filterItem.left.right.operator, valueItem ]; filterAllRight.push(temporalRightFilterArr); }); multiFilterNestedRightField = filterAllRight .map(function (e, i) { return (i < filterAllRight.length - 1 ? [e, 'OR'] : [e]); }) .reduce(function (a, b) { return a.concat(b); }); rightComplexFilter.push(multiFilterNestedRightField); } else { rightComplexFilter = [ filterItem.left.right.field, filterItem.left.right.operator, filterItem.left.right.value ]; } if (Array.isArray(filterItem.right.value)) { filterItem.right.value.forEach(function (valueItem) { temporalFilterArr = [filterItem.right.field, filterItem.right.operator, valueItem]; filterAllRightPart.push(temporalFilterArr); }); multiFilterRightField = filterAllRightPart .map(function (e, i) { return (i < filterAllRightPart.length - 1 ? [e, 'OR'] : [e]); }) .reduce(function (a, b) { return a.concat(b); }); rightFilterPart.push(multiFilterRightField); } else { rightFilterPart = [filterItem.right.field, filterItem.right.operator, filterItem.right.value]; } defaultNestedFilterArr = [leftComplexFilter, filterItem.left.type, rightComplexFilter]; this.defaultFilterArr = [defaultNestedFilterArr, filterItem.type, rightFilterPart]; if (((_a = this.userFilterInput) === null || _a === void 0 ? void 0 : _a.length) === 1) { this.tempArr = this.defaultFilterArr; } else { this.tempArr.push([this.defaultFilterArr]); } }; GetItemsFilterParams.prototype.formComplexRightNestedValue = function (filterItem) { var _a; var filterAllLeft = []; var filterAllRight = []; var filterAllLeftPart = []; var leftComplexFilter = []; var rightComplexFilter = []; var leftFilterPart = []; var temporalLeftFilterArr = []; var temporalRightFilterArr = []; var temporalFilterArr = []; var multiFilterLeftField; var multiFilterRightField; var multiFilterNestedLeftField; var defaultNestedFilterArr = []; if (Array.isArray(filterItem.right.left.value)) { filterItem.right.left.value.forEach(function (valueItem) { temporalLeftFilterArr = [ filterItem.right.left.field, filterItem.right.left.operator, valueItem ]; filterAllLeft.push(temporalLeftFilterArr); }); multiFilterLeftField = filterAllLeft .map(function (e, i) { return (i < filterAllLeft.length - 1 ? [e, 'OR'] : [e]); }) .reduce(function (a, b) { return a.concat(b); }); leftComplexFilter.push(multiFilterLeftField); } else { leftComplexFilter = [ filterItem.right.left.field, filterItem.right.left.operator, filterItem.right.left.value ]; } if (Array.isArray(filterItem.right.right.value)) { filterItem.right.right.value.forEach(function (valueItem) { temporalRightFilterArr = [ filterItem.right.right.field, filterItem.right.right.operator, valueItem ]; filterAllRight.push(temporalRightFilterArr); }); multiFilterRightField = filterAllRight .map(function (e, i) { return (i < filterAllRight.length - 1 ? [e, 'OR'] : [e]); }) .reduce(function (a, b) { return a.concat(b); }); rightComplexFilter.push(multiFilterRightField); } else { rightComplexFilter = [ filterItem.right.right.field, filterItem.right.right.operator, filterItem.right.right.value ]; } if (Array.isArray(filterItem.left.value)) { filterItem.left.value.forEach(function (valueItem) { temporalFilterArr = [filterItem.left.field, filterItem.left.operator, valueItem]; filterAllLeftPart.push(temporalFilterArr); }); multiFilterNestedLeftField = filterAllLeftPart .map(function (e, i) { return (i < filterAllLeftPart.length - 1 ? [e, 'OR'] : [e]); }) .reduce(function (a, b) { return a.concat(b); }); leftFilterPart.push(multiFilterNestedLeftField); } else { leftFilterPart = [filterItem.left.field, filterItem.left.operator, filterItem.left.value]; } defaultNestedFilterArr = [leftComplexFilter, filterItem.right.type, rightComplexFilter]; this.defaultFilterArr = [leftFilterPart, filterItem.type, defaultNestedFilterArr]; if (((_a = this.userFilterInput) === null || _a === void 0 ? void 0 : _a.length) === 1) { this.tempArr = this.defaultFilterArr; } else { this.tempArr.push([this.defaultFilterArr]); } }; /** * Функция формирует массив из всех примененных фильтров для отправки в запросе */ GetItemsFilterParams.prototype.formFilterObject = function () { var _this = this; var _a; // @ts-ignore if (this.tempArr.length > 1 && ((_a = this.userFilterInput) === null || _a === void 0 ? void 0 : _a.length) > 1) { this.filter = this.tempArr .map(function (e, i) { return (i < _this.tempArr.length - 1 ? [e, 'AND'] : [e]); }) .reduce(function (a, b) { return a.concat(b); }); return this.filter; } else { this.filter = this.tempArr; return this.filter; } }; return GetItemsFilterParams; }()); exports.GetItemsFilterParams = GetItemsFilterParams;