@sisense/sdk-data 1.14.0 → 1.15.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.
Files changed (45) hide show
  1. package/dist/cjs/dimensional-model/filters/factory.d.ts +4 -2
  2. package/dist/cjs/dimensional-model/filters/factory.js +5 -3
  3. package/dist/cjs/dimensional-model/filters/filters.d.ts +4 -2
  4. package/dist/cjs/dimensional-model/filters/filters.js +8 -3
  5. package/dist/cjs/dimensional-model/filters/utils/condition-filter-util.js +2 -1
  6. package/dist/cjs/dimensional-model/filters/utils/filter-from-jaql-util.js +5 -2
  7. package/dist/cjs/dimensional-model/filters/utils/filter-types-util.js +1 -1
  8. package/dist/cjs/package.json +12 -0
  9. package/dist/dimensional-model/filters/factory.d.ts +4 -2
  10. package/dist/dimensional-model/filters/factory.js +5 -3
  11. package/dist/dimensional-model/filters/filters.d.ts +4 -2
  12. package/dist/dimensional-model/filters/filters.js +8 -3
  13. package/dist/dimensional-model/filters/utils/condition-filter-util.js +2 -1
  14. package/dist/dimensional-model/filters/utils/filter-from-jaql-util.js +5 -2
  15. package/dist/dimensional-model/filters/utils/filter-types-util.js +1 -1
  16. package/dist/tsconfig.prod.cjs.tsbuildinfo +1 -0
  17. package/package.json +4 -9
  18. package/dist/cjs/dimensional-model/analytics/factory.test.d.ts +0 -1
  19. package/dist/cjs/dimensional-model/analytics/factory.test.js +0 -99
  20. package/dist/cjs/dimensional-model/attributes.test.d.ts +0 -1
  21. package/dist/cjs/dimensional-model/attributes.test.js +0 -154
  22. package/dist/cjs/dimensional-model/base.test.d.ts +0 -1
  23. package/dist/cjs/dimensional-model/base.test.js +0 -17
  24. package/dist/cjs/dimensional-model/dimensions.test.d.ts +0 -1
  25. package/dist/cjs/dimensional-model/dimensions.test.js +0 -84
  26. package/dist/cjs/dimensional-model/filters/factory.test.d.ts +0 -1
  27. package/dist/cjs/dimensional-model/filters/factory.test.js +0 -366
  28. package/dist/cjs/dimensional-model/filters/filters.test.d.ts +0 -1
  29. package/dist/cjs/dimensional-model/filters/filters.test.js +0 -241
  30. package/dist/cjs/dimensional-model/filters/utils/filter-code-util.test.d.ts +0 -1
  31. package/dist/cjs/dimensional-model/filters/utils/filter-code-util.test.js +0 -32
  32. package/dist/cjs/dimensional-model/filters/utils/filter-from-jaql-util.test.d.ts +0 -1
  33. package/dist/cjs/dimensional-model/filters/utils/filter-from-jaql-util.test.js +0 -623
  34. package/dist/cjs/dimensional-model/filters/utils/filter-matcher-utils.test.d.ts +0 -1
  35. package/dist/cjs/dimensional-model/filters/utils/filter-matcher-utils.test.js +0 -236
  36. package/dist/cjs/dimensional-model/measures/factory.test.d.ts +0 -1
  37. package/dist/cjs/dimensional-model/measures/factory.test.js +0 -481
  38. package/dist/cjs/dimensional-model/measures/measures.test.d.ts +0 -1
  39. package/dist/cjs/dimensional-model/measures/measures.test.js +0 -79
  40. package/dist/cjs/dimensional-model/simple-column-types.test.d.ts +0 -1
  41. package/dist/cjs/dimensional-model/simple-column-types.test.js +0 -85
  42. package/dist/cjs/dimensional-model/types.test.d.ts +0 -1
  43. package/dist/cjs/dimensional-model/types.test.js +0 -33
  44. package/dist/cjs/utils.test.d.ts +0 -1
  45. package/dist/cjs/utils.test.js +0 -182
