@sisense/sdk-data 1.34.0 → 2.0.0

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 (68) hide show
  1. package/dist/cjs/dimensional-model/analytics/factory.d.ts +10 -10
  2. package/dist/cjs/dimensional-model/analytics/factory.js +15 -16
  3. package/dist/cjs/dimensional-model/attributes.d.ts +4 -4
  4. package/dist/cjs/dimensional-model/attributes.js +21 -7
  5. package/dist/cjs/dimensional-model/base.d.ts +3 -3
  6. package/dist/cjs/dimensional-model/base.js +7 -4
  7. package/dist/cjs/dimensional-model/compose-code-utils.d.ts +41 -0
  8. package/dist/cjs/dimensional-model/compose-code-utils.js +127 -0
  9. package/dist/cjs/dimensional-model/consts.d.ts +1 -0
  10. package/dist/cjs/dimensional-model/consts.js +4 -0
  11. package/dist/cjs/dimensional-model/dimensions/dimensions.d.ts +5 -5
  12. package/dist/cjs/dimensional-model/dimensions/dimensions.js +25 -16
  13. package/dist/cjs/dimensional-model/filters/factory.d.ts +41 -41
  14. package/dist/cjs/dimensional-model/filters/factory.js +53 -168
  15. package/dist/cjs/dimensional-model/filters/filter-relations.js +2 -5
  16. package/dist/cjs/dimensional-model/filters/filters.d.ts +39 -23
  17. package/dist/cjs/dimensional-model/filters/filters.js +102 -52
  18. package/dist/cjs/dimensional-model/filters/utils/attribute-measure-util.js +6 -14
  19. package/dist/cjs/dimensional-model/filters/utils/condition-filter-util.js +28 -26
  20. package/dist/cjs/dimensional-model/filters/utils/filter-from-jaql-util.js +9 -15
  21. package/dist/cjs/dimensional-model/filters/utils/types.d.ts +10 -0
  22. package/dist/cjs/dimensional-model/interfaces.d.ts +9 -7
  23. package/dist/cjs/dimensional-model/jaql-element.d.ts +13 -1
  24. package/dist/cjs/dimensional-model/jaql-element.js +53 -1
  25. package/dist/cjs/dimensional-model/measures/factory.d.ts +45 -52
  26. package/dist/cjs/dimensional-model/measures/factory.js +55 -184
  27. package/dist/cjs/dimensional-model/measures/measures.d.ts +9 -9
  28. package/dist/cjs/dimensional-model/measures/measures.js +31 -29
  29. package/dist/cjs/dimensional-model/types.d.ts +25 -2
  30. package/dist/cjs/utils.d.ts +26 -19
  31. package/dist/cjs/utils.js +82 -41
  32. package/dist/dimensional-model/analytics/factory.d.ts +10 -10
  33. package/dist/dimensional-model/analytics/factory.js +15 -14
  34. package/dist/dimensional-model/attributes.d.ts +4 -4
  35. package/dist/dimensional-model/attributes.js +21 -7
  36. package/dist/dimensional-model/base.d.ts +3 -3
  37. package/dist/dimensional-model/base.js +7 -4
  38. package/dist/dimensional-model/compose-code-utils.d.ts +41 -0
  39. package/dist/dimensional-model/compose-code-utils.js +119 -0
  40. package/dist/dimensional-model/consts.d.ts +1 -0
  41. package/dist/dimensional-model/consts.js +1 -0
  42. package/dist/dimensional-model/dimensions/dimensions.d.ts +5 -5
  43. package/dist/dimensional-model/dimensions/dimensions.js +26 -17
  44. package/dist/dimensional-model/filters/factory.d.ts +41 -41
  45. package/dist/dimensional-model/filters/factory.js +51 -125
  46. package/dist/dimensional-model/filters/filter-relations.js +3 -6
  47. package/dist/dimensional-model/filters/filters.d.ts +39 -23
  48. package/dist/dimensional-model/filters/filters.js +102 -52
  49. package/dist/dimensional-model/filters/utils/attribute-measure-util.js +6 -14
  50. package/dist/dimensional-model/filters/utils/condition-filter-util.js +28 -26
  51. package/dist/dimensional-model/filters/utils/filter-from-jaql-util.js +9 -15
  52. package/dist/dimensional-model/filters/utils/types.d.ts +10 -0
  53. package/dist/dimensional-model/interfaces.d.ts +9 -7
  54. package/dist/dimensional-model/jaql-element.d.ts +13 -1
  55. package/dist/dimensional-model/jaql-element.js +52 -1
  56. package/dist/dimensional-model/measures/factory.d.ts +45 -52
  57. package/dist/dimensional-model/measures/factory.js +54 -141
  58. package/dist/dimensional-model/measures/measures.d.ts +9 -9
  59. package/dist/dimensional-model/measures/measures.js +31 -29
  60. package/dist/dimensional-model/types.d.ts +25 -2
  61. package/dist/tsconfig.prod.cjs.tsbuildinfo +1 -1
  62. package/dist/utils.d.ts +26 -19
  63. package/dist/utils.js +60 -44
  64. package/package.json +3 -3
  65. package/dist/cjs/dimensional-model/filters/utils/filter-code-util.d.ts +0 -17
  66. package/dist/cjs/dimensional-model/filters/utils/filter-code-util.js +0 -82
  67. package/dist/dimensional-model/filters/utils/filter-code-util.d.ts +0 -17
  68. package/dist/dimensional-model/filters/utils/filter-code-util.js +0 -77
