UNPKG

@vlsergey/react-bootstrap-pagetable

Version:

Complex solution to work with pageable data, including sorting, filtering, actions, changing displayed columns, etc.

76 lines (75 loc) 3.77 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var springDataRestResponseToPage_1 = tslib_1.__importDefault(require("./springDataRestResponseToPage")); var FETCH_PARAMS = { method: 'GET', headers: { Accept: 'application/json', }, }; function fetchFromSpringDataRest(url, _a, responseCollectionKey) { var page = _a.page, size = _a.size, filter = _a.filter, sort = _a.sort; return tslib_1.__awaiter(this, void 0, void 0, function () { var args, _b, _c, _d, fieldKey, filterValue, sort_1, sort_1_1, sortBy, response, json, result; var e_1, _e, e_2, _f; return tslib_1.__generator(this, function (_g) { switch (_g.label) { case 0: args = new URLSearchParams(); args.append('page', String(page)); args.append('size', String(size)); if (filter) { try { for (_b = tslib_1.__values(Object.entries(filter)), _c = _b.next(); !_c.done; _c = _b.next()) { _d = tslib_1.__read(_c.value, 2), fieldKey = _d[0], filterValue = _d[1]; if (typeof filterValue === 'string' || typeof filterValue === 'number') { args.append(fieldKey, String(filterValue)); } else { console.warn("Unsupported filter value type for field '" + fieldKey + "': " + typeof filterValue); } } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (_c && !_c.done && (_e = _b.return)) _e.call(_b); } finally { if (e_1) throw e_1.error; } } } if (sort) { try { for (sort_1 = tslib_1.__values(sort), sort_1_1 = sort_1.next(); !sort_1_1.done; sort_1_1 = sort_1.next()) { sortBy = sort_1_1.value; args.append('sort', sortBy.field + (sortBy.direction === 'DESC' ? ',desc' : '')); } } catch (e_2_1) { e_2 = { error: e_2_1 }; } finally { try { if (sort_1_1 && !sort_1_1.done && (_f = sort_1.return)) _f.call(sort_1); } finally { if (e_2) throw e_2.error; } } } return [4 /*yield*/, fetch(url + "?" + args.toString(), FETCH_PARAMS)]; case 1: response = _g.sent(); if (!response.ok) { console.trace(response); throw new Error('Spring Data REST error: ' + response.statusText); } return [4 /*yield*/, response.json()]; case 2: json = _g.sent(); result = springDataRestResponseToPage_1.default(responseCollectionKey, // eslint-disable-next-line @typescript-eslint/no-explicit-any json); return [2 /*return*/, result]; } }); }); } exports.default = fetchFromSpringDataRest;