UNPKG

@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
"use strict"; 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;