@egalteam/framework
Version:
Egal
288 lines (287 loc) • 13 kB
JavaScript
"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;