@@ -1,623 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- /* eslint-disable @typescript-eslint/no-unsafe-member-access */
27
- /* eslint-disable vitest/expect-expect */
28
- const vitest_1 = require("vitest");
29
- const filter_from_jaql_util_js_1 = require("./filter-from-jaql-util.js");
30
- const filterFactory = __importStar(require("../factory.js"));
31
- const types_js_1 = require("./types.js");
32
- const attribute_measure_util_js_1 = require("./attribute-measure-util.js");
33
- const condition_filter_util_js_1 = require("./condition-filter-util.js");
34
- const filter_from_jaql_util_js_2 = require("./filter-from-jaql-util.js");
35
- const filter_code_util_js_1 = require("./filter-code-util.js");
36
- (0, vitest_1.describe)('filter-from-jaql-util', () => {
37
- (0, vitest_1.describe)('createFilterFromJaqlInternal', () => {
38
- const guid = 'instanceid';
39
- const expectEqualFilters = (actual, expected) => {
40
- // delete compose code
41
- delete actual.composeCode;
42
- expect(Object.assign({}, actual)).toEqual(Object.assign({}, expected));
43
- expect(actual.serializable()).toBeDefined();
44
- };
45
- (0, vitest_1.describe)('MembersFilter', () => {
46
- it('should handle include all', () => {
47
- const jaql = {
48
- table: 'Category',
49
- column: 'Category',
50
- dim: '[Category.Category]',
51
- datatype: 'text',
52
- filter: {
53
- explicit: true,
54
- multiSelection: true,
55
- all: true,
56
- },
57
- title: 'Category',
58
- };
59
- const filter = (0, filter_from_jaql_util_js_1.createFilterFromJaqlInternal)(jaql, guid);
60
- const attribute = (0, attribute_measure_util_js_1.createAttributeFromFilterJaql)(jaql);
61
- const expectedFilter = filterFactory.members(attribute, [], [], guid);
62
- expectEqualFilters(filter, expectedFilter);
63
- });
64
- it('should handle members text', () => {
65
- const jaql = {
66
- table: 'Category',
67
- column: 'Category',
68
- dim: '[Category.Category]',
69
- datatype: 'text',
70
- filter: {
71
- explicit: true,
72
- multiSelection: true,
73
- members: ['Cell Phones', 'GPS Devices'],
74
- },
75
- title: 'Category',
76
- };
77
- const filter = (0, filter_from_jaql_util_js_1.createFilterFromJaqlInternal)(jaql, guid);
78
- const attribute = (0, attribute_measure_util_js_1.createAttributeFromFilterJaql)(jaql);
79
- const expectedFilter = filterFactory.members(attribute, jaql.filter.members, [], guid);
80
- expectEqualFilters(filter, expectedFilter);
81
- });
82
- test('should handle members datetime', () => {
83
- [
84
- {
85
- title: 'Years',
86
- table: 'Commerce',
87
- column: 'Date',
88
- dim: '[Commerce.Date (Calendar)]',
89
- datatype: 'datetime',
90
- level: 'years',
91
- filter: {
92
- explicit: true,
93
- multiSelection: true,
94
- members: ['2013-01-01T00:00:00', '2011-01-01T00:00:00'],
95
- },
96
- },
97
- {
98
- datasource: {
99
- title: 'Sample ECommerce',
100
- fullname: 'LocalHost/Sample ECommerce',
101
- id: 'localhost_aSampleIAAaECommerce',
102
- address: 'LocalHost',
103
- database: 'aSampleIAAaECommerce',
104
- },
105
- column: 'Date',
106
- dim: '[Commerce.Date (Calendar)]',
107
- datatype: 'datetime',
108
- level: 'years',
109
- title: 'YEARS',
110
- collapsed: true,
111
- isDashboardFilter: true,
112
- filter: {
113
- explicit: true,
114
- multiSelection: true,
115
- members: ['2013-01-01T00:00:00'],
116
- },
117
- },
118
- ].forEach((jaql) => {
119
- const filter = (0, filter_from_jaql_util_js_1.createFilterFromJaqlInternal)(jaql, guid);
120
- const attribute = (0, attribute_measure_util_js_1.createAttributeFromFilterJaql)(jaql);
121
- const expectedFilter = filterFactory.members(attribute, jaql.filter.members, [], guid);
122
- expectEqualFilters(filter, expectedFilter);
123
- });
124
- });
125
- test('should handle JAQL without table name', () => {
126
- const jaql = {
127
- column: 'Category',
128
- dim: '[Category.Category]',
129
- datatype: 'text',
130
- filter: {
131
- explicit: true,
132
- multiSelection: true,
133
- members: ['Cell Phones', 'GPS Devices'],
134
- },
135
- title: 'Category',
136
- };
137
- const filter = (0, filter_from_jaql_util_js_1.createFilterFromJaqlInternal)(jaql, guid);
138
- const attribute = (0, attribute_measure_util_js_1.createAttributeFromFilterJaql)(jaql);
139
- const expectedFilter = filterFactory.members(attribute, jaql.filter.members, [], guid);
140
- expectEqualFilters(filter, expectedFilter);
141
- });
142
- it('should handle deactivated members', () => {
143
- const jaql = {
144
- datasource: {
145
- title: 'Sample ECommerce',
146
- fullname: 'LocalHost/Sample ECommerce',
147
- id: 'localhost_aSampleIAAaECommerce',
148
- address: 'LocalHost',
149
- database: 'aSampleIAAaECommerce',
150
- },
151
- column: 'Country',
152
- dim: '[country.Country]',
153
- datatype: 'text',
154
- title: 'COUNTRY',
155
- collapsed: true,
156
- isDashboardFilter: true,
157
- filter: {
158
- explicit: true,
159
- multiSelection: true,
160
- members: ['Albania', 'Algeria', 'Angola'],
161
- filter: {
162
- turnedOff: true,
163
- exclude: {
164
- members: ['Angola'],
165
- },
166
- },
167
- },
168
- };
169
- const filter = (0, filter_from_jaql_util_js_1.createFilterFromJaqlInternal)(jaql, guid);
170
- const attribute = (0, attribute_measure_util_js_1.createAttributeFromFilterJaql)(jaql);
171
- const expectedFilter = filterFactory.members(attribute, ['Albania', 'Algeria'], ['Angola'], guid);
172
- expectEqualFilters(filter, expectedFilter);
173
- });
174
- });
175
- (0, vitest_1.describe)('NumericFilter', () => {
176
- test('should handle unary operator for number', () => {
177
- [
178
- { operator: types_js_1.ConditionFilterType.GREATER_THAN, factoryFunc: filterFactory.greaterThan },
179
- {
180
- operator: types_js_1.ConditionFilterType.GREATER_THAN_OR_EQUAL,
181
- factoryFunc: filterFactory.greaterThanOrEqual,
182
- },
183
- { operator: types_js_1.ConditionFilterType.EQUALS, factoryFunc: filterFactory.equals },
184
- { operator: types_js_1.ConditionFilterType.LESS_THAN, factoryFunc: filterFactory.lessThan },
185
- {
186
- operator: types_js_1.ConditionFilterType.LESS_THAN_OR_EQUAL,
187
- factoryFunc: filterFactory.lessThanOrEqual,
188
- },
189
- ].forEach((test) => {
190
- const jaql = {
191
- table: 'Commerce',
192
- column: 'Revenue',
193
- datatype: 'numeric',
194
- dim: '[Commerce.Revenue]',
195
- title: 'Revenue',
196
- filter: {
197
- [test.operator]: 1000,
198
- },
199
- };
200
- const filter = (0, filter_from_jaql_util_js_1.createFilterFromJaqlInternal)(jaql, guid);
201
- const attribute = (0, attribute_measure_util_js_1.createAttributeFromFilterJaql)(jaql);
202
- const expectedFilter = test.factoryFunc(attribute, jaql.filter[test.operator], guid);
203
- expectEqualFilters(filter, expectedFilter);
204
- });
205
- });
206
- test('should handle unary operator for string', () => {
207
- [
208
- { operator: types_js_1.ConditionFilterType.EQUALS, factoryFunc: filterFactory.equals },
209
- { operator: types_js_1.ConditionFilterType.STARTS_WITH, factoryFunc: filterFactory.startsWith },
210
- {
211
- operator: types_js_1.ConditionFilterType.DOESNT_START_WITH,
212
- factoryFunc: filterFactory.doesntStartWith,
213
- },
214
- {
215
- operator: types_js_1.ConditionFilterType.ENDS_WITH,
216
- factoryFunc: filterFactory.endsWith,
217
- },
218
- {
219
- operator: types_js_1.ConditionFilterType.DOESNT_END_WITH,
220
- factoryFunc: filterFactory.doesntEndWith,
221
- },
222
- {
223
- operator: types_js_1.ConditionFilterType.CONTAINS,
224
- factoryFunc: filterFactory.contains,
225
- },
226
- {
227
- operator: types_js_1.ConditionFilterType.DOESNT_CONTAIN,
228
- factoryFunc: filterFactory.doesntContain,
229
- },
230
- ].forEach((test) => {
231
- const jaql = {
232
- table: 'Country',
233
- column: 'Country',
234
- datatype: 'text',
235
- dim: '[Country.Country]',
236
- title: 'Country',
237
- filter: {
238
- [test.operator]: 'ABC',
239
- },
240
- };
241
- const filter = (0, filter_from_jaql_util_js_1.createFilterFromJaqlInternal)(jaql, guid);
242
- const attribute = (0, attribute_measure_util_js_1.createAttributeFromFilterJaql)(jaql);
243
- const expectedFilter = test.factoryFunc(attribute, jaql.filter[test.operator], guid);
244
- expectEqualFilters(filter, expectedFilter);
245
- });
246
- });
247
- test('should handle binary operator', () => {
248
- [{ operator: types_js_1.ConditionFilterType.BETWEEN, factoryFunc: filterFactory.between }].forEach((test) => {
249
- const jaql = {
250
- table: 'Commerce',
251
- column: 'Revenue',
252
- datatype: 'numeric',
253
- dim: '[Commerce.Revenue]',
254
- title: 'Revenue',
255
- filter: {
256
- from: 1000,
257
- to: 2000,
258
- },
259
- };
260
- const filter = (0, filter_from_jaql_util_js_1.createFilterFromJaqlInternal)(jaql, guid);
261
- const attribute = (0, attribute_measure_util_js_1.createAttributeFromFilterJaql)(jaql);
262
- const expectedFilter = test.factoryFunc(attribute, jaql.filter.from, jaql.filter.to, guid);
263
- expectEqualFilters(filter, expectedFilter);
264
- });
265
- });
266
- test('should handle not between operator', () => {
267
- const jaql = {
268
- table: 'Commerce',
269
- column: 'Revenue',
270
- datatype: 'numeric',
271
- dim: '[Commerce.Revenue]',
272
- title: 'Revenue',
273
- filter: {
274
- exclude: {
275
- from: 1000,
276
- to: 2000,
277
- },
278
- },
279
- };
280
- const filter = (0, filter_from_jaql_util_js_1.createFilterFromJaqlInternal)(jaql, guid);
281
- const attribute = (0, attribute_measure_util_js_1.createAttributeFromFilterJaql)(jaql);
282
- const expectedFilter = filterFactory.exclude(filterFactory.between(attribute, jaql.filter.exclude.from, jaql.filter.exclude.to, guid), undefined, guid);
283
- expectEqualFilters(filter.filter, expectedFilter.filter);
284
- expect(filter.serializable()).toBeDefined();
285
- expect(filter.id).toEqual(expectedFilter.id);
286
- });
287
- });
288
- (0, vitest_1.describe)('RelativeDateFilter', () => {
289
- test('should handle dateRelativeFrom', () => {
290
- [
291
- {
292
- jaql: {
293
- title: 'Years',
294
- table: 'Commerce',
295
- column: 'Date',
296
- dim: '[Commerce.Date (Calendar)]',
297
- datatype: 'datetime',
298
- level: 'months',
299
- filter: {
300
- next: {
301
- count: 18,
302
- offset: 0,
303
- anchor: '2011-01',
304
- },
305
- },
306
- },
307
- factoryFunc: filterFactory.dateRelativeFrom,
308
- },
309
- ].forEach(({ jaql, factoryFunc }) => {
310
- const filter = (0, filter_from_jaql_util_js_1.createFilterFromJaqlInternal)(jaql, guid);
311
- const attribute = (0, attribute_measure_util_js_1.createAttributeFromFilterJaql)(jaql);
312
- const expectedFilter = factoryFunc(attribute, jaql.filter.next.offset, jaql.filter.next.count, jaql.filter.next.anchor, guid);
313
- expectEqualFilters(filter, expectedFilter);
314
- expect(filter.serializable()).toBeDefined();
315
- expect(filter.jaql().jaql).toEqual(expectedFilter.jaql().jaql);
316
- });
317
- });
318
- test('should handle dateRelativeTo', () => {
319
- [
320
- {
321
- jaql: {
322
- title: 'Years',
323
- table: 'Commerce',
324
- column: 'Date',
325
- dim: '[Commerce.Date (Calendar)]',
326
- datatype: 'datetime',
327
- level: 'months',
328
- filter: {
329
- last: {
330
- count: 18,
331
- offset: 0,
332
- anchor: '2011-01',
333
- },
334
- },
335
- },
336
- factoryFunc: filterFactory.dateRelativeTo,
337
- },
338
- ].forEach(({ jaql, factoryFunc }) => {
339
- const filter = (0, filter_from_jaql_util_js_1.createFilterFromJaqlInternal)(jaql, guid);
340
- const attribute = (0, attribute_measure_util_js_1.createAttributeFromFilterJaql)(jaql);
341
- const expectedFilter = factoryFunc(attribute, jaql.filter.last.offset, jaql.filter.last.count, jaql.filter.last.anchor, guid);
342
- expectEqualFilters(filter, expectedFilter);
343
- });
344
- });
345
- });
346
- (0, vitest_1.describe)('DateRangeFilter', () => {
347
- test('should handle', () => {
348
- const jaql = {
349
- title: 'Years',
350
- table: 'Commerce',
351
- column: 'Date',
352
- dim: '[Commerce.Date (Calendar)]',
353
- datatype: 'datetime',
354
- level: 'years',
355
- filter: {
356
- from: '2010-01-01',
357
- to: '2012-01-01',
358
- },
359
- };
360
- const filter = (0, filter_from_jaql_util_js_1.createFilterFromJaqlInternal)(jaql, guid);
361
- const attribute = (0, attribute_measure_util_js_1.createAttributeFromFilterJaql)(jaql);
362
- const expectedFilter = filterFactory.dateRange(attribute, '2010-01-01', '2012-01-01', guid);
363
- expectEqualFilters(filter, expectedFilter);
364
- expect(filter.from).toBeDefined();
365
- expect(filter.to).toBeDefined();
366
- expect(filter.level).toBeDefined();
367
- });
368
- });
369
- (0, vitest_1.describe)('RankingFilter', () => {
370
- it('should handle top', () => {
371
- const jaql = {
372
- table: 'Brand',
373
- column: 'Brand',
374
- datatype: 'text',
375
- title: 'Top 10 Brand by Total Revenue',
376
- dim: '[Brand.Brand]',
377
- filter: {
378
- top: 10,
379
- by: {
380
- table: 'Commerce',
381
- column: 'Revenue',
382
- datatype: 'numeric',
383
- title: 'sum Revenue',
384
- dim: '[Commerce.Revenue]',
385
- agg: 'sum',
386
- },
387
- },
388
- };
389
- const filter = (0, filter_from_jaql_util_js_1.createFilterFromJaqlInternal)(jaql, guid);
390
- const attribute = (0, attribute_measure_util_js_1.createAttributeFromFilterJaql)(jaql);
391
- const measure = (0, attribute_measure_util_js_1.createMeasureFromRankingFilterJaql)(jaql.filter.by);
392
- const expectedFilter = filterFactory.topRanking(attribute, measure, jaql.filter.top, guid);
393
- expectEqualFilters(filter, expectedFilter);
394
- });
395
- it('should handle bottom', () => {
396
- const jaql = {
397
- table: 'Brand',
398
- column: 'Brand',
399
- datatype: 'text',
400
- title: 'Bottom 10 Brand by Total Revenue',
401
- dim: '[Brand.Brand]',
402
- filter: {
403
- bottom: 10,
404
- by: {
405
- table: 'Commerce',
406
- column: 'Revenue',
407
- datatype: 'numeric',
408
- title: 'sum Revenue',
409
- dim: '[Commerce.Revenue]',
410
- agg: 'sum',
411
- },
412
- },
413
- };
414
- const filter = (0, filter_from_jaql_util_js_1.createFilterFromJaqlInternal)(jaql, guid);
415
- const attribute = (0, attribute_measure_util_js_1.createAttributeFromFilterJaql)(jaql);
416
- const measure = (0, attribute_measure_util_js_1.createMeasureFromRankingFilterJaql)(jaql.filter.by);
417
- const expectedFilter = filterFactory.bottomRanking(attribute, measure, jaql.filter.bottom, guid);
418
- expectEqualFilters(filter, expectedFilter);
419
- });
420
- });
421
- (0, vitest_1.describe)('LogicalAttributeFilter', () => {
422
- it('should handle or', () => {
423
- const jaql = {
424
- table: 'Brand',
425
- column: 'Brand',
426
- datatype: 'text',
427
- title: 'Brand',
428
- dim: '[Brand.Brand]',
429
- filter: {
430
- or: [
431
- {
432
- startsWith: 'A',
433
- },
434
- {
435
- endsWith: 's',
436
- },
437
- ],
438
- },
439
- };
440
- const filter = (0, filter_from_jaql_util_js_1.createFilterFromJaqlInternal)(jaql, guid);
441
- const attribute = (0, attribute_measure_util_js_1.createAttributeFromFilterJaql)(jaql);
442
- const expectedFilter = filterFactory.union(jaql.filter.or.map((c) => (0, condition_filter_util_js_1.createAttributeFilterFromConditionFilterJaql)(attribute, c, guid)), guid);
443
- expect(filter.type).toEqual(expectedFilter.type);
444
- expect(filter.id).toEqual(expectedFilter.id);
445
- expect(filter.serializable()).toBeDefined();
446
- });
447
- it('should handle and', () => {
448
- const jaql = {
449
- table: 'Brand',
450
- column: 'Brand',
451
- datatype: 'text',
452
- title: 'Brand',
453
- dim: '[Brand.Brand]',
454
- filter: {
455
- and: [
456
- {
457
- startsWith: 'A',
458
- },
459
- {
460
- endsWith: 's',
461
- },
462
- ],
463
- },
464
- };
465
- const filter = (0, filter_from_jaql_util_js_1.createFilterFromJaqlInternal)(jaql, guid);
466
- const attribute = (0, attribute_measure_util_js_1.createAttributeFromFilterJaql)(jaql);
467
- const expectedFilter = filterFactory.intersection(jaql.filter.and.map((c) => (0, condition_filter_util_js_1.createAttributeFilterFromConditionFilterJaql)(attribute, c, guid)), guid);
468
- expect(filter.type).toEqual(expectedFilter.type);
469
- expect(filter.id).toEqual(expectedFilter.id);
470
- expect(filter.serializable()).toBeDefined();
471
- });
472
- });
473
- (0, vitest_1.describe)('MeasureFilter', () => {
474
- it('should handle unary operation', () => {
475
- [
476
- {
477
- operator: types_js_1.ConditionFilterType.GREATER_THAN,
478
- factoryFunc: filterFactory.measureGreaterThan,
479
- },
480
- {
481
- operator: types_js_1.ConditionFilterType.GREATER_THAN_OR_EQUAL,
482
- factoryFunc: filterFactory.measureGreaterThanOrEqual,
483
- },
484
- { operator: types_js_1.ConditionFilterType.EQUALS, factoryFunc: filterFactory.measureEquals },
485
- { operator: types_js_1.ConditionFilterType.LESS_THAN, factoryFunc: filterFactory.measureLessThan },
486
- {
487
- operator: types_js_1.ConditionFilterType.LESS_THAN_OR_EQUAL,
488
- factoryFunc: filterFactory.measureLessThanOrEqual,
489
- },
490
- ].forEach((test) => {
491
- const jaql = {
492
- table: 'Commerce',
493
- column: 'Revenue',
494
- datatype: 'numeric',
495
- title: 'sum Revenue',
496
- dim: '[Commerce.Revenue]',
497
- agg: 'sum',
498
- filter: {
499
- [test.operator]: 2000,
500
- },
501
- };
502
- const filter = (0, filter_from_jaql_util_js_1.createFilterFromJaqlInternal)(jaql, guid);
503
- const measure = (0, attribute_measure_util_js_1.createMeasureFromFilterJaql)(jaql);
504
- expect(measure).toBeDefined();
505
- if (!measure)
506
- return;
507
- const expectedFilter = test.factoryFunc(measure, jaql.filter[test.operator], guid);
508
- expectEqualFilters(filter, expectedFilter);
509
- });
510
- });
511
- });
512
- (0, vitest_1.describe)('ExcludeFilter', () => {
513
- it('should handle exclude members', () => {
514
- const jaql = {
515
- table: 'Country',
516
- column: 'Country',
517
- datatype: 'text',
518
- title: 'exclude Turkey from Country',
519
- dim: '[Country.Country]',
520
- filter: {
521
- exclude: {
522
- members: ['Turkey'],
523
- },
524
- },
525
- };
526
- const filter = (0, filter_from_jaql_util_js_1.createFilterFromJaqlInternal)(jaql, guid);
527
- const attribute = (0, attribute_measure_util_js_1.createAttributeFromFilterJaql)(jaql);
528
- const expectedFilter = filterFactory.exclude((0, filter_code_util_js_1.withComposeCode)(filterFactory.members)(attribute, jaql.filter.exclude.members, undefined, guid), undefined, guid);
529
- expectEqualFilters(filter, expectedFilter);
530
- });
531
- });
532
- (0, vitest_1.describe)('Advanced filter (pass-through JAQL)', () => {
533
- test('should handle', () => {
534
- const jaql = {
535
- table: 'Commerce',
536
- column: 'Revenue',
537
- datatype: 'numeric',
538
- title: 'sum Revenue',
539
- filter: {
540
- custom: true,
541
- isAdvanced: true,
542
- },
543
- };
544
- const filter = (0, filter_from_jaql_util_js_1.createFilterFromJaqlInternal)(jaql, guid);
545
- const attribute = (0, attribute_measure_util_js_1.createAttributeFromFilterJaql)(jaql);
546
- const expectedFilter = filterFactory.customFilter(attribute, jaql.filter, guid);
547
- expect(filter.jaql()).toEqual(expectedFilter.jaql());
548
- expect(filter.jaql(true)).toEqual(expectedFilter.jaql(true));
549
- expect(filter.serializable()).toBeDefined();
550
- expect(filter.toJSON()).toBeDefined();
551
- });
552
- });
553
- (0, vitest_1.describe)('Generic filter (pass-through JAQL)', () => {
554
- test('should fall back to generic filter (pass-through JAQL)', () => {
555
- [
556
- // SIMULATE INVALID FILTER TYPE
557
- {
558
- table: 'Commerce',
559
- column: 'Revenue',
560
- datatype: 'numeric',
561
- title: 'sum Revenue',
562
- filter: {
563
- filterType: 'INVALID',
564
- },
565
- },
566
- {
567
- type: 'measure',
568
- formula: 'QUARTILE([042C4-365], 2)',
569
- context: {
570
- '[042C4-365]': {
571
- table: 'Commerce',
572
- column: 'Revenue',
573
- dim: '[Commerce.Revenue]',
574
- datatype: 'numeric',
575
- title: 'Revenue',
576
- },
577
- },
578
- title: 'QUARTILE([Revenue], 2)',
579
- datatype: 'numeric',
580
- filter: {
581
- fromNotEqual: '500',
582
- },
583
- },
584
- {
585
- table: 'Brand',
586
- column: 'Brand',
587
- dim: '[Brand.Brand]',
588
- datatype: 'text',
589
- merged: true,
590
- title: 'Brand',
591
- filter: {
592
- top: 10,
593
- by: {
594
- type: 'measure',
595
- formula: 'QUARTILE([042C4-365], 2)',
596
- context: {
597
- '[042C4-365]': {
598
- table: 'Commerce',
599
- column: 'Revenue',
600
- dim: '[Commerce.Revenue]',
601
- datatype: 'numeric',
602
- title: 'Revenue',
603
- },
604
- },
605
- title: 'QUARTILE([Revenue], 2)',
606
- datatype: 'numeric',
607
- },
608
- rankingMessage: 'QUARTILE([Revenue], 2)',
609
- },
610
- },
611
- ].forEach((item) => {
612
- const jaql = item;
613
- const filter = (0, filter_from_jaql_util_js_1.createFilterFromJaqlInternal)(jaql, guid);
614
- const expectedFilter = (0, filter_from_jaql_util_js_2.createGenericFilter)(jaql, guid);
615
- expect(filter.jaql()).toEqual(expectedFilter.jaql());
616
- expect(filter.jaql(true)).toEqual(expectedFilter.jaql(true));
617
- expect(filter.serializable()).toBeDefined();
618
- expect(filter.toJSON()).toBeDefined();
619
- });
620
- });
621
- });
622
- });
623
- });