@vlsergey/react-bootstrap-pagetable
Version:
Complex solution to work with pageable data, including sorting, filtering, actions, changing displayed columns, etc.
43 lines (42 loc) • 1.71 kB
JavaScript
import { __values } from "tslib";
import { defaultFilterValueConverter } from '../FieldModel';
export default function fetchArgsToUrlParams(itemModel, urlParamsPrefix, currentSearch, fetchArgs) {
var prefix = urlParamsPrefix || '';
var params = new URLSearchParams(currentSearch);
params.set(prefix + "page", String(fetchArgs.page + 1));
params.set(prefix + "size", String(fetchArgs.size));
if (fetchArgs.sort) {
params.set(prefix + "sort", fetchArgs.sort
.map(function (_a) {
var field = _a.field, direction = _a.direction;
return "" + field + (direction === 'DESC' ? ',DESC' : '');
})
.join(''));
}
else {
params.delete(prefix + "sort");
}
itemModel.fields.forEach(function (_a) {
var e_1, _b;
var filterValueConverter = _a.filterValueConverter, key = _a.key;
params.delete(prefix + key);
var filterValue = (fetchArgs.filter || {})[key];
if (filterValue !== undefined) {
var converter = filterValueConverter || defaultFilterValueConverter();
try {
for (var _c = __values(converter.toStrings(filterValue)), _d = _c.next(); !_d.done; _d = _c.next()) {
var value = _d.value;
params.append(prefix + key, value);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_d && !_d.done && (_b = _c.return)) _b.call(_c);
}
finally { if (e_1) throw e_1.error; }
}
}
});
return params;
}