@krowdy-ui/views
Version:
React components that implement Google's Material Design.
92 lines (73 loc) • 2.5 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = formatFilters;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
var _xdate = _interopRequireDefault(require("xdate"));
var formatDate = function formatDate(date) {
return new _xdate["default"](date).toString('yyyy/MM/dd');
}; // 2020/01/20
var formatRegex = function formatRegex(value) {
var vocals = ['[aáàãâä]', '[eéèêë]', '[iíìîï]', '[oóòõôö]', '[uúùûü]'];
var string = Array.isArray(value) ? value.join('|') : value;
vocals.forEach(function (list) {
string = string.replace(new RegExp(list, 'gi'), list);
});
return new RegExp("(^|)".concat(string.replace(/ /g, '\\s*'), "($|)\\b"), 'i');
};
var formatValue = function formatValue(type, value) {
switch (type) {
case 'date':
return formatDate(value);
case 'number':
return Number(value);
case 'category':
return (0, _typeof2["default"])(value) === 'object' ? value._id : value;
default:
return value;
}
};
function formatFilters(filters) {
return filters.map(function (filter) {
var key = filter.key,
operator = filter.operator,
type = filter.type,
value = filter.value,
_filter$children = filter.children,
children = _filter$children === void 0 ? [] : _filter$children;
var valueFilter = Array.isArray(value) ? value.map(function (val) {
return formatValue(type, val);
}) : formatValue(type, value);
var valueFromOperator = {};
switch (operator) {
case '$range':
valueFromOperator = {
$gte: valueFilter[0],
$lte: valueFilter[1]
};
break;
case '$regex':
case '$unregex':
valueFromOperator = {
$regex: formatRegex(value)
};
break;
default:
valueFromOperator = (0, _defineProperty2["default"])({}, operator, valueFilter);
break;
}
var response = (0, _defineProperty2["default"])({}, key, valueFromOperator);
if (children.length) {
var child = formatFilters(children);
return {
$and: [(0, _defineProperty2["default"])({
$or: child
}, key, valueFromOperator)]
};
}
return response;
});
}