@progress/kendo-data-query 1.7.0 → 1.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cdn/js/kendo-data-query.js +1 -16
- package/dist/cdn/main.js +1 -1
- package/dist/es/array.operators.js +5 -3
- package/dist/es/common.interfaces.js +1 -0
- package/dist/es/data-result.interface.js +1 -0
- package/dist/es/filter-serialization.common.js +4 -5
- package/dist/es/filtering/filter-no-eval.js +5 -6
- package/dist/es/filtering/filter.operators.js +1 -1
- package/dist/es/grouping/aggregate.operators.js +1 -1
- package/dist/es/grouping/group-descriptor.interface.js +1 -0
- package/dist/es/mvc/operators.js +9 -9
- package/dist/es/odata-filtering.operators.js +8 -8
- package/dist/es/odata.operators.js +1 -1
- package/dist/es/sort-descriptor.js +1 -0
- package/dist/es/state.js +1 -0
- package/dist/es2015/array.operators.js +3 -1
- package/dist/es2015/common.interfaces.js +1 -0
- package/dist/es2015/data-result.interface.js +1 -0
- package/dist/es2015/filtering/filter-no-eval.js +5 -6
- package/dist/es2015/filtering/filter.operators.js +1 -1
- package/dist/es2015/grouping/aggregate.operators.js +1 -1
- package/dist/es2015/grouping/group-descriptor.interface.js +1 -0
- package/dist/es2015/mvc/operators.js +2 -2
- package/dist/es2015/sort-descriptor.js +1 -0
- package/dist/es2015/state.js +1 -0
- package/dist/npm/accessor.js +4 -3
- package/dist/npm/array.operators.d.ts +4 -2
- package/dist/npm/array.operators.js +30 -23
- package/dist/npm/common.interfaces.d.ts +5 -5
- package/dist/npm/filter-serialization.common.d.ts +1 -1
- package/dist/npm/filter-serialization.common.js +24 -16
- package/dist/npm/filtering/filter-descriptor.interface.d.ts +7 -2
- package/dist/npm/filtering/filter-descriptor.interface.js +3 -2
- package/dist/npm/filtering/filter-expression.factory.js +7 -5
- package/dist/npm/filtering/filter-no-eval.js +19 -19
- package/dist/npm/filtering/filter.operators.d.ts +1 -1
- package/dist/npm/filtering/filter.operators.js +8 -7
- package/dist/npm/filtering/operators.enum.js +1 -1
- package/dist/npm/funcs.js +8 -4
- package/dist/npm/grouping/aggregate.operators.d.ts +2 -2
- package/dist/npm/grouping/aggregate.operators.js +6 -5
- package/dist/npm/grouping/group-descriptor.interface.d.ts +14 -1
- package/dist/npm/grouping/group.operators.js +12 -10
- package/dist/npm/main.js +1 -0
- package/dist/npm/mvc/deserialization.d.ts +1 -1
- package/dist/npm/mvc/deserialization.js +7 -5
- package/dist/npm/mvc/operators.d.ts +3 -3
- package/dist/npm/mvc/operators.js +32 -30
- package/dist/npm/odata-filtering.operators.js +20 -19
- package/dist/npm/odata.operators.js +7 -6
- package/dist/npm/sort-descriptor.d.ts +1 -1
- package/dist/npm/sorting/sort-array.operator.d.ts +2 -2
- package/dist/npm/sorting/sort-array.operator.js +6 -5
- package/dist/npm/transducers.js +36 -25
- package/dist/npm/utils.d.ts +1 -1
- package/dist/npm/utils.js +20 -10
- package/dist/systemjs/kendo-data-query.js +1 -1
- package/package.json +22 -35
- package/NOTICE.txt +0 -614
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { isCompositeFilterDescriptor } from "./filter-descriptor.interface";
|
|
2
2
|
import { getter } from "../accessor";
|
|
3
|
-
import { isFunction, isPresent, isDate, isString, isBlank
|
|
3
|
+
import { isFunction, isPresent, isDate, isString, isBlank } from "../utils";
|
|
4
4
|
const logic = {
|
|
5
5
|
"or": {
|
|
6
6
|
concat: (acc, fn) => a => acc(a) || fn(a),
|
|
@@ -58,12 +58,11 @@ const typedGetter = (prop, value, ignoreCase) => {
|
|
|
58
58
|
else {
|
|
59
59
|
acc = a => {
|
|
60
60
|
const x = prop(a);
|
|
61
|
-
if (
|
|
62
|
-
return x
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
return isNumeric(x) ? x + "" : x;
|
|
61
|
+
if (x === null) {
|
|
62
|
+
return x;
|
|
66
63
|
}
|
|
64
|
+
const stringValue = typeof x === 'string' ? x : x + "";
|
|
65
|
+
return ignoreCase ? stringValue.toLowerCase() : stringValue;
|
|
67
66
|
};
|
|
68
67
|
}
|
|
69
68
|
}
|
|
@@ -58,7 +58,7 @@ const normalizeDescriptor = (descriptor) => {
|
|
|
58
58
|
};
|
|
59
59
|
// tslint:disable:max-line-length
|
|
60
60
|
/**
|
|
61
|
-
* Converts a [FilterDescriptor]({% slug api_kendo-data-query_filterdescriptor %}) into a [CompositeFilterDescriptor]({% slug api_kendo-data-query_compositefilterdescriptor %}). If a `CompositeFilterDescriptor` is passed, no modifications will be made.
|
|
61
|
+
* Converts a [`FilterDescriptor`]({% slug api_kendo-data-query_filterdescriptor %}) into a [`CompositeFilterDescriptor`]({% slug api_kendo-data-query_compositefilterdescriptor %}). If a `CompositeFilterDescriptor` is passed, no modifications will be made.
|
|
62
62
|
*
|
|
63
63
|
* @param {CompositeFilterDescriptor | FilterDescriptor} descriptor - The descriptor that will be normalized.
|
|
64
64
|
* @returns {CompositeFilterDescriptor} - The normalized descriptor.
|
|
@@ -2,7 +2,7 @@ import { exec, map, aggregatesCombinator, expandAggregates } from '../transducer
|
|
|
2
2
|
const identity = map(x => x);
|
|
3
3
|
// tslint:disable:max-line-length
|
|
4
4
|
/**
|
|
5
|
-
* Applies the specified [AggregateDescriptors]({% slug api_kendo-data-query_aggregatedescriptor %}) to the data. Returns an [AggregateResult]({% slug api_kendo-data-query_aggregateresult %}) instance.
|
|
5
|
+
* Applies the specified [`AggregateDescriptors`]({% slug api_kendo-data-query_aggregatedescriptor %}) to the data. Returns an [`AggregateResult`]({% slug api_kendo-data-query_aggregateresult %}) instance.
|
|
6
6
|
*
|
|
7
7
|
* @example
|
|
8
8
|
* ```ts
|
|
@@ -75,7 +75,7 @@ const rules = (state, encode = true) => key => ({
|
|
|
75
75
|
* Converts a [DataSourceRequestState]({% slug api_kendo-data-query_datasourcerequeststate %}) into a string
|
|
76
76
|
* that is comparable with the `DataSourceRequest` format in UI for ASP.NET MVC.
|
|
77
77
|
*
|
|
78
|
-
* @param {
|
|
78
|
+
* @param {DataSourceRequestState} state - The state that will be serialized.
|
|
79
79
|
* @returns {string} - The serialized state.
|
|
80
80
|
*
|
|
81
81
|
* @example
|
|
@@ -183,7 +183,7 @@ export const toDataSourceRequestString = (state) => (toQueryString(Object.keys(s
|
|
|
183
183
|
* Converts a [DataSourceRequestState]({% slug api_kendo-data-query_datasourcerequeststate %}) into an object
|
|
184
184
|
* that is compatible with the `DataSourceRequest` format in UI for ASP.NET MVC.
|
|
185
185
|
*
|
|
186
|
-
* @param {
|
|
186
|
+
* @param {DataSourceRequestState} state - The state that will be serialized.
|
|
187
187
|
* @returns {any} - The serialized state.
|
|
188
188
|
*/
|
|
189
189
|
export const toDataSourceRequest = (state) => (toObject(Object.keys(state)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/es2015/state.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/npm/accessor.js
CHANGED
|
@@ -9,21 +9,21 @@ getterCache['undefined'] = function (obj) { return obj; };
|
|
|
9
9
|
/**
|
|
10
10
|
* @hidden
|
|
11
11
|
*/
|
|
12
|
-
|
|
12
|
+
var getter = function (field, safe) {
|
|
13
13
|
var key = field + safe;
|
|
14
14
|
if (getterCache[key]) {
|
|
15
15
|
return getterCache[key];
|
|
16
16
|
}
|
|
17
17
|
var fields = [];
|
|
18
18
|
field.replace(FIELD_REGEX, function (_, index, indexAccessor, field) {
|
|
19
|
-
fields.push(utils_1.isPresent(index) ? index : (indexAccessor || field));
|
|
19
|
+
fields.push((0, utils_1.isPresent)(index) ? index : (indexAccessor || field));
|
|
20
20
|
return undefined;
|
|
21
21
|
});
|
|
22
22
|
getterCache[key] = function (obj) {
|
|
23
23
|
var result = obj;
|
|
24
24
|
for (var idx = 0; idx < fields.length; idx++) {
|
|
25
25
|
result = result[fields[idx]];
|
|
26
|
-
if (!utils_1.isPresent(result) && safe) {
|
|
26
|
+
if (!(0, utils_1.isPresent)(result) && safe) {
|
|
27
27
|
return result;
|
|
28
28
|
}
|
|
29
29
|
}
|
|
@@ -31,3 +31,4 @@ exports.getter = function (field, safe) {
|
|
|
31
31
|
};
|
|
32
32
|
return getterCache[key];
|
|
33
33
|
};
|
|
34
|
+
exports.getter = getter;
|
|
@@ -19,11 +19,13 @@ import { Predicate } from './common.interfaces';
|
|
|
19
19
|
* { name: "Beef", category: "Food", subcategory: "Meat" }
|
|
20
20
|
* ];
|
|
21
21
|
*
|
|
22
|
-
* const
|
|
22
|
+
* const sortDesc: SortDescriptor[] = [{ field: "name", dir: "asc" }];
|
|
23
|
+
*
|
|
24
|
+
* const result = orderBy(data, sortDesc);
|
|
23
25
|
* ```
|
|
24
26
|
*/
|
|
25
27
|
export declare const orderBy: <T>(data: T[], descriptors: SortDescriptor[]) => T[];
|
|
26
|
-
|
|
28
|
+
type Comparer = <T>(a: T, b: T) => boolean;
|
|
27
29
|
/**
|
|
28
30
|
* Reduces the provided array so it contains only unique values.
|
|
29
31
|
*
|
|
@@ -27,21 +27,24 @@ var funcs_1 = require("./funcs");
|
|
|
27
27
|
* { name: "Beef", category: "Food", subcategory: "Meat" }
|
|
28
28
|
* ];
|
|
29
29
|
*
|
|
30
|
-
* const
|
|
30
|
+
* const sortDesc: SortDescriptor[] = [{ field: "name", dir: "asc" }];
|
|
31
|
+
*
|
|
32
|
+
* const result = orderBy(data, sortDesc);
|
|
31
33
|
* ```
|
|
32
34
|
*/
|
|
33
|
-
|
|
34
|
-
if (descriptors.some(function (x) { return utils_1.isPresent(x.dir) || utils_1.isPresent(x.compare); })) {
|
|
35
|
+
var orderBy = function (data, descriptors) {
|
|
36
|
+
if (descriptors.some(function (x) { return (0, utils_1.isPresent)(x.dir) || (0, utils_1.isPresent)(x.compare); })) {
|
|
35
37
|
data = data.slice(0);
|
|
36
|
-
var comparer = sort_array_operator_1.composeSortDescriptors(descriptors);
|
|
38
|
+
var comparer = (0, sort_array_operator_1.composeSortDescriptors)(descriptors);
|
|
37
39
|
data.sort(comparer);
|
|
38
40
|
}
|
|
39
41
|
return data;
|
|
40
42
|
};
|
|
43
|
+
exports.orderBy = orderBy;
|
|
41
44
|
var defaultComparer = function (a, b) { return a === b; };
|
|
42
45
|
var normalizeComparer = function (comparer) {
|
|
43
|
-
if (utils_1.isString(comparer)) {
|
|
44
|
-
var accessor_2 = accessor_1.getter(comparer);
|
|
46
|
+
if ((0, utils_1.isString)(comparer)) {
|
|
47
|
+
var accessor_2 = (0, accessor_1.getter)(comparer);
|
|
45
48
|
comparer = function (a, b) { return accessor_2(a) === accessor_2(b); };
|
|
46
49
|
}
|
|
47
50
|
return comparer;
|
|
@@ -75,14 +78,15 @@ var _distinct = function (data, comparer) {
|
|
|
75
78
|
* // ];
|
|
76
79
|
* ```
|
|
77
80
|
*/
|
|
78
|
-
|
|
81
|
+
var distinct = function (data, comparer) {
|
|
79
82
|
if (comparer === void 0) { comparer = defaultComparer; }
|
|
80
83
|
return _distinct(data, normalizeComparer(comparer));
|
|
81
84
|
};
|
|
85
|
+
exports.distinct = distinct;
|
|
82
86
|
/**
|
|
83
87
|
* @hidden
|
|
84
88
|
*/
|
|
85
|
-
|
|
89
|
+
var count = function (data, predicate) {
|
|
86
90
|
var counter = 0;
|
|
87
91
|
for (var idx = 0, length_1 = data.length; idx < length_1; idx++) {
|
|
88
92
|
if (predicate(data[idx])) {
|
|
@@ -91,15 +95,17 @@ exports.count = function (data, predicate) {
|
|
|
91
95
|
}
|
|
92
96
|
return counter;
|
|
93
97
|
};
|
|
98
|
+
exports.count = count;
|
|
94
99
|
/**
|
|
95
100
|
* @hidden
|
|
96
101
|
*/
|
|
97
|
-
|
|
102
|
+
var limit = function (data, predicate) {
|
|
98
103
|
if (predicate) {
|
|
99
104
|
return data.filter(predicate);
|
|
100
105
|
}
|
|
101
106
|
return data;
|
|
102
107
|
};
|
|
108
|
+
exports.limit = limit;
|
|
103
109
|
/**
|
|
104
110
|
* Applies the specified operation descriptors to the data.
|
|
105
111
|
*
|
|
@@ -132,14 +138,14 @@ exports.limit = function (data, predicate) {
|
|
|
132
138
|
*
|
|
133
139
|
* ```
|
|
134
140
|
*/
|
|
135
|
-
|
|
141
|
+
var process = function (data, state) {
|
|
136
142
|
var skipCount = state.skip, takeCount = state.take, filterDescriptor = state.filter, sort = state.sort, group = state.group;
|
|
137
|
-
var sortDescriptors = tslib_1.
|
|
143
|
+
var sortDescriptors = tslib_1.__spreadArray(tslib_1.__spreadArray([], (0, group_operators_1.normalizeGroups)(group || []), true), sort || [], true);
|
|
138
144
|
if (sortDescriptors.length) {
|
|
139
|
-
data = exports.orderBy(data, sortDescriptors);
|
|
145
|
+
data = (0, exports.orderBy)(data, sortDescriptors);
|
|
140
146
|
}
|
|
141
|
-
var hasFilters = utils_1.isPresent(filterDescriptor) && transducers_1.filter.length;
|
|
142
|
-
var hasGroups = utils_1.isPresent(group) && group.length;
|
|
147
|
+
var hasFilters = (0, utils_1.isPresent)(filterDescriptor) && transducers_1.filter.length;
|
|
148
|
+
var hasGroups = (0, utils_1.isPresent)(group) && group.length;
|
|
143
149
|
if (!hasFilters && !hasGroups) {
|
|
144
150
|
return {
|
|
145
151
|
data: takeCount ? data.slice(skipCount, skipCount + takeCount) : data,
|
|
@@ -150,26 +156,27 @@ exports.process = function (data, state) {
|
|
|
150
156
|
var transformers = [];
|
|
151
157
|
var predicate;
|
|
152
158
|
if (hasFilters) {
|
|
153
|
-
predicate = filter_expression_factory_1.compileFilter(filter_operators_1.normalizeFilters(filterDescriptor));
|
|
154
|
-
total = exports.count(data, predicate);
|
|
155
|
-
transformers.push(transducers_1.filter(predicate));
|
|
159
|
+
predicate = (0, filter_expression_factory_1.compileFilter)((0, filter_operators_1.normalizeFilters)(filterDescriptor));
|
|
160
|
+
total = (0, exports.count)(data, predicate);
|
|
161
|
+
transformers.push((0, transducers_1.filter)(predicate));
|
|
156
162
|
}
|
|
157
163
|
else {
|
|
158
164
|
total = data.length;
|
|
159
165
|
}
|
|
160
|
-
if (utils_1.isPresent(skipCount) && utils_1.isPresent(takeCount)) {
|
|
161
|
-
transformers.push(transducers_1.skip(skipCount));
|
|
162
|
-
transformers.push(transducers_1.take(takeCount));
|
|
166
|
+
if ((0, utils_1.isPresent)(skipCount) && (0, utils_1.isPresent)(takeCount)) {
|
|
167
|
+
transformers.push((0, transducers_1.skip)(skipCount));
|
|
168
|
+
transformers.push((0, transducers_1.take)(takeCount));
|
|
163
169
|
}
|
|
164
170
|
if (transformers.length) {
|
|
165
171
|
var transform = funcs_1.compose.apply(void 0, transformers);
|
|
166
172
|
var result = hasGroups ?
|
|
167
|
-
group_operators_1.groupBy(data, group, transform, exports.limit(data, predicate)) :
|
|
168
|
-
transducers_1.exec(transform(transducers_1.concat), [], data);
|
|
173
|
+
(0, group_operators_1.groupBy)(data, group, transform, (0, exports.limit)(data, predicate)) :
|
|
174
|
+
(0, transducers_1.exec)(transform(transducers_1.concat), [], data);
|
|
169
175
|
return { data: result, total: total };
|
|
170
176
|
}
|
|
171
177
|
return {
|
|
172
|
-
data: hasGroups ? group_operators_1.groupBy(data, group) : data,
|
|
178
|
+
data: hasGroups ? (0, group_operators_1.groupBy)(data, group) : data,
|
|
173
179
|
total: total
|
|
174
180
|
};
|
|
175
181
|
};
|
|
182
|
+
exports.process = process;
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @hidden
|
|
3
3
|
*/
|
|
4
|
-
export
|
|
4
|
+
export type Combinator = <T, U>(acc: U, curr: T) => U;
|
|
5
5
|
/**
|
|
6
6
|
* @hidden
|
|
7
7
|
*/
|
|
8
|
-
export
|
|
8
|
+
export type Reducer = (reduce: Combinator) => Transformer;
|
|
9
9
|
/**
|
|
10
10
|
* @hidden
|
|
11
11
|
*/
|
|
12
|
-
export
|
|
12
|
+
export type TransformerResult<T> = {
|
|
13
13
|
__value: T;
|
|
14
14
|
reduced: boolean;
|
|
15
15
|
};
|
|
16
16
|
/**
|
|
17
17
|
* @hidden
|
|
18
18
|
*/
|
|
19
|
-
export
|
|
19
|
+
export type Transformer = <T, U>(acc: U, curr: T, index: number) => U | TransformerResult<U>;
|
|
20
20
|
/**
|
|
21
21
|
* A type which represents a function that returns a Boolean value.
|
|
22
22
|
*
|
|
@@ -27,4 +27,4 @@ export declare type Transformer = <T, U>(acc: U, curr: T, index: number) => U |
|
|
|
27
27
|
* isGreaterThanTen(20); // true
|
|
28
28
|
* ```
|
|
29
29
|
*/
|
|
30
|
-
export
|
|
30
|
+
export type Predicate = <T>(x: T) => boolean;
|
|
@@ -2,7 +2,7 @@ import { FilterDescriptor, CompositeFilterDescriptor } from './filtering/filter-
|
|
|
2
2
|
/**
|
|
3
3
|
* @hidden
|
|
4
4
|
*/
|
|
5
|
-
export
|
|
5
|
+
export type Transformation = (x: FilterDescriptor) => FilterDescriptor;
|
|
6
6
|
/**
|
|
7
7
|
* @hidden
|
|
8
8
|
* Creates a single arity function which wraps the value based on the provided predicate.
|
|
@@ -13,59 +13,64 @@ var utils_1 = require("./utils");
|
|
|
13
13
|
* //ignoreCase=false -> ${field}`
|
|
14
14
|
* ```
|
|
15
15
|
*/
|
|
16
|
-
|
|
16
|
+
var wrapIf = function (predicate) { return function (str) {
|
|
17
17
|
var args = [];
|
|
18
18
|
for (var _i = 1; _i < arguments.length; _i++) {
|
|
19
19
|
args[_i - 1] = arguments[_i];
|
|
20
20
|
}
|
|
21
|
-
return predicate() ? ""
|
|
21
|
+
return predicate() ? "".concat(str[0]).concat(args[0]).concat(str[1]) : args[0];
|
|
22
22
|
}; };
|
|
23
|
+
exports.wrapIf = wrapIf;
|
|
23
24
|
/**
|
|
24
25
|
* @hidden
|
|
25
26
|
*/
|
|
26
|
-
|
|
27
|
+
var toUTC = function (date) {
|
|
27
28
|
return new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));
|
|
28
29
|
};
|
|
30
|
+
exports.toUTC = toUTC;
|
|
29
31
|
/**
|
|
30
32
|
* @hidden
|
|
31
33
|
*/
|
|
32
|
-
|
|
34
|
+
var quote = function (_a) {
|
|
33
35
|
var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;
|
|
34
36
|
return ({
|
|
35
|
-
value: "'"
|
|
37
|
+
value: "'".concat(value.replace(/'/g, "''"), "'"),
|
|
36
38
|
field: field,
|
|
37
39
|
ignoreCase: ignoreCase,
|
|
38
40
|
operator: operator
|
|
39
41
|
});
|
|
40
42
|
};
|
|
43
|
+
exports.quote = quote;
|
|
41
44
|
/**
|
|
42
45
|
* @hidden
|
|
43
46
|
*/
|
|
44
|
-
|
|
47
|
+
var encodeValue = function (_a) {
|
|
45
48
|
var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;
|
|
46
49
|
return ({
|
|
47
|
-
value: ""
|
|
50
|
+
value: "".concat(encodeURIComponent(value)),
|
|
48
51
|
field: field,
|
|
49
52
|
ignoreCase: ignoreCase,
|
|
50
53
|
operator: operator
|
|
51
54
|
});
|
|
52
55
|
};
|
|
56
|
+
exports.encodeValue = encodeValue;
|
|
53
57
|
/**
|
|
54
58
|
* @hidden
|
|
55
59
|
*/
|
|
56
|
-
|
|
60
|
+
var toLower = function (_a) {
|
|
57
61
|
var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;
|
|
58
62
|
return ({
|
|
59
|
-
field: exports.wrapIf(function () { return ignoreCase; })(templateObject_1 || (templateObject_1 = tslib_1.__makeTemplateObject(["tolower(", ")"], ["tolower(", ")"])), field),
|
|
63
|
+
field: (0, exports.wrapIf)(function () { return ignoreCase; })(templateObject_1 || (templateObject_1 = tslib_1.__makeTemplateObject(["tolower(", ")"], ["tolower(", ")"])), field),
|
|
60
64
|
value: value,
|
|
61
65
|
ignoreCase: ignoreCase,
|
|
62
66
|
operator: operator
|
|
63
67
|
});
|
|
64
68
|
};
|
|
69
|
+
exports.toLower = toLower;
|
|
65
70
|
/**
|
|
66
71
|
* @hidden
|
|
67
72
|
*/
|
|
68
|
-
|
|
73
|
+
var normalizeField = function (_a) {
|
|
69
74
|
var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;
|
|
70
75
|
return ({
|
|
71
76
|
value: value,
|
|
@@ -74,22 +79,25 @@ exports.normalizeField = function (_a) {
|
|
|
74
79
|
operator: operator
|
|
75
80
|
});
|
|
76
81
|
};
|
|
82
|
+
exports.normalizeField = normalizeField;
|
|
77
83
|
/**
|
|
78
84
|
* @hidden
|
|
79
85
|
*/
|
|
80
|
-
|
|
86
|
+
var isStringValue = function (x) { return (0, utils_1.isString)(x.value); };
|
|
87
|
+
exports.isStringValue = isStringValue;
|
|
81
88
|
/**
|
|
82
89
|
* @hidden
|
|
83
90
|
*/
|
|
84
|
-
|
|
91
|
+
var isDateValue = function (x) { return (0, utils_1.isDate)(x.value); };
|
|
92
|
+
exports.isDateValue = isDateValue;
|
|
85
93
|
/**
|
|
86
94
|
* @hidden
|
|
87
95
|
*/
|
|
88
|
-
|
|
89
|
-
var brackets = exports.wrapIf(function () { return filter.filters.length > 1; });
|
|
90
|
-
return brackets(templateObject_2 || (templateObject_2 = tslib_1.__makeTemplateObject(["(", ")"], ["(",
|
|
91
|
-
")"])), filter.filters
|
|
96
|
+
var serializeFilters = function (map, join) { return function (filter) {
|
|
97
|
+
var brackets = (0, exports.wrapIf)(function () { return filter.filters.length > 1; });
|
|
98
|
+
return brackets(templateObject_2 || (templateObject_2 = tslib_1.__makeTemplateObject(["(", ")"], ["(", ")"])), filter.filters
|
|
92
99
|
.map(map)
|
|
93
100
|
.join(join(filter)));
|
|
94
101
|
}; };
|
|
102
|
+
exports.serializeFilters = serializeFilters;
|
|
95
103
|
var templateObject_1, templateObject_2;
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import { FilterOperator } from './operators.enum';
|
|
2
2
|
/**
|
|
3
|
-
* A basic filter expression. Usually is a part of [CompositeFilterDescriptor]({% slug api_kendo-data-query_compositefilterdescriptor %}).
|
|
3
|
+
* A basic filter expression. Usually is a part of [`CompositeFilterDescriptor`]({% slug api_kendo-data-query_compositefilterdescriptor %}).
|
|
4
4
|
*
|
|
5
|
-
* For more information on filtering the provided data array, refer to the [filterBy]({% slug api_kendo-data-query_filterby %}) method.
|
|
5
|
+
* For more information on filtering the provided data array, refer to the [`filterBy`]({% slug api_kendo-data-query_filterby %}) method.
|
|
6
|
+
* {% platform_content angular %}
|
|
7
|
+
* For examples on using the `FilterDescriptor`, refer to the [documentation on filtering the Grid]({% slug manual_filtering_grid %}).
|
|
8
|
+
* {% endplatform_content %}
|
|
9
|
+
* {% platform_content react %}
|
|
6
10
|
* For examples on using the `FilterDescriptor`, refer to the [documentation on filtering the Grid]({% slug filtering_grid %}).
|
|
11
|
+
* {% endplatform_content %}
|
|
7
12
|
*/
|
|
8
13
|
export interface FilterDescriptor {
|
|
9
14
|
/**
|
|
@@ -7,6 +7,7 @@ var utils_1 = require("../utils");
|
|
|
7
7
|
* @hidden
|
|
8
8
|
* Type guard for `CompositeFilterDescriptor`.
|
|
9
9
|
*/
|
|
10
|
-
|
|
11
|
-
return utils_1.isPresent(source.filters);
|
|
10
|
+
var isCompositeFilterDescriptor = function (source) {
|
|
11
|
+
return (0, utils_1.isPresent)(source.filters);
|
|
12
12
|
};
|
|
13
|
+
exports.isCompositeFilterDescriptor = isCompositeFilterDescriptor;
|
|
@@ -23,12 +23,13 @@ var filter_no_eval_1 = require("./filter-no-eval");
|
|
|
23
23
|
* ```
|
|
24
24
|
*/
|
|
25
25
|
// tslint:enable:max-line-length
|
|
26
|
-
|
|
26
|
+
var compileFilter = function (descriptor) {
|
|
27
27
|
if (!descriptor || descriptor.filters.length === 0) {
|
|
28
28
|
return function () { return true; };
|
|
29
29
|
}
|
|
30
|
-
return filter_no_eval_1.transformCompositeFilter(descriptor);
|
|
30
|
+
return (0, filter_no_eval_1.transformCompositeFilter)(descriptor);
|
|
31
31
|
};
|
|
32
|
+
exports.compileFilter = compileFilter;
|
|
32
33
|
// tslint:disable:max-line-length
|
|
33
34
|
/**
|
|
34
35
|
* Filters the provided array according to the specified [CompositeFilterDescriptor]({% slug api_kendo-data-query_compositefilterdescriptor %}).
|
|
@@ -60,9 +61,10 @@ exports.compileFilter = function (descriptor) {
|
|
|
60
61
|
* ```
|
|
61
62
|
*/
|
|
62
63
|
// tslint:enable:max-line-length
|
|
63
|
-
|
|
64
|
-
if (!utils_1.isPresent(descriptor) || (filter_descriptor_interface_1.isCompositeFilterDescriptor(descriptor) && descriptor.filters.length === 0)) {
|
|
64
|
+
var filterBy = function (data, descriptor) {
|
|
65
|
+
if (!(0, utils_1.isPresent)(descriptor) || ((0, filter_descriptor_interface_1.isCompositeFilterDescriptor)(descriptor) && descriptor.filters.length === 0)) {
|
|
65
66
|
return data;
|
|
66
67
|
}
|
|
67
|
-
return data.filter(exports.compileFilter(filter_operators_1.normalizeFilters(descriptor)));
|
|
68
|
+
return data.filter((0, exports.compileFilter)((0, filter_operators_1.normalizeFilters)(descriptor)));
|
|
68
69
|
};
|
|
70
|
+
exports.filterBy = filterBy;
|
|
@@ -25,8 +25,8 @@ var operatorsMap = {
|
|
|
25
25
|
gte: function (a, b) { return a >= b; },
|
|
26
26
|
isempty: function (a) { return a === ''; },
|
|
27
27
|
isnotempty: function (a) { return a !== ''; },
|
|
28
|
-
isnotnull: function (a) { return utils_1.isPresent(a); },
|
|
29
|
-
isnull: function (a) { return utils_1.isBlank(a); },
|
|
28
|
+
isnotnull: function (a) { return (0, utils_1.isPresent)(a); },
|
|
29
|
+
isnull: function (a) { return (0, utils_1.isBlank)(a); },
|
|
30
30
|
lt: function (a, b) { return a < b; },
|
|
31
31
|
lte: function (a, b) { return a <= b; },
|
|
32
32
|
neq: function (a, b) { return a != b; },
|
|
@@ -34,7 +34,7 @@ var operatorsMap = {
|
|
|
34
34
|
};
|
|
35
35
|
var dateRegExp = /^\/Date\((.*?)\)\/$/;
|
|
36
36
|
var convertValue = function (value, ignoreCase) {
|
|
37
|
-
if (value != null && utils_1.isString(value)) {
|
|
37
|
+
if (value != null && (0, utils_1.isString)(value)) {
|
|
38
38
|
var date = dateRegExp.exec(value);
|
|
39
39
|
if (date) {
|
|
40
40
|
return new Date(+date[1]).getTime();
|
|
@@ -43,17 +43,17 @@ var convertValue = function (value, ignoreCase) {
|
|
|
43
43
|
return value.toLowerCase();
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
|
-
else if (value != null && utils_1.isDate(value)) {
|
|
46
|
+
else if (value != null && (0, utils_1.isDate)(value)) {
|
|
47
47
|
return value.getTime();
|
|
48
48
|
}
|
|
49
49
|
return value;
|
|
50
50
|
};
|
|
51
51
|
var typedGetter = function (prop, value, ignoreCase) {
|
|
52
|
-
if (!utils_1.isPresent(value)) {
|
|
52
|
+
if (!(0, utils_1.isPresent)(value)) {
|
|
53
53
|
return prop;
|
|
54
54
|
}
|
|
55
55
|
var acc = prop;
|
|
56
|
-
if (utils_1.isString(value)) {
|
|
56
|
+
if ((0, utils_1.isString)(value)) {
|
|
57
57
|
var date = dateRegExp.exec(value);
|
|
58
58
|
if (date) {
|
|
59
59
|
value = new Date(+date[1]);
|
|
@@ -61,39 +61,39 @@ var typedGetter = function (prop, value, ignoreCase) {
|
|
|
61
61
|
else {
|
|
62
62
|
acc = function (a) {
|
|
63
63
|
var x = prop(a);
|
|
64
|
-
if (
|
|
65
|
-
return x
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
return utils_1.isNumeric(x) ? x + "" : x;
|
|
64
|
+
if (x === null) {
|
|
65
|
+
return x;
|
|
69
66
|
}
|
|
67
|
+
var stringValue = typeof x === 'string' ? x : x + "";
|
|
68
|
+
return ignoreCase ? stringValue.toLowerCase() : stringValue;
|
|
70
69
|
};
|
|
71
70
|
}
|
|
72
71
|
}
|
|
73
|
-
if (utils_1.isDate(value)) {
|
|
72
|
+
if ((0, utils_1.isDate)(value)) {
|
|
74
73
|
return function (a) {
|
|
75
74
|
var x = acc(a);
|
|
76
|
-
return utils_1.isDate(x) ? x.getTime() : x;
|
|
75
|
+
return (0, utils_1.isDate)(x) ? x.getTime() : x;
|
|
77
76
|
};
|
|
78
77
|
}
|
|
79
78
|
return acc;
|
|
80
79
|
};
|
|
81
80
|
var transformFilter = function (_a) {
|
|
82
81
|
var field = _a.field, ignoreCase = _a.ignoreCase, value = _a.value, operator = _a.operator;
|
|
83
|
-
field = !utils_1.isPresent(field) ? function (a) { return a; } : field;
|
|
84
|
-
ignoreCase = utils_1.isPresent(ignoreCase) ? ignoreCase : true;
|
|
85
|
-
var itemProp = typedGetter(utils_1.isFunction(field) ? field : accessor_1.getter(field, true), value, ignoreCase);
|
|
82
|
+
field = !(0, utils_1.isPresent)(field) ? function (a) { return a; } : field;
|
|
83
|
+
ignoreCase = (0, utils_1.isPresent)(ignoreCase) ? ignoreCase : true;
|
|
84
|
+
var itemProp = typedGetter((0, utils_1.isFunction)(field) ? field : (0, accessor_1.getter)(field, true), value, ignoreCase);
|
|
86
85
|
value = convertValue(value, ignoreCase);
|
|
87
|
-
var op = utils_1.isFunction(operator) ? operator : operatorsMap[operator];
|
|
86
|
+
var op = (0, utils_1.isFunction)(operator) ? operator : operatorsMap[operator];
|
|
88
87
|
return function (a) { return op(itemProp(a), value, ignoreCase); };
|
|
89
88
|
};
|
|
90
89
|
/**
|
|
91
90
|
* @hidden
|
|
92
91
|
*/
|
|
93
|
-
|
|
92
|
+
var transformCompositeFilter = function (filter) {
|
|
94
93
|
var combiner = logic[filter.logic];
|
|
95
94
|
return filter.filters
|
|
96
95
|
.filter(utils_1.isPresent)
|
|
97
|
-
.map(function (x) { return filter_descriptor_interface_1.isCompositeFilterDescriptor(x) ? exports.transformCompositeFilter(x) : transformFilter(x); })
|
|
96
|
+
.map(function (x) { return (0, filter_descriptor_interface_1.isCompositeFilterDescriptor)(x) ? (0, exports.transformCompositeFilter)(x) : transformFilter(x); })
|
|
98
97
|
.reduce(combiner.concat, combiner.identity);
|
|
99
98
|
};
|
|
99
|
+
exports.transformCompositeFilter = transformCompositeFilter;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CompositeFilterDescriptor, FilterDescriptor } from './filter-descriptor.interface';
|
|
2
2
|
/**
|
|
3
|
-
* Converts a [FilterDescriptor]({% slug api_kendo-data-query_filterdescriptor %}) into a [CompositeFilterDescriptor]({% slug api_kendo-data-query_compositefilterdescriptor %}). If a `CompositeFilterDescriptor` is passed, no modifications will be made.
|
|
3
|
+
* Converts a [`FilterDescriptor`]({% slug api_kendo-data-query_filterdescriptor %}) into a [`CompositeFilterDescriptor`]({% slug api_kendo-data-query_compositefilterdescriptor %}). If a `CompositeFilterDescriptor` is passed, no modifications will be made.
|
|
4
4
|
*
|
|
5
5
|
* @param {CompositeFilterDescriptor | FilterDescriptor} descriptor - The descriptor that will be normalized.
|
|
6
6
|
* @returns {CompositeFilterDescriptor} - The normalized descriptor.
|
|
@@ -40,10 +40,10 @@ var normalizeOperator = function (descriptor) {
|
|
|
40
40
|
if (descriptor.filters) {
|
|
41
41
|
descriptor.filters = descriptor.filters.map(function (filter) {
|
|
42
42
|
var result = Object.assign({}, filter);
|
|
43
|
-
if (!filter_descriptor_interface_1.isCompositeFilterDescriptor(filter) && utils_1.isString(filter.operator)) {
|
|
43
|
+
if (!(0, filter_descriptor_interface_1.isCompositeFilterDescriptor)(filter) && (0, utils_1.isString)(filter.operator)) {
|
|
44
44
|
result.operator = operatorMap(filter.operator);
|
|
45
45
|
}
|
|
46
|
-
if (filter_descriptor_interface_1.isCompositeFilterDescriptor(filter)) {
|
|
46
|
+
if ((0, filter_descriptor_interface_1.isCompositeFilterDescriptor)(filter)) {
|
|
47
47
|
normalizeOperator(result);
|
|
48
48
|
}
|
|
49
49
|
return result;
|
|
@@ -51,9 +51,9 @@ var normalizeOperator = function (descriptor) {
|
|
|
51
51
|
}
|
|
52
52
|
};
|
|
53
53
|
var normalizeDescriptor = function (descriptor) {
|
|
54
|
-
if (!filter_descriptor_interface_1.isCompositeFilterDescriptor(descriptor)) {
|
|
54
|
+
if (!(0, filter_descriptor_interface_1.isCompositeFilterDescriptor)(descriptor)) {
|
|
55
55
|
return {
|
|
56
|
-
filters: utils_1.isArray(descriptor) ? descriptor : [descriptor],
|
|
56
|
+
filters: (0, utils_1.isArray)(descriptor) ? descriptor : [descriptor],
|
|
57
57
|
logic: "and"
|
|
58
58
|
};
|
|
59
59
|
}
|
|
@@ -61,16 +61,17 @@ var normalizeDescriptor = function (descriptor) {
|
|
|
61
61
|
};
|
|
62
62
|
// tslint:disable:max-line-length
|
|
63
63
|
/**
|
|
64
|
-
* Converts a [FilterDescriptor]({% slug api_kendo-data-query_filterdescriptor %}) into a [CompositeFilterDescriptor]({% slug api_kendo-data-query_compositefilterdescriptor %}). If a `CompositeFilterDescriptor` is passed, no modifications will be made.
|
|
64
|
+
* Converts a [`FilterDescriptor`]({% slug api_kendo-data-query_filterdescriptor %}) into a [`CompositeFilterDescriptor`]({% slug api_kendo-data-query_compositefilterdescriptor %}). If a `CompositeFilterDescriptor` is passed, no modifications will be made.
|
|
65
65
|
*
|
|
66
66
|
* @param {CompositeFilterDescriptor | FilterDescriptor} descriptor - The descriptor that will be normalized.
|
|
67
67
|
* @returns {CompositeFilterDescriptor} - The normalized descriptor.
|
|
68
68
|
*/
|
|
69
69
|
// tslint:enable:max-line-length
|
|
70
|
-
|
|
71
|
-
if (utils_1.isPresent(descriptor)) {
|
|
70
|
+
var normalizeFilters = function (descriptor) {
|
|
71
|
+
if ((0, utils_1.isPresent)(descriptor)) {
|
|
72
72
|
descriptor = normalizeDescriptor(descriptor);
|
|
73
73
|
normalizeOperator(descriptor);
|
|
74
74
|
}
|
|
75
75
|
return descriptor;
|
|
76
76
|
};
|
|
77
|
+
exports.normalizeFilters = normalizeFilters;
|
package/dist/npm/funcs.js
CHANGED
|
@@ -4,23 +4,27 @@ exports.identity = exports.constant = exports.compose = exports.ifElse = void 0;
|
|
|
4
4
|
/**
|
|
5
5
|
* @hidden
|
|
6
6
|
*/
|
|
7
|
-
|
|
7
|
+
var ifElse = function (predicate, right, left) { return function (value) { return predicate(value) ? right(value) : left(value); }; };
|
|
8
|
+
exports.ifElse = ifElse;
|
|
8
9
|
/**
|
|
9
10
|
* @hidden
|
|
10
11
|
* Performs the right-to-left function composition. Functions should have a unary.
|
|
11
12
|
*/
|
|
12
|
-
|
|
13
|
+
var compose = function () {
|
|
13
14
|
var args = [];
|
|
14
15
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
15
16
|
args[_i] = arguments[_i];
|
|
16
17
|
}
|
|
17
18
|
return function (data) { return args.reduceRight(function (acc, curr) { return curr(acc); }, data); };
|
|
18
19
|
};
|
|
20
|
+
exports.compose = compose;
|
|
19
21
|
/**
|
|
20
22
|
* @hidden
|
|
21
23
|
*/
|
|
22
|
-
|
|
24
|
+
var constant = function (x) { return function () { return x; }; };
|
|
25
|
+
exports.constant = constant;
|
|
23
26
|
/**
|
|
24
27
|
* @hidden
|
|
25
28
|
*/
|
|
26
|
-
|
|
29
|
+
var identity = function (x) { return x; };
|
|
30
|
+
exports.identity = identity;
|