@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/CHANGELOG.md +35 -0
- package/dist/cubejs-client-vue3.esm.js +73 -22
- package/dist/cubejs-client-vue3.esm.js.map +1 -1
- package/dist/cubejs-client-vue3.js +73 -22
- package/dist/cubejs-client-vue3.js.map +1 -1
- package/dist/cubejs-client-vue3.umd.js +98 -35
- package/dist/cubejs-client-vue3.umd.js.map +1 -1
- package/package.json +3 -3
- package/src/QueryBuilder.js +74 -28
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cubejs-client/vue3",
|
|
3
|
-
"version": "0.30.
|
|
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.
|
|
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": "
|
|
83
|
+
"gitHead": "4c315d2607acc24bd730033880922fc0af0e6af0"
|
|
84
84
|
}
|
package/src/QueryBuilder.js
CHANGED
|
@@ -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
|
|
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
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
},
|