@cubejs-client/vue3 0.30.4 → 0.30.54

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cubejs-client/vue3",
3
- "version": "0.30.4",
3
+ "version": "0.30.54",
4
4
  "engines": {},
5
5
  "repository": {
6
6
  "type": "git",
@@ -28,7 +28,7 @@
28
28
  "src"
29
29
  ],
30
30
  "dependencies": {
31
- "@cubejs-client/core": "^0.30.4",
31
+ "@cubejs-client/core": "^0.30.46",
32
32
  "@vue/compiler-sfc": "^3.0.11",
33
33
  "core-js": "^3.6.5",
34
34
  "flush-promises": "^1.0.2",
@@ -80,5 +80,5 @@
80
80
  "publishConfig": {
81
81
  "access": "public"
82
82
  },
83
- "gitHead": "b7df8f6a3cfe104e639e0f7607868afa193ed0a3"
83
+ "gitHead": "4c315d2607acc24bd730033880922fc0af0e6af0"
84
84
  }
@@ -24,6 +24,50 @@ const toOrderMember = (member) => ({
24
24
  const reduceOrderMembers = (array) =>
25
25
  array.reduce((acc, { id, order }) => (order !== 'none' ? [...acc, [id, order]] : acc), []);
26
26
 
27
+ const operators = [ 'and', 'or' ]
28
+
29
+ const validateFilters = (filters) =>
30
+ filters.reduce((acc, raw) => {
31
+ if (raw.operator) {
32
+ return [...acc, raw];
33
+ }
34
+
35
+ const validBooleanFilter = operators.reduce((acc, operator) => {
36
+ const filters = raw[operator];
37
+
38
+ const booleanFilters = validateFilters(filters || []);
39
+
40
+ if (booleanFilters.length) {
41
+ return { ...acc, [operator]: booleanFilters };
42
+ }
43
+
44
+ return acc;
45
+ }, {});
46
+
47
+ if (operators.some((operator) => validBooleanFilter[operator])) {
48
+ return [...acc, validBooleanFilter];
49
+ }
50
+
51
+ return acc;
52
+ }, []);
53
+
54
+ const getDimensionOrMeasure = (meta, m) => {
55
+ const memberName = m.member || m.dimension;
56
+ return memberName && meta.resolveMember(memberName, ['dimensions', 'measures']);
57
+ };
58
+
59
+ const resolveMembers = (meta, arr) =>
60
+ arr &&
61
+ arr.map((e, index) => {
62
+ return {
63
+ ...e,
64
+ member: getDimensionOrMeasure(meta, e),
65
+ index,
66
+ and: resolveMembers(meta, e.and),
67
+ or: resolveMembers(meta, e.or),
68
+ };
69
+ });
70
+
27
71
  export default {
28
72
  components: {
29
73
  QueryRenderer,
@@ -140,7 +184,6 @@ export default {
140
184
  order,
141
185
  orderMembers,
142
186
  setOrder: this.setOrder,
143
- setQuery: this.setQuery,
144
187
  pivotConfig: this.pivotConfig,
145
188
  updateOrder: {
146
189
  set: (memberId, newOrder) => {
@@ -268,9 +311,11 @@ export default {
268
311
  });
269
312
  } else if (element === 'filters') {
270
313
  toQuery = (member) => ({
271
- member: member.member.name,
314
+ member: member.member && member.member.name,
272
315
  operator: member.operator,
273
316
  values: member.values,
317
+ and: member.and && member.and.map(toQuery),
318
+ or: member.or && member.or.map(toQuery),
274
319
  });
275
320
  }
276
321
 
@@ -282,7 +327,7 @@ export default {
282
327
  });
283
328
 
284
329
  if (validatedQuery.filters) {
285
- validatedQuery.filters = validatedQuery.filters.filter((f) => f.operator);
330
+ validatedQuery.filters = validateFilters(validatedQuery.filters)
286
331
  }
287
332
 
288
333
  // only set limit and offset if there are elements otherwise an invalid request with just limit/offset
@@ -396,15 +441,19 @@ export default {
396
441
  },
397
442
  index,
398
443
  }));
399
- this.filters = filters.map((m, index) => ({
400
- ...m,
401
- member: this.meta.resolveMember(m.member || m.dimension, ['dimensions', 'measures']),
402
- operators: this.meta.filterOperatorsForMember(m.member || m.dimension, [
403
- 'dimensions',
404
- 'measures',
405
- ]),
406
- index,
407
- }));
444
+
445
+ const memberTypes = ['dimensions', 'measures'];
446
+ this.filters = filters.map((m, index) => {
447
+ const memberName = m.member || m.dimension;
448
+ return {
449
+ ...m,
450
+ member: memberName && this.meta.resolveMember(memberName, memberTypes),
451
+ operators: memberName && this.meta.filterOperatorsForMember(memberName, memberTypes),
452
+ and: resolveMembers(this.meta, m.and),
453
+ or: resolveMembers(this.meta, m.or),
454
+ index,
455
+ };
456
+ });
408
457
 
409
458
  this.availableMeasures = this.meta.membersForQuery({}, 'measures') || [];
410
459
  this.availableDimensions = this.meta.membersForQuery({}, 'dimensions') || [];
@@ -438,14 +487,12 @@ export default {
438
487
  };
439
488
  }
440
489
  } else if (element === 'filters') {
441
- const filterMember = {
442
- ...this.meta.resolveMember(member.member || member.dimension, ['dimensions', 'measures']),
443
- };
444
-
445
490
  mem = {
446
491
  ...member,
447
- member: filterMember,
448
- };
492
+ and: resolveMembers(this.meta, member.and),
493
+ or: resolveMembers(this.meta, member.or),
494
+ member: getDimensionOrMeasure(this.meta, member),
495
+ }
449
496
  } else {
450
497
  mem = this[`available${name}`].find((m) => m.name === member);
451
498
  }
@@ -495,13 +542,11 @@ export default {
495
542
  }
496
543
  } else if (element === 'filters') {
497
544
  index = this[element].findIndex((x) => x.dimension === old);
498
- const filterMember = {
499
- ...this.meta.resolveMember(member.member || member.dimension, ['dimensions', 'measures']),
500
- };
501
-
502
545
  mem = {
503
546
  ...member,
504
- member: filterMember,
547
+ and: resolveMembers(this.meta, member.and),
548
+ or: resolveMembers(this.meta, member.or),
549
+ member: getDimensionOrMeasure(this.meta, member),
505
550
  };
506
551
  } else {
507
552
  index = this[element].findIndex((x) => x.name === old);
@@ -535,13 +580,11 @@ export default {
535
580
  };
536
581
  }
537
582
  } else if (element === 'filters') {
538
- const member = {
539
- ...this.meta.resolveMember(m.member || m.dimension, ['dimensions', 'measures']),
540
- };
541
-
542
583
  mem = {
543
584
  ...m,
544
- member,
585
+ and: resolveMembers(this.meta, m.and),
586
+ or: resolveMembers(this.meta, m.or),
587
+ member: getDimensionOrMeasure(this.meta, m),
545
588
  };
546
589
  } else {
547
590
  mem = this[`available${name}`].find((x) => x.name === m);
@@ -563,6 +606,9 @@ export default {
563
606
  setOffset(offset) {
564
607
  this.offset = offset;
565
608
  },
609
+ removeOffset() {
610
+ this.offset = null;
611
+ },
566
612
  updateChart(chartType) {
567
613
  this.chartType = chartType;
568
614
  },