@cubejs-client/core 1.3.15 → 1.3.16

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 (100) hide show
  1. package/dist/{cubejs-client-core.js → cubejs-client-core.cjs.js} +1016 -411
  2. package/dist/cubejs-client-core.cjs.js.map +1 -0
  3. package/dist/cubejs-client-core.umd.js +2901 -12088
  4. package/dist/cubejs-client-core.umd.js.map +1 -1
  5. package/dist/src/HttpTransport.d.ts +54 -0
  6. package/dist/src/HttpTransport.d.ts.map +1 -0
  7. package/dist/src/HttpTransport.js +55 -0
  8. package/dist/src/Meta.d.ts +62 -0
  9. package/dist/src/Meta.d.ts.map +1 -0
  10. package/dist/src/Meta.js +150 -0
  11. package/dist/src/ProgressResult.d.ts +8 -0
  12. package/dist/src/ProgressResult.d.ts.map +1 -0
  13. package/dist/src/ProgressResult.js +11 -0
  14. package/dist/src/RequestError.d.ts +6 -0
  15. package/dist/src/RequestError.d.ts.map +1 -0
  16. package/dist/src/RequestError.js +7 -0
  17. package/dist/src/ResultSet.d.ts +430 -0
  18. package/dist/src/ResultSet.d.ts.map +1 -0
  19. package/dist/src/ResultSet.js +952 -0
  20. package/dist/src/SqlQuery.d.ts +17 -0
  21. package/dist/src/SqlQuery.d.ts.map +1 -0
  22. package/dist/src/SqlQuery.js +11 -0
  23. package/dist/src/index.d.ts +194 -0
  24. package/dist/src/index.d.ts.map +1 -0
  25. package/dist/src/index.js +411 -0
  26. package/dist/src/index.umd.d.ts +3 -0
  27. package/dist/src/index.umd.d.ts.map +1 -0
  28. package/dist/src/index.umd.js +6 -0
  29. package/dist/src/time.d.ts +70 -0
  30. package/dist/src/time.d.ts.map +1 -0
  31. package/dist/src/time.js +249 -0
  32. package/dist/src/types.d.ts +424 -0
  33. package/dist/src/types.d.ts.map +1 -0
  34. package/dist/src/types.js +1 -0
  35. package/dist/src/utils.d.ts +19 -0
  36. package/dist/src/utils.d.ts.map +1 -0
  37. package/dist/src/utils.js +294 -0
  38. package/dist/test/CubeApi.test.d.ts +7 -0
  39. package/dist/test/CubeApi.test.d.ts.map +1 -0
  40. package/dist/test/CubeApi.test.js +279 -0
  41. package/dist/test/HttpTransport.test.d.ts +2 -0
  42. package/dist/test/HttpTransport.test.d.ts.map +1 -0
  43. package/dist/test/HttpTransport.test.js +244 -0
  44. package/dist/test/ResultSet.test.d.ts +7 -0
  45. package/dist/test/ResultSet.test.d.ts.map +1 -0
  46. package/dist/test/ResultSet.test.js +1725 -0
  47. package/dist/test/compare-date-range.test.d.ts +2 -0
  48. package/dist/test/compare-date-range.test.d.ts.map +1 -0
  49. package/dist/test/compare-date-range.test.js +742 -0
  50. package/dist/test/data-blending.test.d.ts +2 -0
  51. package/dist/test/data-blending.test.d.ts.map +1 -0
  52. package/dist/test/data-blending.test.js +423 -0
  53. package/dist/test/default-heuristics.test.d.ts +2 -0
  54. package/dist/test/default-heuristics.test.d.ts.map +1 -0
  55. package/dist/test/default-heuristics.test.js +108 -0
  56. package/dist/test/drill-down.test.d.ts +2 -0
  57. package/dist/test/drill-down.test.d.ts.map +1 -0
  58. package/dist/test/drill-down.test.js +373 -0
  59. package/dist/test/fixtures/datablending/load-responses.json +261 -0
  60. package/dist/test/granularity.test.d.ts +2 -0
  61. package/dist/test/granularity.test.d.ts.map +1 -0
  62. package/dist/test/granularity.test.js +218 -0
  63. package/dist/test/helpers.d.ts +283 -0
  64. package/dist/test/helpers.d.ts.map +1 -0
  65. package/dist/test/helpers.js +974 -0
  66. package/dist/test/index.test.d.ts +7 -0
  67. package/dist/test/index.test.d.ts.map +1 -0
  68. package/dist/test/index.test.js +370 -0
  69. package/dist/test/table.test.d.ts +2 -0
  70. package/dist/test/table.test.d.ts.map +1 -0
  71. package/dist/test/table.test.js +757 -0
  72. package/dist/test/utils.test.d.ts +2 -0
  73. package/dist/test/utils.test.d.ts.map +1 -0
  74. package/dist/test/utils.test.js +32 -0
  75. package/package.json +26 -21
  76. package/dist/cubejs-client-core.esm.js +0 -1639
  77. package/dist/cubejs-client-core.esm.js.map +0 -1
  78. package/dist/cubejs-client-core.js.map +0 -1
  79. package/index.d.ts +0 -1338
  80. package/src/HttpTransport.js +0 -60
  81. package/src/HttpTransport.test.js +0 -117
  82. package/src/Meta.js +0 -142
  83. package/src/ProgressResult.js +0 -13
  84. package/src/RequestError.js +0 -7
  85. package/src/ResultSet.js +0 -746
  86. package/src/SqlQuery.js +0 -13
  87. package/src/index.js +0 -398
  88. package/src/index.test.js +0 -454
  89. package/src/index.umd.js +0 -8
  90. package/src/tests/ResultSet.test.js +0 -1655
  91. package/src/tests/compare-date-range.test.js +0 -753
  92. package/src/tests/data-blending.test.js +0 -432
  93. package/src/tests/default-heuristics.test.js +0 -118
  94. package/src/tests/drill-down.test.js +0 -402
  95. package/src/tests/fixtures/datablending/load-responses.json +0 -261
  96. package/src/tests/granularity.test.js +0 -225
  97. package/src/tests/table.test.js +0 -791
  98. package/src/tests/utils.test.js +0 -35
  99. package/src/time.js +0 -296
  100. package/src/utils.js +0 -368