@@ -2,7 +2,6 @@ import { TranslatableError } from '../../../translation/translatable-error.js';
2
2
  import * as filterFactory from '../factory.js';
3
3
  import { simplifyFilterConfig } from '../filter-config-utils.js';
4
4
  import { createMeasureFromRankingFilterJaql } from './attribute-measure-util.js';
5
- import { withComposeCode } from './filter-code-util.js';
6
5
  import { ConditionFilterType } from './types.js';
7
6
  const isTopCondition = (filter) => filter.top !== undefined;
8
7
  const isBottomCondition = (filter) => filter.bottom !== undefined;
@@ -88,48 +87,48 @@ export const createAttributeFilterFromConditionFilterJaql = (attribute, conditio
88
87
  switch (conditionType) {
89
88
  case ConditionFilterType.BOTTOM:
90
89
  if (conditionFilterJaql.by) {
91
- return withComposeCode(filterFactory.bottomRanking, 'bottomRanking')(attribute, createMeasureFromRankingFilterJaql(conditionFilterJaql.by, conditionFilterJaql.rankingMessage), conditionFilterJaql[ConditionFilterType.BOTTOM], { guid });
90
+ return filterFactory.bottomRanking(attribute, createMeasureFromRankingFilterJaql(conditionFilterJaql.by, conditionFilterJaql.rankingMessage), conditionFilterJaql[ConditionFilterType.BOTTOM], { guid });
92
91
  }
93
92
  break;
94
93
  case ConditionFilterType.EQUALS:
95
- return withComposeCode(filterFactory.equals, 'equals')(attribute, conditionFilterJaql[ConditionFilterType.EQUALS], { guid });
94
+ return filterFactory.equals(attribute, conditionFilterJaql[ConditionFilterType.EQUALS], { guid });
96
95
  case ConditionFilterType.DOESNT_EQUAL:
97
- return withComposeCode(filterFactory.doesntEqual, 'doesntEqual')(attribute, conditionFilterJaql[ConditionFilterType.DOESNT_EQUAL], { guid });
96
+ return filterFactory.doesntEqual(attribute, conditionFilterJaql[ConditionFilterType.DOESNT_EQUAL], { guid });
98
97
  case ConditionFilterType.GREATER_THAN:
99
- return withComposeCode(filterFactory.greaterThan, 'greaterThan')(attribute, conditionFilterJaql[ConditionFilterType.GREATER_THAN], { guid });
98
+ return filterFactory.greaterThan(attribute, conditionFilterJaql[ConditionFilterType.GREATER_THAN], { guid });
100
99
  case ConditionFilterType.GREATER_THAN_OR_EQUAL:
101
- return withComposeCode(filterFactory.greaterThanOrEqual, 'greaterThanOrEqual')(attribute, conditionFilterJaql[ConditionFilterType.GREATER_THAN_OR_EQUAL], { guid });
100
+ return filterFactory.greaterThanOrEqual(attribute, conditionFilterJaql[ConditionFilterType.GREATER_THAN_OR_EQUAL], { guid });
102
101
  case ConditionFilterType.TOP:
103
102
  if (conditionFilterJaql.by) {
104
- return withComposeCode(filterFactory.topRanking, 'topRanking')(attribute, createMeasureFromRankingFilterJaql(conditionFilterJaql.by, conditionFilterJaql.rankingMessage), conditionFilterJaql[ConditionFilterType.TOP], { guid });
103
+ return filterFactory.topRanking(attribute, createMeasureFromRankingFilterJaql(conditionFilterJaql.by, conditionFilterJaql.rankingMessage), conditionFilterJaql[ConditionFilterType.TOP], { guid });
105
104
  }
106
105
  break;
107
106
  case ConditionFilterType.STARTS_WITH:
108
- return withComposeCode(filterFactory.startsWith, 'startsWith')(attribute, conditionFilterJaql[ConditionFilterType.STARTS_WITH], { guid });
107
+ return filterFactory.startsWith(attribute, conditionFilterJaql[ConditionFilterType.STARTS_WITH], { guid });
109
108
  case ConditionFilterType.DOESNT_START_WITH:
110
- return withComposeCode(filterFactory.doesntStartWith, 'doesntStartWith')(attribute, conditionFilterJaql[ConditionFilterType.DOESNT_START_WITH], { guid });
109
+ return filterFactory.doesntStartWith(attribute, conditionFilterJaql[ConditionFilterType.DOESNT_START_WITH], { guid });
111
110
  case ConditionFilterType.ENDS_WITH:
112
- return withComposeCode(filterFactory.endsWith, 'endsWith')(attribute, conditionFilterJaql[ConditionFilterType.ENDS_WITH], { guid });
111
+ return filterFactory.endsWith(attribute, conditionFilterJaql[ConditionFilterType.ENDS_WITH], { guid });
113
112
  case ConditionFilterType.DOESNT_END_WITH:
114
- return withComposeCode(filterFactory.doesntEndWith, 'doesntEndWith')(attribute, conditionFilterJaql[ConditionFilterType.DOESNT_END_WITH], { guid });
113
+ return filterFactory.doesntEndWith(attribute, conditionFilterJaql[ConditionFilterType.DOESNT_END_WITH], { guid });
115
114
  case ConditionFilterType.CONTAINS:
116
- return withComposeCode(filterFactory.contains, 'contains')(attribute, conditionFilterJaql[ConditionFilterType.CONTAINS], { guid });
115
+ return filterFactory.contains(attribute, conditionFilterJaql[ConditionFilterType.CONTAINS], { guid });
117
116
  case ConditionFilterType.DOESNT_CONTAIN:
118
- return withComposeCode(filterFactory.doesntContain, 'doesntContain')(attribute, conditionFilterJaql[ConditionFilterType.DOESNT_CONTAIN], { guid });
117
+ return filterFactory.doesntContain(attribute, conditionFilterJaql[ConditionFilterType.DOESNT_CONTAIN], { guid });
119
118
  case ConditionFilterType.LESS_THAN:
120
- return withComposeCode(filterFactory.lessThan, 'lessThan')(attribute, conditionFilterJaql[ConditionFilterType.LESS_THAN], { guid });
119
+ return filterFactory.lessThan(attribute, conditionFilterJaql[ConditionFilterType.LESS_THAN], { guid });
121
120
  case ConditionFilterType.LESS_THAN_OR_EQUAL:
122
- return withComposeCode(filterFactory.lessThanOrEqual, 'lessThanOrEqual')(attribute, conditionFilterJaql[ConditionFilterType.LESS_THAN_OR_EQUAL], { guid });
121
+ return filterFactory.lessThanOrEqual(attribute, conditionFilterJaql[ConditionFilterType.LESS_THAN_OR_EQUAL], { guid });
123
122
  case ConditionFilterType.BETWEEN:
124
- return withComposeCode(filterFactory.between, 'between')(attribute, conditionFilterJaql.from, conditionFilterJaql.to, { guid });
123
+ return filterFactory.between(attribute, conditionFilterJaql.from, conditionFilterJaql.to, { guid });
125
124
  case ConditionFilterType.IS_NOT_BETWEEN:
126
- return withComposeCode(filterFactory.exclude, 'exclude')(withComposeCode(filterFactory.between, 'between')(attribute, (_a = conditionFilterJaql.exclude) === null || _a === void 0 ? void 0 : _a.from, (_b = conditionFilterJaql.exclude) === null || _b === void 0 ? void 0 : _b.to, { guid }), undefined, { guid });
125
+ return filterFactory.exclude(filterFactory.between(attribute, (_a = conditionFilterJaql.exclude) === null || _a === void 0 ? void 0 : _a.from, (_b = conditionFilterJaql.exclude) === null || _b === void 0 ? void 0 : _b.to, { guid }), undefined, { guid });
127
126
  case ConditionFilterType.MULTIPLE_CONDITION:
128
127
  if (conditionFilterJaql.and) {
129
- return withComposeCode(filterFactory.intersection, 'intersection')(conditionFilterJaql.and.map((c) => createAttributeFilterFromConditionFilterJaql(attribute, c, guid)), { guid });
128
+ return filterFactory.intersection(conditionFilterJaql.and.map((c) => createAttributeFilterFromConditionFilterJaql(attribute, c, guid)), { guid });
130
129
  }
131
130
  if (conditionFilterJaql.or) {
132
- return withComposeCode(filterFactory.union, 'union')(conditionFilterJaql.or.map((c) => createAttributeFilterFromConditionFilterJaql(attribute, c, guid)), { guid });
131
+ return filterFactory.union(conditionFilterJaql.or.map((c) => createAttributeFilterFromConditionFilterJaql(attribute, c, guid)), { guid });
133
132
  }
134
133
  break;
135
134
  case ConditionFilterType.IS_NOT: {
@@ -143,7 +142,7 @@ export const createAttributeFilterFromConditionFilterJaql = (attribute, conditio
143
142
  enableMultiSelection: (_g = conditionFilterJaql.multiSelection) !== null && _g !== void 0 ? _g : true,
144
143
  deactivatedMembers,
145
144
  });
146
- return withComposeCode(filterFactory.members, 'members')(attribute, selectedMembers, config);
145
+ return filterFactory.members(attribute, selectedMembers, config);
147
146
  }
148
147
  case ConditionFilterType.AFTER:
149
148
  case ConditionFilterType.BEFORE:
@@ -165,20 +164,23 @@ export const createAttributeFilterFromConditionFilterJaql = (attribute, conditio
165
164
  * @returns measure filter
166
165
  */
167
166
  export const createMeasureFilterFromConditionFilterJaql = (measure, conditionFilterJaql, guid) => {
167
+ var _a, _b;
168
168
  const conditionType = getSelectedConditionOption(conditionFilterJaql);
169
169
  switch (conditionType) {
170
170
  case ConditionFilterType.EQUALS:
171
- return withComposeCode(filterFactory.measureEquals, 'measureEquals')(measure, conditionFilterJaql[ConditionFilterType.EQUALS], { guid });
171
+ return filterFactory.measureEquals(measure, conditionFilterJaql[ConditionFilterType.EQUALS], { guid });
172
172
  case ConditionFilterType.GREATER_THAN:
173
- return withComposeCode(filterFactory.measureGreaterThan, 'measureGreaterThan')(measure, conditionFilterJaql[ConditionFilterType.GREATER_THAN], { guid });
173
+ return filterFactory.measureGreaterThan(measure, conditionFilterJaql[ConditionFilterType.GREATER_THAN], { guid });
174
174
  case ConditionFilterType.GREATER_THAN_OR_EQUAL:
175
- return withComposeCode(filterFactory.measureGreaterThanOrEqual, 'measureGreaterThanOrEqual')(measure, conditionFilterJaql[ConditionFilterType.GREATER_THAN_OR_EQUAL], { guid });
175
+ return filterFactory.measureGreaterThanOrEqual(measure, conditionFilterJaql[ConditionFilterType.GREATER_THAN_OR_EQUAL], { guid });
176
176
  case ConditionFilterType.LESS_THAN:
177
- return withComposeCode(filterFactory.measureLessThan, 'measureLessThan')(measure, conditionFilterJaql[ConditionFilterType.LESS_THAN], { guid });
177
+ return filterFactory.measureLessThan(measure, conditionFilterJaql[ConditionFilterType.LESS_THAN], { guid });
178
178
  case ConditionFilterType.LESS_THAN_OR_EQUAL:
179
- return withComposeCode(filterFactory.measureLessThanOrEqual, 'measureLessThanOrEqual')(measure, conditionFilterJaql[ConditionFilterType.LESS_THAN_OR_EQUAL], { guid });
179
+ return filterFactory.measureLessThanOrEqual(measure, conditionFilterJaql[ConditionFilterType.LESS_THAN_OR_EQUAL], { guid });
180
180
  case ConditionFilterType.BETWEEN:
181
- return withComposeCode(filterFactory.measureBetween, 'measureBetween')(measure, conditionFilterJaql.from, conditionFilterJaql.to, { guid });
181
+ return filterFactory.measureBetween(measure, conditionFilterJaql.from, conditionFilterJaql.to, { guid });
182
+ case ConditionFilterType.IS_NOT_BETWEEN:
183
+ return filterFactory.exclude(filterFactory.measureBetween(measure, (_a = conditionFilterJaql.exclude) === null || _a === void 0 ? void 0 : _a.from, (_b = conditionFilterJaql.exclude) === null || _b === void 0 ? void 0 : _b.to, { guid }), undefined, { guid });
182
184
  }
183
185
  throw new TranslatableError('errors.filter.unsupportedConditionFilter', {
184
186
  filter: JSON.stringify(conditionFilterJaql),
@@ -3,7 +3,6 @@ import * as filterFactory from '../factory.js';
3
3
  import { getDefaultBaseFilterConfig, simplifyFilterConfig } from '../filter-config-utils.js';
4
4
  import { createAttributeFromFilterJaql, createMeasureFromFilterJaql, } from './attribute-measure-util.js';
5
5
  import { createAttributeFilterFromConditionFilterJaql, createMeasureFilterFromConditionFilterJaql, } from './condition-filter-util.js';
6
- import { withComposeCode } from './filter-code-util.js';
7
6
  import { extractFilterTypeFromFilterJaql } from './filter-types-util.js';
8
7
  import { FILTER_TYPES, } from './types.js';
9
8
  /**
@@ -14,7 +13,7 @@ import { FILTER_TYPES, } from './types.js';
14
13
  * @returns A generic Filter object.
15
14
  */
16
15
  export const createGenericFilter = (jaql, guid) => {
17
- return {
16
+ const baseFilter = {
18
17
  config: Object.assign(Object.assign({}, getDefaultBaseFilterConfig()), { guid, originalFilterJaql: jaql }),
19
18
  jaql: (nested) => {
20
19
  if (nested) {
@@ -29,13 +28,8 @@ export const createGenericFilter = (jaql, guid) => {
29
28
  id: jaql.dim,
30
29
  },
31
30
  type: 'filter',
32
- serializable() {
33
- return Object.assign(Object.assign({}, this), { jaql: this.jaql() });
34
- },
35
- toJSON() {
36
- return this.serializable();
37
- },
38
31
  };
32
+ return Object.assign({}, baseFilter);
39
33
  };
40
34
  /**
41
35
  * Creates a filter that includes all members of the attribute.
@@ -51,7 +45,7 @@ export const createFilterIncludeAll = (attribute, guid) => {
51
45
  guid,
52
46
  excludeMembers: true,
53
47
  };
54
- return withComposeCode(filterFactory.members, 'members')(attribute, [], config);
48
+ return filterFactory.members(attribute, [], config);
55
49
  };
56
50
  /**
57
51
  * Creates a filter from a specific items filter JAQL object.
@@ -70,7 +64,7 @@ export const createFilterFromSpecificItemsFilterJaql = (attribute, specificItems
70
64
  enableMultiSelection: multiSelection !== null && multiSelection !== void 0 ? multiSelection : true,
71
65
  deactivatedMembers,
72
66
  });
73
- return withComposeCode(filterFactory.members, 'members')(attribute, activeMembers, config);
67
+ return filterFactory.members(attribute, activeMembers, config);
74
68
  };
75
69
  function getDeactivatedMembersFromFilterJaql(filterJaql) {
76
70
  var _a, _b, _c, _d;
@@ -91,7 +85,7 @@ function getActiveMembersFromFilterJaql(filterJaql, deactivatedMembers) {
91
85
  * @returns Filter object
92
86
  */
93
87
  export const createFilterFromDateRangeFilterJaql = (attribute, rangeFilterJaql, guid) => {
94
- return withComposeCode(filterFactory.dateRange, 'dateRange')(attribute, rangeFilterJaql.from, rangeFilterJaql.to, { guid });
88
+ return filterFactory.dateRange(attribute, rangeFilterJaql.from, rangeFilterJaql.to, { guid });
95
89
  };
96
90
  /**
97
91
  * Creates a filter from a numeric range filter JAQL object.
@@ -102,7 +96,7 @@ export const createFilterFromDateRangeFilterJaql = (attribute, rangeFilterJaql,
102
96
  * @returns Filter object
103
97
  */
104
98
  export const createFilterFromNumericRangeJaql = (attribute, rangeFilterJaql, guid) => {
105
- return withComposeCode(filterFactory.between, 'between')(attribute, rangeFilterJaql.from, rangeFilterJaql.to, { guid });
99
+ return filterFactory.between(attribute, rangeFilterJaql.from, rangeFilterJaql.to, { guid });
106
100
  };
107
101
  /**
108
102
  * Creates a filter from a period filter JAQL object.
@@ -114,10 +108,10 @@ export const createFilterFromNumericRangeJaql = (attribute, rangeFilterJaql, gui
114
108
  */
115
109
  export const createFilterFromPeriodFilterJaql = (attribute, periodFilterJaql, guid) => {
116
110
  if (periodFilterJaql.last) {
117
- return withComposeCode(filterFactory.dateRelativeTo, 'dateRelativeTo')(attribute, periodFilterJaql.last.offset, periodFilterJaql.last.count, periodFilterJaql.last.anchor, { guid });
111
+ return filterFactory.dateRelativeTo(attribute, periodFilterJaql.last.offset, periodFilterJaql.last.count, periodFilterJaql.last.anchor, { guid });
118
112
  }
119
113
  else {
120
- return withComposeCode(filterFactory.dateRelativeFrom, 'dateRelativeFrom')(attribute, periodFilterJaql.next.offset, periodFilterJaql.next.count, periodFilterJaql.next.anchor, { guid });
114
+ return filterFactory.dateRelativeFrom(attribute, periodFilterJaql.next.offset, periodFilterJaql.next.count, periodFilterJaql.next.anchor, { guid });
121
115
  }
122
116
  };
123
117
  /**
@@ -129,7 +123,7 @@ export const createFilterFromPeriodFilterJaql = (attribute, periodFilterJaql, gu
129
123
  * @returns Filter object
130
124
  */
131
125
  export const createFilterFromCustomFilterJaql = (attribute, customFilterJaql, guid) => {
132
- return withComposeCode(filterFactory.customFilter, 'customFilter')(attribute, customFilterJaql, {
126
+ return filterFactory.customFilter(attribute, customFilterJaql, {
133
127
  guid,
134
128
  });
135
129
  };
@@ -19,6 +19,16 @@ export declare type JaqlDataSource = {
19
19
  lastBuildTime?: string;
20
20
  revisionId?: string;
21
21
  };
22
+ /**
23
+ * Data source as specified in the jaql
24
+ * but with required filelds
25
+ *
26
+ * @internal
27
+ */
28
+ export declare type JaqlDataSourceForDto = JaqlDataSource & {
29
+ id: string;
30
+ address?: string;
31
+ };
22
32
  export declare enum GeneralFilterType {
23
33
  INCLUDE_ALL = "INCLUDE_ALL",
24
34
  ADVANCED = "ADVANCED",
@@ -1,5 +1,5 @@
1
1
  import { DataSource } from '../interfaces.js';
2
- import { DateLevel, FilterJaql, JaqlDataSource, Sort } from './types.js';
2
+ import { DateLevel, FilterJaql, JaqlDataSource, JSONObject, Sort } from './types.js';
3
3
  /**
4
4
  * @internal
5
5
  */
@@ -46,13 +46,13 @@ export interface Element {
46
46
  *
47
47
  * @internal
48
48
  */
49
- serializable(): any;
49
+ serialize(): JSONObject;
50
50
  /**
51
51
  * Overrides JSON.stringify() behavior.
52
52
  *
53
53
  * @internal
54
54
  */
55
- toJSON(): any;
55
+ toJSON(): JSONObject;
56
56
  /**
57
57
  * Gets the JAQL representation of this instance.
58
58
  *
@@ -522,10 +522,6 @@ export declare function isPivotMeasure(arg: Measure | PivotMeasure): arg is Pivo
522
522
  * Data options for grand totals of a pivot table
523
523
  */
524
524
  export declare type PivotGrandTotals = {
525
- /**
526
- * @deprecated
527
- */
528
- title?: string;
529
525
  rows?: boolean;
530
526
  columns?: boolean;
531
527
  };
@@ -558,6 +554,12 @@ export interface FilterRelations {
558
554
  left: FilterRelationsNode;
559
555
  right: FilterRelationsNode;
560
556
  operator: 'AND' | 'OR';
557
+ /**
558
+ * Compose code for the filter relations
559
+ *
560
+ * @internal
561
+ */
562
+ composeCode?: string;
561
563
  }
562
564
  /**
563
565
  * Model of filter logical relations (AND/OR) from Fusion dashboard
@@ -1,6 +1,6 @@
1
1
  import { DimensionalElement } from './base.js';
2
2
  import { SortDirection } from './interfaces.js';
3
- import { MetadataItem, MetadataItemJaql } from './types.js';
3
+ import { JSONObject, MetadataItem, MetadataItemJaql } from './types.js';
4
4
  /**
5
5
  * This implementation wraps metadata for a JAQL query. The metadata could be
6
6
  * for a dimension, measure, or filter. We do little to no interpretation of
@@ -26,6 +26,10 @@ export declare class JaqlElement extends DimensionalElement {
26
26
  get id(): string;
27
27
  jaql(nested?: true): MetadataItemJaql;
28
28
  jaql(nested?: false | undefined): MetadataItem;
29
+ /**
30
+ * Gets a serializable representation of the element
31
+ */
32
+ serialize(): JSONObject;
29
33
  }
30
34
  /**
31
35
  * Create a JaqlElement from a MetadataItem
@@ -35,3 +39,11 @@ export declare class JaqlElement extends DimensionalElement {
35
39
  * @internal
36
40
  */
37
41
  export declare function createJaqlElement(item: MetadataItem): JaqlElement;
42
+ /**
43
+ * Create a DimensionalElement from a MetadataItem
44
+ *
45
+ * @param item - the metadata item in a JAQL query
46
+ * @returns a DimensionalElement
47
+ * @internal
48
+ */
49
+ export declare function createDimensionalElementFromMetadataItem(item: MetadataItem): import("./interfaces.js").Attribute | import("./interfaces.js").BaseMeasure | import("./interfaces.js").CalculatedMeasure | JaqlElement;
@@ -1,4 +1,4 @@
1
- import { getSortType } from '../utils.js';
1
+ import { createAttributeHelper, createCalculatedMeasureHelper, createMeasureHelper, getSortType, } from '../utils.js';
2
2
  import { DimensionalElement } from './base.js';
3
3
  import { MetadataTypes, } from './types.js';
4
4
  /**
@@ -47,6 +47,16 @@ export class JaqlElement extends DimensionalElement {
47
47
  jaql(nested) {
48
48
  return nested === true ? this.metadataItem.jaql : this.metadataItem;
49
49
  }
50
+ /**
51
+ * Gets a serializable representation of the element
52
+ */
53
+ serialize() {
54
+ const result = super.serialize();
55
+ result.__serializable = 'JaqlElement';
56
+ result.metadataItem = this.metadataItem;
57
+ result.type = this.type;
58
+ return result;
59
+ }
50
60
  }
51
61
  const toMetadataType = {
52
62
  text: MetadataTypes.TextAttribute,
@@ -66,3 +76,44 @@ export function createJaqlElement(item) {
66
76
  // will always be of type number. check if there is a more correct way to do this
67
77
  return new JaqlElement(item, (_a = toMetadataType[item.jaql.datatype]) !== null && _a !== void 0 ? _a : 'numeric');
68
78
  }
79
+ /**
80
+ * Create a DimensionalElement from a MetadataItem
81
+ *
82
+ * @param item - the metadata item in a JAQL query
83
+ * @returns a DimensionalElement
84
+ * @internal
85
+ */
86
+ export function createDimensionalElementFromMetadataItem(item) {
87
+ const { jaql } = item;
88
+ // calculated measure
89
+ if (jaql.formula) {
90
+ return createCalculatedMeasureHelper(jaql);
91
+ }
92
+ // measure
93
+ if ('agg' in jaql && jaql.dim && jaql.datatype) {
94
+ return createMeasureHelper({
95
+ expression: jaql.dim,
96
+ dataType: jaql.datatype,
97
+ agg: jaql.agg || '',
98
+ granularity: jaql.level,
99
+ format: undefined,
100
+ sort: jaql.sort,
101
+ title: jaql.title,
102
+ dataSource: jaql.datasource,
103
+ });
104
+ }
105
+ // attribute
106
+ if (jaql.dim && jaql.datatype) {
107
+ return createAttributeHelper({
108
+ expression: jaql.dim,
109
+ dataType: jaql.datatype,
110
+ granularity: jaql.level,
111
+ sort: jaql.sort,
112
+ title: jaql.title,
113
+ panel: item.panel,
114
+ dataSource: jaql.datasource,
115
+ });
116
+ }
117
+ // fall back to createJaqlElement
118
+ return createJaqlElement(item);
119
+ }