@vlsergey/react-bootstrap-pagetable
Version:
Complex solution to work with pageable data, including sorting, filtering, actions, changing displayed columns, etc.
52 lines (51 loc) • 2.11 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
var FieldModel_1 = require("../FieldModel");
function urlParamsToFetchArgs(defaultFetchArgs, itemModel, urlParamsPrefix, params) {
var prefix = urlParamsPrefix || '';
var ifHaveSingle = function (paramName, consumer) {
var fullParamName = prefix + paramName;
var paramValue = params.get(fullParamName);
if (paramValue != null) {
consumer(paramValue);
}
};
var result = {
page: defaultFetchArgs.page,
size: defaultFetchArgs.size,
sort: defaultFetchArgs.sort,
};
ifHaveSingle('page', function (page) { return result.page = Number(page) - 1; });
ifHaveSingle('size', function (size) { return result.size = Number(size); });
var ifHaveAll = function (paramName, consumer) {
var fullParamName = prefix + paramName;
if (params.has(fullParamName)) {
consumer(params.getAll(fullParamName));
}
};
ifHaveAll('sort', function (sortParamValues) {
result.sort = sortParamValues.map(function (sortValue) {
var field = sortValue;
var direction = 'ASC';
var commaIndex = sortValue.indexOf(',');
if (commaIndex !== -1) {
field = sortValue.substring(0, commaIndex);
direction = sortValue.substring(commaIndex).toUpperCase() === ',DESC' ? 'DESC' : 'ASC';
}
return { field: field, direction: direction };
});
});
var defConverter = FieldModel_1.defaultFilterValueConverter();
itemModel.fields.forEach(function (_a) {
var filterValueConverter = _a.filterValueConverter, key = _a.key;
ifHaveAll(key, function (values) {
if (!result.filter) {
result.filter = {};
}
var converter = filterValueConverter || defConverter;
result.filter[key] = converter.fromStrings(values);
});
});
return result;
}
exports.default = urlParamsToFetchArgs;
;