@@ -0,0 +1,742 @@
1
+ /* globals describe, test, expect */
2
+ import 'jest';
3
+ import ResultSet from '../src/ResultSet';
4
+ const loadResponses = [
5
+ {
6
+ queryType: 'compareDateRangeQuery',
7
+ results: [
8
+ {
9
+ query: {
10
+ measures: ['Orders.count'],
11
+ timeDimensions: [
12
+ {
13
+ dimension: 'Orders.ts',
14
+ granularity: 'day',
15
+ dateRange: ['2020-08-10T00:00:00.000', '2020-08-16T23:59:59.999'],
16
+ },
17
+ ],
18
+ filters: [],
19
+ timezone: 'UTC',
20
+ order: [],
21
+ dimensions: [],
22
+ },
23
+ data: [
24
+ {
25
+ 'Orders.ts.day': '2020-08-10T00:00:00.000',
26
+ 'Orders.ts': '2020-08-10T00:00:00.000',
27
+ 'Orders.count': 1,
28
+ compareDateRange: '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999',
29
+ },
30
+ {
31
+ 'Orders.ts.day': '2020-08-12T00:00:00.000',
32
+ 'Orders.ts': '2020-08-12T00:00:00.000',
33
+ 'Orders.count': 1,
34
+ compareDateRange: '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999',
35
+ },
36
+ ],
37
+ annotation: {
38
+ measures: {
39
+ 'Orders.count': {
40
+ title: 'Orders Count',
41
+ shortTitle: 'Count',
42
+ type: 'number',
43
+ drillMembers: ['Orders.id', 'Orders.title'],
44
+ drillMembersGrouped: { measures: [], dimensions: ['Orders.id', 'Orders.title'] },
45
+ },
46
+ },
47
+ dimensions: {},
48
+ segments: {},
49
+ timeDimensions: {
50
+ 'Orders.ts.day': { title: 'Orders Ts', shortTitle: 'Ts', type: 'time' },
51
+ 'Orders.ts': { title: 'Orders Ts', shortTitle: 'Ts', type: 'time' },
52
+ },
53
+ },
54
+ },
55
+ {
56
+ query: {
57
+ measures: ['Orders.count'],
58
+ timeDimensions: [
59
+ {
60
+ dimension: 'Orders.ts',
61
+ granularity: 'day',
62
+ dateRange: ['2020-08-03T00:00:00.000', '2020-08-09T23:59:59.999'],
63
+ },
64
+ ],
65
+ filters: [],
66
+ timezone: 'UTC',
67
+ order: [],
68
+ dimensions: [],
69
+ },
70
+ data: [
71
+ {
72
+ 'Orders.ts.day': '2020-08-03T00:00:00.000',
73
+ 'Orders.ts': '2020-08-03T00:00:00.000',
74
+ 'Orders.count': 2,
75
+ compareDateRange: '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999',
76
+ },
77
+ {
78
+ 'Orders.ts.day': '2020-08-04T00:00:00.000',
79
+ 'Orders.ts': '2020-08-04T00:00:00.000',
80
+ 'Orders.count': 1,
81
+ compareDateRange: '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999',
82
+ },
83
+ {
84
+ 'Orders.ts.day': '2020-08-06T00:00:00.000',
85
+ 'Orders.ts': '2020-08-06T00:00:00.000',
86
+ 'Orders.count': 1,
87
+ compareDateRange: '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999',
88
+ },
89
+ {
90
+ 'Orders.ts.day': '2020-08-08T00:00:00.000',
91
+ 'Orders.ts': '2020-08-08T00:00:00.000',
92
+ 'Orders.count': 1,
93
+ compareDateRange: '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999',
94
+ },
95
+ ],
96
+ annotation: {
97
+ measures: {
98
+ 'Orders.count': {
99
+ title: 'Orders Count',
100
+ shortTitle: 'Count',
101
+ type: 'number',
102
+ drillMembers: ['Orders.id', 'Orders.title'],
103
+ drillMembersGrouped: { measures: [], dimensions: ['Orders.id', 'Orders.title'] },
104
+ },
105
+ },
106
+ dimensions: {},
107
+ segments: {},
108
+ timeDimensions: {
109
+ 'Orders.ts.day': { title: 'Orders Ts', shortTitle: 'Ts', type: 'time' },
110
+ 'Orders.ts': { title: 'Orders Ts', shortTitle: 'Ts', type: 'time' },
111
+ },
112
+ },
113
+ },
114
+ ],
115
+ pivotQuery: {
116
+ measures: ['Orders.count'],
117
+ timeDimensions: [
118
+ {
119
+ dimension: 'Orders.ts',
120
+ granularity: 'day',
121
+ dateRange: ['2020-08-10T00:00:00.000', '2020-08-16T23:59:59.999'],
122
+ },
123
+ ],
124
+ filters: [],
125
+ timezone: 'UTC',
126
+ order: [],
127
+ dimensions: ['compareDateRange'],
128
+ queryType: 'compareDateRangeQuery',
129
+ },
130
+ },
131
+ {
132
+ queryType: 'compareDateRangeQuery',
133
+ results: [
134
+ {
135
+ query: {
136
+ measures: ['Orders.count'],
137
+ dimensions: ['Users.country'],
138
+ timeDimensions: [
139
+ {
140
+ dimension: 'Orders.ts',
141
+ granularity: 'day',
142
+ dateRange: ['2020-08-10T00:00:00.000', '2020-08-16T23:59:59.999'],
143
+ },
144
+ ],
145
+ filters: [],
146
+ timezone: 'UTC',
147
+ order: [],
148
+ },
149
+ data: [
150
+ {
151
+ 'Users.country': 'US',
152
+ 'Orders.ts.day': '2020-08-10T00:00:00.000',
153
+ 'Orders.ts': '2020-08-10T00:00:00.000',
154
+ 'Orders.count': 1,
155
+ compareDateRange: '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999',
156
+ },
157
+ {
158
+ 'Users.country': 'France',
159
+ 'Orders.ts.day': '2020-08-12T00:00:00.000',
160
+ 'Orders.ts': '2020-08-12T00:00:00.000',
161
+ 'Orders.count': 1,
162
+ compareDateRange: '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999',
163
+ },
164
+ ],
165
+ annotation: {
166
+ measures: {
167
+ 'Orders.count': {
168
+ title: 'Orders Count',
169
+ shortTitle: 'Count',
170
+ type: 'number',
171
+ drillMembers: ['Orders.id', 'Orders.title'],
172
+ drillMembersGrouped: {
173
+ measures: [],
174
+ dimensions: ['Orders.id', 'Orders.title'],
175
+ },
176
+ },
177
+ },
178
+ dimensions: {
179
+ 'Users.country': {
180
+ title: 'Users Country',
181
+ shortTitle: 'Country',
182
+ type: 'string',
183
+ },
184
+ },
185
+ segments: {},
186
+ timeDimensions: {
187
+ 'Orders.ts.day': {
188
+ title: 'Orders Ts',
189
+ shortTitle: 'Ts',
190
+ type: 'time',
191
+ },
192
+ 'Orders.ts': { title: 'Orders Ts', shortTitle: 'Ts', type: 'time' },
193
+ },
194
+ },
195
+ },
196
+ {
197
+ query: {
198
+ measures: ['Orders.count'],
199
+ dimensions: ['Users.country'],
200
+ timeDimensions: [
201
+ {
202
+ dimension: 'Orders.ts',
203
+ granularity: 'day',
204
+ dateRange: ['2020-08-03T00:00:00.000', '2020-08-09T23:59:59.999'],
205
+ },
206
+ ],
207
+ filters: [],
208
+ timezone: 'UTC',
209
+ order: [],
210
+ },
211
+ data: [
212
+ {
213
+ 'Users.country': 'Australia',
214
+ 'Orders.ts.day': '2020-08-03T00:00:00.000',
215
+ 'Orders.ts': '2020-08-03T00:00:00.000',
216
+ 'Orders.count': 2,
217
+ compareDateRange: '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999',
218
+ },
219
+ {
220
+ 'Users.country': 'France',
221
+ 'Orders.ts.day': '2020-08-04T00:00:00.000',
222
+ 'Orders.ts': '2020-08-04T00:00:00.000',
223
+ 'Orders.count': 1,
224
+ compareDateRange: '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999',
225
+ },
226
+ {
227
+ 'Users.country': 'US',
228
+ 'Orders.ts.day': '2020-08-06T00:00:00.000',
229
+ 'Orders.ts': '2020-08-06T00:00:00.000',
230
+ 'Orders.count': 1,
231
+ compareDateRange: '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999',
232
+ },
233
+ {
234
+ 'Users.country': 'France',
235
+ 'Orders.ts.day': '2020-08-08T00:00:00.000',
236
+ 'Orders.ts': '2020-08-08T00:00:00.000',
237
+ 'Orders.count': 1,
238
+ compareDateRange: '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999',
239
+ },
240
+ ],
241
+ annotation: {
242
+ measures: {
243
+ 'Orders.count': {
244
+ title: 'Orders Count',
245
+ shortTitle: 'Count',
246
+ type: 'number',
247
+ drillMembers: ['Orders.id', 'Orders.title'],
248
+ drillMembersGrouped: {
249
+ measures: [],
250
+ dimensions: ['Orders.id', 'Orders.title'],
251
+ },
252
+ },
253
+ },
254
+ dimensions: {
255
+ 'Users.country': {
256
+ title: 'Users Country',
257
+ shortTitle: 'Country',
258
+ type: 'string',
259
+ },
260
+ },
261
+ segments: {},
262
+ timeDimensions: {
263
+ 'Orders.ts.day': {
264
+ title: 'Orders Ts',
265
+ shortTitle: 'Ts',
266
+ type: 'time',
267
+ },
268
+ 'Orders.ts': { title: 'Orders Ts', shortTitle: 'Ts', type: 'time' },
269
+ },
270
+ },
271
+ },
272
+ ],
273
+ pivotQuery: {
274
+ measures: ['Orders.count'],
275
+ dimensions: ['compareDateRange', 'Users.country'],
276
+ timeDimensions: [
277
+ {
278
+ dimension: 'Orders.ts',
279
+ granularity: 'day',
280
+ dateRange: ['2020-08-03T00:00:00.000', '2020-08-09T23:59:59.999'],
281
+ },
282
+ ],
283
+ filters: [],
284
+ timezone: 'UTC',
285
+ order: [],
286
+ queryType: 'compareDateRangeQuery',
287
+ },
288
+ },
289
+ ];
290
+ describe('compare date range', () => {
291
+ const resultSet1 = new ResultSet(loadResponses[0]);
292
+ const resultSet2 = new ResultSet(loadResponses[1]);
293
+ describe('series and seriesNames', () => {
294
+ test('with a single time dimension', () => {
295
+ expect(resultSet1.seriesNames()).toStrictEqual([
296
+ {
297
+ key: '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,Orders.count',
298
+ title: '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999, Orders Count',
299
+ shortTitle: '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999, Count',
300
+ yValues: ['2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999', 'Orders.count'],
301
+ },
302
+ {
303
+ key: '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,Orders.count',
304
+ title: '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999, Orders Count',
305
+ shortTitle: '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999, Count',
306
+ yValues: ['2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999', 'Orders.count'],
307
+ },
308
+ ]);
309
+ expect(resultSet1.series()).toStrictEqual([
310
+ {
311
+ key: '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,Orders.count',
312
+ series: [
313
+ {
314
+ value: 1,
315
+ x: '2020-08-10T00:00:00.000',
316
+ },
317
+ {
318
+ value: 0,
319
+ x: '2020-08-11T00:00:00.000',
320
+ },
321
+ {
322
+ value: 1,
323
+ x: '2020-08-12T00:00:00.000',
324
+ },
325
+ {
326
+ value: 0,
327
+ x: '2020-08-13T00:00:00.000',
328
+ },
329
+ {
330
+ value: 0,
331
+ x: '2020-08-14T00:00:00.000',
332
+ },
333
+ {
334
+ value: 0,
335
+ x: '2020-08-15T00:00:00.000',
336
+ },
337
+ {
338
+ value: 0,
339
+ x: '2020-08-16T00:00:00.000',
340
+ },
341
+ ],
342
+ shortTitle: '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999, Count',
343
+ title: '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999, Orders Count',
344
+ },
345
+ {
346
+ key: '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,Orders.count',
347
+ series: [
348
+ {
349
+ value: 2,
350
+ x: '2020-08-10T00:00:00.000',
351
+ },
352
+ {
353
+ value: 1,
354
+ x: '2020-08-11T00:00:00.000',
355
+ },
356
+ {
357
+ value: 0,
358
+ x: '2020-08-12T00:00:00.000',
359
+ },
360
+ {
361
+ value: 1,
362
+ x: '2020-08-13T00:00:00.000',
363
+ },
364
+ {
365
+ value: 0,
366
+ x: '2020-08-14T00:00:00.000',
367
+ },
368
+ {
369
+ value: 1,
370
+ x: '2020-08-15T00:00:00.000',
371
+ },
372
+ {
373
+ value: 0,
374
+ x: '2020-08-16T00:00:00.000',
375
+ },
376
+ ],
377
+ shortTitle: '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999, Count',
378
+ title: '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999, Orders Count',
379
+ },
380
+ ]);
381
+ });
382
+ });
383
+ describe('chartPivot', () => {
384
+ test('with a single time dimension', () => {
385
+ expect(resultSet1.chartPivot()).toStrictEqual([
386
+ {
387
+ x: '2020-08-10T00:00:00.000',
388
+ xValues: ['2020-08-10T00:00:00.000'],
389
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,Orders.count': 1,
390
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,Orders.count': 2,
391
+ },
392
+ {
393
+ x: '2020-08-11T00:00:00.000',
394
+ xValues: ['2020-08-11T00:00:00.000'],
395
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,Orders.count': 0,
396
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,Orders.count': 1,
397
+ },
398
+ {
399
+ x: '2020-08-12T00:00:00.000',
400
+ xValues: ['2020-08-12T00:00:00.000'],
401
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,Orders.count': 1,
402
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,Orders.count': 0,
403
+ },
404
+ {
405
+ x: '2020-08-13T00:00:00.000',
406
+ xValues: ['2020-08-13T00:00:00.000'],
407
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,Orders.count': 0,
408
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,Orders.count': 1,
409
+ },
410
+ {
411
+ x: '2020-08-14T00:00:00.000',
412
+ xValues: ['2020-08-14T00:00:00.000'],
413
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,Orders.count': 0,
414
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,Orders.count': 0,
415
+ },
416
+ {
417
+ x: '2020-08-15T00:00:00.000',
418
+ xValues: ['2020-08-15T00:00:00.000'],
419
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,Orders.count': 0,
420
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,Orders.count': 1,
421
+ },
422
+ {
423
+ x: '2020-08-16T00:00:00.000',
424
+ xValues: ['2020-08-16T00:00:00.000'],
425
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,Orders.count': 0,
426
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,Orders.count': 0,
427
+ },
428
+ ]);
429
+ });
430
+ test('with two dimensions', () => {
431
+ expect(resultSet2.chartPivot()).toStrictEqual([
432
+ {
433
+ x: '2020-08-10T00:00:00.000',
434
+ xValues: ['2020-08-10T00:00:00.000'],
435
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,US,Orders.count': 1,
436
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,France,Orders.count': 0,
437
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,Australia,Orders.count': 2,
438
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,France,Orders.count': 0,
439
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,US,Orders.count': 0,
440
+ },
441
+ {
442
+ x: '2020-08-11T00:00:00.000',
443
+ xValues: ['2020-08-11T00:00:00.000'],
444
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,US,Orders.count': 0,
445
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,France,Orders.count': 0,
446
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,Australia,Orders.count': 0,
447
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,France,Orders.count': 1,
448
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,US,Orders.count': 0,
449
+ },
450
+ {
451
+ x: '2020-08-12T00:00:00.000',
452
+ xValues: ['2020-08-12T00:00:00.000'],
453
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,US,Orders.count': 0,
454
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,France,Orders.count': 1,
455
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,Australia,Orders.count': 0,
456
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,France,Orders.count': 0,
457
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,US,Orders.count': 0,
458
+ },
459
+ {
460
+ x: '2020-08-13T00:00:00.000',
461
+ xValues: ['2020-08-13T00:00:00.000'],
462
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,US,Orders.count': 0,
463
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,France,Orders.count': 0,
464
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,Australia,Orders.count': 0,
465
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,France,Orders.count': 0,
466
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,US,Orders.count': 1,
467
+ },
468
+ {
469
+ x: '2020-08-14T00:00:00.000',
470
+ xValues: ['2020-08-14T00:00:00.000'],
471
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,US,Orders.count': 0,
472
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,France,Orders.count': 0,
473
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,Australia,Orders.count': 0,
474
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,France,Orders.count': 0,
475
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,US,Orders.count': 0,
476
+ },
477
+ {
478
+ x: '2020-08-15T00:00:00.000',
479
+ xValues: ['2020-08-15T00:00:00.000'],
480
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,US,Orders.count': 0,
481
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,France,Orders.count': 0,
482
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,Australia,Orders.count': 0,
483
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,France,Orders.count': 1,
484
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,US,Orders.count': 0,
485
+ },
486
+ {
487
+ x: '2020-08-16T00:00:00.000',
488
+ xValues: ['2020-08-16T00:00:00.000'],
489
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,US,Orders.count': 0,
490
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,France,Orders.count': 0,
491
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,Australia,Orders.count': 0,
492
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,France,Orders.count': 0,
493
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,US,Orders.count': 0,
494
+ },
495
+ ]);
496
+ });
497
+ });
498
+ describe('tablePivot and tableColumns', () => {
499
+ test('with a single time dimension', () => {
500
+ const pivotConfig = {
501
+ x: ['Orders.ts.day'],
502
+ y: ['compareDateRange', 'measures'],
503
+ };
504
+ expect(resultSet1.tableColumns(pivotConfig)).toMatchObject([
505
+ {
506
+ key: 'Orders.ts.day',
507
+ title: 'Orders Ts',
508
+ shortTitle: 'Ts',
509
+ type: 'time',
510
+ dataIndex: 'Orders.ts.day',
511
+ },
512
+ {
513
+ key: '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999',
514
+ title: '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999',
515
+ shortTitle: '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999',
516
+ children: [
517
+ {
518
+ key: 'Orders.count',
519
+ type: 'number',
520
+ dataIndex: '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,Orders.count',
521
+ title: 'Orders Count',
522
+ shortTitle: 'Count',
523
+ },
524
+ ],
525
+ },
526
+ {
527
+ key: '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999',
528
+ title: '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999',
529
+ shortTitle: '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999',
530
+ children: [
531
+ {
532
+ key: 'Orders.count',
533
+ type: 'number',
534
+ dataIndex: '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,Orders.count',
535
+ title: 'Orders Count',
536
+ shortTitle: 'Count',
537
+ },
538
+ ],
539
+ },
540
+ ]);
541
+ expect(resultSet1.tablePivot(pivotConfig)).toStrictEqual([
542
+ {
543
+ 'Orders.ts.day': '2020-08-10T00:00:00.000',
544
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,Orders.count': 1,
545
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,Orders.count': 2,
546
+ },
547
+ {
548
+ 'Orders.ts.day': '2020-08-11T00:00:00.000',
549
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,Orders.count': 0,
550
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,Orders.count': 1,
551
+ },
552
+ {
553
+ 'Orders.ts.day': '2020-08-12T00:00:00.000',
554
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,Orders.count': 1,
555
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,Orders.count': 0,
556
+ },
557
+ {
558
+ 'Orders.ts.day': '2020-08-13T00:00:00.000',
559
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,Orders.count': 0,
560
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,Orders.count': 1,
561
+ },
562
+ {
563
+ 'Orders.ts.day': '2020-08-14T00:00:00.000',
564
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,Orders.count': 0,
565
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,Orders.count': 0,
566
+ },
567
+ {
568
+ 'Orders.ts.day': '2020-08-15T00:00:00.000',
569
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,Orders.count': 0,
570
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,Orders.count': 1,
571
+ },
572
+ {
573
+ 'Orders.ts.day': '2020-08-16T00:00:00.000',
574
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,Orders.count': 0,
575
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,Orders.count': 0,
576
+ },
577
+ ]);
578
+ });
579
+ test('with two dimensions', () => {
580
+ const pivotConfig = {
581
+ x: ['Orders.ts.day'],
582
+ y: ['compareDateRange', 'Users.country', 'measures'],
583
+ };
584
+ expect(resultSet2.tableColumns(pivotConfig)).toMatchObject([
585
+ {
586
+ key: 'Orders.ts.day',
587
+ title: 'Orders Ts',
588
+ shortTitle: 'Ts',
589
+ type: 'time',
590
+ dataIndex: 'Orders.ts.day',
591
+ },
592
+ {
593
+ key: '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999',
594
+ title: '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999',
595
+ shortTitle: '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999',
596
+ children: [
597
+ {
598
+ key: 'US',
599
+ type: 'string',
600
+ title: 'Users Country US',
601
+ shortTitle: 'US',
602
+ children: [
603
+ {
604
+ key: 'Orders.count',
605
+ type: 'number',
606
+ dataIndex: '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,US,Orders.count',
607
+ title: 'Orders Count',
608
+ shortTitle: 'Count',
609
+ },
610
+ ],
611
+ },
612
+ {
613
+ key: 'France',
614
+ type: 'string',
615
+ title: 'Users Country France',
616
+ shortTitle: 'France',
617
+ children: [
618
+ {
619
+ key: 'Orders.count',
620
+ type: 'number',
621
+ dataIndex: '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,France,Orders.count',
622
+ title: 'Orders Count',
623
+ shortTitle: 'Count',
624
+ },
625
+ ],
626
+ },
627
+ ],
628
+ },
629
+ {
630
+ key: '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999',
631
+ title: '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999',
632
+ shortTitle: '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999',
633
+ children: [
634
+ {
635
+ key: 'Australia',
636
+ type: 'string',
637
+ title: 'Users Country Australia',
638
+ shortTitle: 'Australia',
639
+ children: [
640
+ {
641
+ key: 'Orders.count',
642
+ type: 'number',
643
+ dataIndex: '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,Australia,Orders.count',
644
+ title: 'Orders Count',
645
+ shortTitle: 'Count',
646
+ },
647
+ ],
648
+ },
649
+ {
650
+ key: 'France',
651
+ type: 'string',
652
+ title: 'Users Country France',
653
+ shortTitle: 'France',
654
+ children: [
655
+ {
656
+ key: 'Orders.count',
657
+ type: 'number',
658
+ dataIndex: '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,France,Orders.count',
659
+ title: 'Orders Count',
660
+ shortTitle: 'Count',
661
+ },
662
+ ],
663
+ },
664
+ {
665
+ key: 'US',
666
+ type: 'string',
667
+ title: 'Users Country US',
668
+ shortTitle: 'US',
669
+ children: [
670
+ {
671
+ key: 'Orders.count',
672
+ type: 'number',
673
+ dataIndex: '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,US,Orders.count',
674
+ title: 'Orders Count',
675
+ shortTitle: 'Count',
676
+ },
677
+ ],
678
+ },
679
+ ],
680
+ },
681
+ ]);
682
+ expect(resultSet2.tablePivot(pivotConfig)).toStrictEqual([
683
+ {
684
+ 'Orders.ts.day': '2020-08-10T00:00:00.000',
685
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,US,Orders.count': 1,
686
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,France,Orders.count': 0,
687
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,Australia,Orders.count': 2,
688
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,France,Orders.count': 0,
689
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,US,Orders.count': 0,
690
+ },
691
+ {
692
+ 'Orders.ts.day': '2020-08-11T00:00:00.000',
693
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,US,Orders.count': 0,
694
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,France,Orders.count': 0,
695
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,Australia,Orders.count': 0,
696
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,France,Orders.count': 1,
697
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,US,Orders.count': 0,
698
+ },
699
+ {
700
+ 'Orders.ts.day': '2020-08-12T00:00:00.000',
701
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,US,Orders.count': 0,
702
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,France,Orders.count': 1,
703
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,Australia,Orders.count': 0,
704
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,France,Orders.count': 0,
705
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,US,Orders.count': 0,
706
+ },
707
+ {
708
+ 'Orders.ts.day': '2020-08-13T00:00:00.000',
709
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,US,Orders.count': 0,
710
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,France,Orders.count': 0,
711
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,Australia,Orders.count': 0,
712
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,France,Orders.count': 0,
713
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,US,Orders.count': 1,
714
+ },
715
+ {
716
+ 'Orders.ts.day': '2020-08-14T00:00:00.000',
717
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,US,Orders.count': 0,
718
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,France,Orders.count': 0,
719
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,Australia,Orders.count': 0,
720
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,France,Orders.count': 0,
721
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,US,Orders.count': 0,
722
+ },
723
+ {
724
+ 'Orders.ts.day': '2020-08-15T00:00:00.000',
725
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,US,Orders.count': 0,
726
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,France,Orders.count': 0,
727
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,Australia,Orders.count': 0,
728
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,France,Orders.count': 1,
729
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,US,Orders.count': 0,
730
+ },
731
+ {
732
+ 'Orders.ts.day': '2020-08-16T00:00:00.000',
733
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,US,Orders.count': 0,
734
+ '2020-08-10T00:00:00.000 - 2020-08-16T23:59:59.999,France,Orders.count': 0,
735
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,Australia,Orders.count': 0,
736
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,France,Orders.count': 0,
737
+ '2020-08-03T00:00:00.000 - 2020-08-09T23:59:59.999,US,Orders.count': 0,
738
+ },
739
+ ]);
740
+ });
741
+ });
742
+ });