UNPKG

2.11 kBJavaScriptView Raw
1"use strict";
2var __spreadArray = (this && this.__spreadArray) || function (to, from) {
3 for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
4 to[j] = from[i];
5 return to;
6};
7Object.defineProperty(exports, "__esModule", { value: true });
8exports.getOrderBy = void 0;
9var order_1 = require("../order");
10/**
11 * Get an object containing the given order bys as query parameter, or an empty object if none was given.
12 * @typeparam EntityT - Type of the entity to order
13 * @param orderBy - A list of orderables to get the query parameters for
14 * @returns An object containing the query parameter or an empty object
15 */
16function getOrderBy(orderBy) {
17 if (typeof orderBy !== 'undefined' && orderBy.length) {
18 return {
19 orderby: getODataOrderByExpressions(orderBy).join(',')
20 };
21 }
22 return {};
23}
24exports.getOrderBy = getOrderBy;
25function getODataOrderByExpressions(orderBys, parentFieldNames) {
26 if (parentFieldNames === void 0) { parentFieldNames = []; }
27 return orderBys.reduce(function (expressions, orderBy) {
28 if (orderBy instanceof order_1.OrderLink) {
29 return __spreadArray(__spreadArray([], expressions), [
30 getOrderByExpressionForOrderLink(orderBy, __spreadArray([], parentFieldNames))
31 ]);
32 }
33 return __spreadArray(__spreadArray([], expressions), [
34 getOrderByExpressionForOrder(orderBy, parentFieldNames)
35 ]);
36 }, []);
37}
38function getOrderByExpressionForOrderLink(orderBy, parentFieldNames) {
39 if (parentFieldNames === void 0) { parentFieldNames = []; }
40 return getODataOrderByExpressions(orderBy.orderBy, __spreadArray(__spreadArray([], parentFieldNames), [
41 orderBy.link._fieldName
42 ])).join(',');
43}
44function getOrderByExpressionForOrder(orderBy, parentFieldNames) {
45 if (parentFieldNames === void 0) { parentFieldNames = []; }
46 return [
47 __spreadArray(__spreadArray([], parentFieldNames), [orderBy._fieldName]).join('/'),
48 orderBy.orderType
49 ].join(encodeURIComponent(' '));
50}
51//# sourceMappingURL=get-orderby.js.map
\No newline at end of file