@sisense/sdk-data 1.23.0 → 1.25.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 (44) hide show
  1. package/dist/cjs/dimensional-model/filter-relations.d.ts +9 -0
  2. package/dist/cjs/dimensional-model/filter-relations.js +18 -0
  3. package/dist/cjs/dimensional-model/filters/factory.d.ts +84 -85
  4. package/dist/cjs/dimensional-model/filters/factory.js +126 -127
  5. package/dist/cjs/dimensional-model/filters/filter-config-utils.d.ts +25 -0
  6. package/dist/cjs/dimensional-model/filters/filter-config-utils.js +49 -0
  7. package/dist/cjs/dimensional-model/filters/filters.d.ts +28 -51
  8. package/dist/cjs/dimensional-model/filters/filters.js +51 -95
  9. package/dist/cjs/dimensional-model/filters/utils/condition-filter-util.d.ts +4 -4
  10. package/dist/cjs/dimensional-model/filters/utils/condition-filter-util.js +35 -28
  11. package/dist/cjs/dimensional-model/filters/utils/filter-code-util.d.ts +9 -5
  12. package/dist/cjs/dimensional-model/filters/utils/filter-code-util.js +32 -8
  13. package/dist/cjs/dimensional-model/filters/utils/filter-from-jaql-util.d.ts +17 -27
  14. package/dist/cjs/dimensional-model/filters/utils/filter-from-jaql-util.js +37 -39
  15. package/dist/cjs/dimensional-model/interfaces.d.ts +113 -15
  16. package/dist/cjs/dimensional-model/types.d.ts +18 -11
  17. package/dist/cjs/index.d.ts +2 -0
  18. package/dist/cjs/index.js +2 -0
  19. package/dist/cjs/interfaces.d.ts +8 -0
  20. package/dist/cjs/utils.d.ts +5 -3
  21. package/dist/cjs/utils.js +35 -9
  22. package/dist/dimensional-model/filter-relations.d.ts +9 -0
  23. package/dist/dimensional-model/filter-relations.js +14 -0
  24. package/dist/dimensional-model/filters/factory.d.ts +84 -85
  25. package/dist/dimensional-model/filters/factory.js +126 -127
  26. package/dist/dimensional-model/filters/filter-config-utils.d.ts +25 -0
  27. package/dist/dimensional-model/filters/filter-config-utils.js +39 -0
  28. package/dist/dimensional-model/filters/filters.d.ts +28 -51
  29. package/dist/dimensional-model/filters/filters.js +51 -95
  30. package/dist/dimensional-model/filters/utils/condition-filter-util.d.ts +4 -4
  31. package/dist/dimensional-model/filters/utils/condition-filter-util.js +35 -28
  32. package/dist/dimensional-model/filters/utils/filter-code-util.d.ts +9 -5
  33. package/dist/dimensional-model/filters/utils/filter-code-util.js +32 -8
  34. package/dist/dimensional-model/filters/utils/filter-from-jaql-util.d.ts +17 -27
  35. package/dist/dimensional-model/filters/utils/filter-from-jaql-util.js +36 -37
  36. package/dist/dimensional-model/interfaces.d.ts +113 -15
  37. package/dist/dimensional-model/types.d.ts +18 -11
  38. package/dist/index.d.ts +2 -0
  39. package/dist/index.js +2 -0
  40. package/dist/interfaces.d.ts +8 -0
  41. package/dist/tsconfig.prod.cjs.tsbuildinfo +1 -1
  42. package/dist/utils.d.ts +5 -3
  43. package/dist/utils.js +33 -7
  44. package/package.json +3 -3
@@ -3,6 +3,7 @@ import { withComposeCode } from './filter-code-util.js';
3
3
  import * as filterFactory from '../factory.js';
4
4
  import { createMeasureFromRankingFilterJaql } from './attribute-measure-util.js';
5
5
  import { TranslatableError } from '../../../translation/translatable-error.js';
6
+ import { simplifyFilterConfig } from '../filter-config-utils.js';
6
7
  const isTopCondition = (filter) => filter.top !== undefined;
7
8
  const isBottomCondition = (filter) => filter.bottom !== undefined;
8
9
  const isExcludeCondition = (filter) => { var _a; return !!((_a = filter.exclude) === null || _a === void 0 ? void 0 : _a.members); };
@@ -78,57 +79,57 @@ export const getSelectedConditionOption = (filter) => {
78
79
  *
79
80
  * @param attribute - Provided attribute
80
81
  * @param conditionFilterJaql - Condition filter JAQL object
81
- * @param guid - Optional GUID for the filter
82
+ * @param guid - GUID for the filter
82
83
  * @returns attribute filter
83
84
  */
84
85
  export const createAttributeFilterFromConditionFilterJaql = (attribute, conditionFilterJaql, guid) => {
85
- var _a, _b, _c, _d, _e, _f;
86
+ var _a, _b, _c, _d, _e, _f, _g;
86
87
  const conditionType = getSelectedConditionOption(conditionFilterJaql);
87
88
  switch (conditionType) {
88
89
  case ConditionFilterType.BOTTOM:
89
90
  if (conditionFilterJaql.by) {
90
- return withComposeCode(filterFactory.bottomRanking)(attribute, createMeasureFromRankingFilterJaql(conditionFilterJaql.by, conditionFilterJaql.rankingMessage), conditionFilterJaql[ConditionFilterType.BOTTOM], guid);
91
+ return withComposeCode(filterFactory.bottomRanking, 'bottomRanking')(attribute, createMeasureFromRankingFilterJaql(conditionFilterJaql.by, conditionFilterJaql.rankingMessage), conditionFilterJaql[ConditionFilterType.BOTTOM], { guid });
91
92
  }
92
93
  break;
93
94
  case ConditionFilterType.EQUALS:
94
- return withComposeCode(filterFactory.equals)(attribute, conditionFilterJaql[ConditionFilterType.EQUALS], guid);
95
+ return withComposeCode(filterFactory.equals, 'equals')(attribute, conditionFilterJaql[ConditionFilterType.EQUALS], { guid });
95
96
  case ConditionFilterType.DOESNT_EQUAL:
96
- return withComposeCode(filterFactory.doesntEqual)(attribute, conditionFilterJaql[ConditionFilterType.DOESNT_EQUAL], guid);
97
+ return withComposeCode(filterFactory.doesntEqual, 'doesntEqual')(attribute, conditionFilterJaql[ConditionFilterType.DOESNT_EQUAL], { guid });
97
98
  case ConditionFilterType.GREATER_THAN:
98
- return withComposeCode(filterFactory.greaterThan)(attribute, conditionFilterJaql[ConditionFilterType.GREATER_THAN], guid);
99
+ return withComposeCode(filterFactory.greaterThan, 'greaterThan')(attribute, conditionFilterJaql[ConditionFilterType.GREATER_THAN], { guid });
99
100
  case ConditionFilterType.GREATER_THAN_OR_EQUAL:
100
- return withComposeCode(filterFactory.greaterThanOrEqual)(attribute, conditionFilterJaql[ConditionFilterType.GREATER_THAN_OR_EQUAL], guid);
101
+ return withComposeCode(filterFactory.greaterThanOrEqual, 'greaterThanOrEqual')(attribute, conditionFilterJaql[ConditionFilterType.GREATER_THAN_OR_EQUAL], { guid });
101
102
  case ConditionFilterType.TOP:
102
103
  if (conditionFilterJaql.by) {
103
- return withComposeCode(filterFactory.topRanking)(attribute, createMeasureFromRankingFilterJaql(conditionFilterJaql.by, conditionFilterJaql.rankingMessage), conditionFilterJaql[ConditionFilterType.TOP], guid);
104
+ return withComposeCode(filterFactory.topRanking, 'topRanking')(attribute, createMeasureFromRankingFilterJaql(conditionFilterJaql.by, conditionFilterJaql.rankingMessage), conditionFilterJaql[ConditionFilterType.TOP], { guid });
104
105
  }
105
106
  break;
106
107
  case ConditionFilterType.STARTS_WITH:
107
- return withComposeCode(filterFactory.startsWith)(attribute, conditionFilterJaql[ConditionFilterType.STARTS_WITH], guid);
108
+ return withComposeCode(filterFactory.startsWith, 'startsWith')(attribute, conditionFilterJaql[ConditionFilterType.STARTS_WITH], { guid });
108
109
  case ConditionFilterType.DOESNT_START_WITH:
109
- return withComposeCode(filterFactory.doesntStartWith)(attribute, conditionFilterJaql[ConditionFilterType.DOESNT_START_WITH], guid);
110
+ return withComposeCode(filterFactory.doesntStartWith, 'doesntStartWith')(attribute, conditionFilterJaql[ConditionFilterType.DOESNT_START_WITH], { guid });
110
111
  case ConditionFilterType.ENDS_WITH:
111
- return withComposeCode(filterFactory.endsWith)(attribute, conditionFilterJaql[ConditionFilterType.ENDS_WITH], guid);
112
+ return withComposeCode(filterFactory.endsWith, 'endsWith')(attribute, conditionFilterJaql[ConditionFilterType.ENDS_WITH], { guid });
112
113
  case ConditionFilterType.DOESNT_END_WITH:
113
- return withComposeCode(filterFactory.doesntEndWith)(attribute, conditionFilterJaql[ConditionFilterType.DOESNT_END_WITH], guid);
114
+ return withComposeCode(filterFactory.doesntEndWith, 'doesntEndWith')(attribute, conditionFilterJaql[ConditionFilterType.DOESNT_END_WITH], { guid });
114
115
  case ConditionFilterType.CONTAINS:
115
- return withComposeCode(filterFactory.contains)(attribute, conditionFilterJaql[ConditionFilterType.CONTAINS], guid);
116
+ return withComposeCode(filterFactory.contains, 'contains')(attribute, conditionFilterJaql[ConditionFilterType.CONTAINS], { guid });
116
117
  case ConditionFilterType.DOESNT_CONTAIN:
117
- return withComposeCode(filterFactory.doesntContain)(attribute, conditionFilterJaql[ConditionFilterType.DOESNT_CONTAIN], guid);
118
+ return withComposeCode(filterFactory.doesntContain, 'doesntContain')(attribute, conditionFilterJaql[ConditionFilterType.DOESNT_CONTAIN], { guid });
118
119
  case ConditionFilterType.LESS_THAN:
119
- return withComposeCode(filterFactory.lessThan)(attribute, conditionFilterJaql[ConditionFilterType.LESS_THAN], guid);
120
+ return withComposeCode(filterFactory.lessThan, 'lessThan')(attribute, conditionFilterJaql[ConditionFilterType.LESS_THAN], { guid });
120
121
  case ConditionFilterType.LESS_THAN_OR_EQUAL:
121
- return withComposeCode(filterFactory.lessThanOrEqual)(attribute, conditionFilterJaql[ConditionFilterType.LESS_THAN_OR_EQUAL], guid);
122
+ return withComposeCode(filterFactory.lessThanOrEqual, 'lessThanOrEqual')(attribute, conditionFilterJaql[ConditionFilterType.LESS_THAN_OR_EQUAL], { guid });
122
123
  case ConditionFilterType.BETWEEN:
123
- return withComposeCode(filterFactory.between)(attribute, conditionFilterJaql.from, conditionFilterJaql.to, guid);
124
+ return withComposeCode(filterFactory.between, 'between')(attribute, conditionFilterJaql.from, conditionFilterJaql.to, { guid });
124
125
  case ConditionFilterType.IS_NOT_BETWEEN:
125
- return withComposeCode(filterFactory.exclude)(withComposeCode(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);
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 });
126
127
  case ConditionFilterType.MULTIPLE_CONDITION:
127
128
  if (conditionFilterJaql.and) {
128
- return withComposeCode(filterFactory.intersection)(conditionFilterJaql.and.map((c) => createAttributeFilterFromConditionFilterJaql(attribute, c, guid)), guid);
129
+ return withComposeCode(filterFactory.intersection, 'intersection')(conditionFilterJaql.and.map((c) => createAttributeFilterFromConditionFilterJaql(attribute, c, guid)), { guid });
129
130
  }
130
131
  if (conditionFilterJaql.or) {
131
- return withComposeCode(filterFactory.union)(conditionFilterJaql.or.map((c) => createAttributeFilterFromConditionFilterJaql(attribute, c, guid)), guid);
132
+ return withComposeCode(filterFactory.union, 'union')(conditionFilterJaql.or.map((c) => createAttributeFilterFromConditionFilterJaql(attribute, c, guid)), { guid });
132
133
  }
133
134
  break;
134
135
  case ConditionFilterType.IS_NOT: {
@@ -136,7 +137,13 @@ export const createAttributeFilterFromConditionFilterJaql = (attribute, conditio
136
137
  [];
137
138
  const selectedMembers = ((_f = (_e = conditionFilterJaql.exclude) === null || _e === void 0 ? void 0 : _e.members) === null || _f === void 0 ? void 0 : _f.filter((member) => !deactivatedMembers.includes(member))) || [];
138
139
  // use members filter with exclude instead of exclude filter
139
- return withComposeCode(filterFactory.members)(attribute, selectedMembers, true, guid, deactivatedMembers, undefined, conditionFilterJaql.multiSelection);
140
+ const config = simplifyFilterConfig({
141
+ guid,
142
+ excludeMembers: true,
143
+ enableMultiSelection: (_g = conditionFilterJaql.multiSelection) !== null && _g !== void 0 ? _g : true,
144
+ deactivatedMembers,
145
+ });
146
+ return withComposeCode(filterFactory.members, 'members')(attribute, selectedMembers, config);
140
147
  }
141
148
  case ConditionFilterType.AFTER:
142
149
  case ConditionFilterType.BEFORE:
@@ -154,24 +161,24 @@ export const createAttributeFilterFromConditionFilterJaql = (attribute, conditio
154
161
  *
155
162
  * @param measure - Provided measure
156
163
  * @param conditionFilterJaql - Condition filter JAQL object
157
- * @param guid - Optional GUID for the filter
164
+ * @param guid - GUID for the filter
158
165
  * @returns measure filter
159
166
  */
160
167
  export const createMeasureFilterFromConditionFilterJaql = (measure, conditionFilterJaql, guid) => {
161
168
  const conditionType = getSelectedConditionOption(conditionFilterJaql);
162
169
  switch (conditionType) {
163
170
  case ConditionFilterType.EQUALS:
164
- return withComposeCode(filterFactory.measureEquals)(measure, conditionFilterJaql[ConditionFilterType.EQUALS], guid);
171
+ return withComposeCode(filterFactory.measureEquals, 'measureEquals')(measure, conditionFilterJaql[ConditionFilterType.EQUALS], { guid });
165
172
  case ConditionFilterType.GREATER_THAN:
166
- return withComposeCode(filterFactory.measureGreaterThan)(measure, conditionFilterJaql[ConditionFilterType.GREATER_THAN], guid);
173
+ return withComposeCode(filterFactory.measureGreaterThan, 'measureGreaterThan')(measure, conditionFilterJaql[ConditionFilterType.GREATER_THAN], { guid });
167
174
  case ConditionFilterType.GREATER_THAN_OR_EQUAL:
168
- return withComposeCode(filterFactory.measureGreaterThanOrEqual)(measure, conditionFilterJaql[ConditionFilterType.GREATER_THAN_OR_EQUAL], guid);
175
+ return withComposeCode(filterFactory.measureGreaterThanOrEqual, 'measureGreaterThanOrEqual')(measure, conditionFilterJaql[ConditionFilterType.GREATER_THAN_OR_EQUAL], { guid });
169
176
  case ConditionFilterType.LESS_THAN:
170
- return withComposeCode(filterFactory.measureLessThan)(measure, conditionFilterJaql[ConditionFilterType.LESS_THAN], guid);
177
+ return withComposeCode(filterFactory.measureLessThan, 'measureLessThan')(measure, conditionFilterJaql[ConditionFilterType.LESS_THAN], { guid });
171
178
  case ConditionFilterType.LESS_THAN_OR_EQUAL:
172
- return withComposeCode(filterFactory.measureLessThanOrEqual)(measure, conditionFilterJaql[ConditionFilterType.LESS_THAN_OR_EQUAL], guid);
179
+ return withComposeCode(filterFactory.measureLessThanOrEqual, 'measureLessThanOrEqual')(measure, conditionFilterJaql[ConditionFilterType.LESS_THAN_OR_EQUAL], { guid });
173
180
  case ConditionFilterType.BETWEEN:
174
- return withComposeCode(filterFactory.measureBetween)(measure, conditionFilterJaql.from, conditionFilterJaql.to, guid);
181
+ return withComposeCode(filterFactory.measureBetween, 'measureBetween')(measure, conditionFilterJaql.from, conditionFilterJaql.to, { guid });
175
182
  }
176
183
  throw new TranslatableError('errors.filter.unsupportedConditionFilter', {
177
184
  filter: JSON.stringify(conditionFilterJaql),
@@ -1,13 +1,17 @@
1
1
  /**
2
- * Stringifies the argument
2
+ * Stringifies the argument, with an option to exclude specific properties.
3
3
  *
4
- * @param arg - argument to stringify
5
- * @returns stringified argument
4
+ * @param arg - The argument to stringify.
5
+ * @param excludeProps - Optional array of property names to exclude when stringifying objects.
6
+ * @returns The stringified representation of the argument.
6
7
  */
7
- export declare function stringifyHelper(arg: any): string;
8
+ export declare function stringifyHelper(arg: any, excludeProps?: string[]): string;
8
9
  /**
9
10
  * High order function to construct compose code for filter factory functions
10
11
  *
11
12
  * @param func - filter factory function
13
+ * @param funcName - name of the filter factory function. Needed if the function name is minified.
14
+ * @param ignoreIndexes - Indexes of parameters to ignore in the generated composeCode
15
+ * @returns filter factory function with composeCode property added to the filter
12
16
  */
13
- export declare function withComposeCode(func: (...args: any[]) => any): (...args: any[]) => any;
17
+ export declare function withComposeCode<T extends (...args: any[]) => any>(func: T, funcName?: string, ignoreIndexes?: number[]): T;
@@ -1,10 +1,11 @@
1
1
  /**
2
- * Stringifies the argument
2
+ * Stringifies the argument, with an option to exclude specific properties.
3
3
  *
4
- * @param arg - argument to stringify
5
- * @returns stringified argument
4
+ * @param arg - The argument to stringify.
5
+ * @param excludeProps - Optional array of property names to exclude when stringifying objects.
6
+ * @returns The stringified representation of the argument.
6
7
  */
7
- export function stringifyHelper(arg) {
8
+ export function stringifyHelper(arg, excludeProps = []) {
8
9
  try {
9
10
  if (arg === null || arg === undefined) {
10
11
  return JSON.stringify(arg);
@@ -16,7 +17,7 @@ export function stringifyHelper(arg) {
16
17
  return ('[' +
17
18
  arg
18
19
  .map((e) => {
19
- return stringifyHelper(e);
20
+ return stringifyHelper(e, excludeProps);
20
21
  })
21
22
  .join(', ') +
22
23
  ']');
@@ -27,6 +28,19 @@ export function stringifyHelper(arg) {
27
28
  if (typeof arg === 'number' || !isNaN(arg)) {
28
29
  return arg;
29
30
  }
31
+ if (typeof arg === 'object') {
32
+ const filteredObject = Object.keys(arg)
33
+ .filter((key) => !excludeProps.includes(key))
34
+ .reduce((acc, key) => {
35
+ acc[key] = arg[key];
36
+ return acc;
37
+ }, {});
38
+ // Check if the filtered object is empty
39
+ if (Object.keys(filteredObject).length === 0) {
40
+ return '';
41
+ }
42
+ return JSON.stringify(filteredObject);
43
+ }
30
44
  }
31
45
  catch (e) {
32
46
  console.error(e);
@@ -37,16 +51,26 @@ export function stringifyHelper(arg) {
37
51
  * High order function to construct compose code for filter factory functions
38
52
  *
39
53
  * @param func - filter factory function
54
+ * @param funcName - name of the filter factory function. Needed if the function name is minified.
55
+ * @param ignoreIndexes - Indexes of parameters to ignore in the generated composeCode
56
+ * @returns filter factory function with composeCode property added to the filter
40
57
  */
41
- export function withComposeCode(func) {
58
+ export function withComposeCode(func, funcName, ignoreIndexes = []) {
42
59
  return function (...args) {
43
60
  const argValues = args
44
- .map(stringifyHelper)
61
+ .map((arg, index) => {
62
+ if (ignoreIndexes.includes(index)) {
63
+ return ''; // Placeholder for ignored parameters
64
+ }
65
+ return stringifyHelper(arg, ['guid']);
66
+ })
45
67
  .join(', ')
46
68
  // remove any number of trailing commas
47
69
  .replace(/(,\s*)+$/, '');
48
- const signature = `filterFactory.${func.name}(${argValues})`;
70
+ const signature = `filterFactory.${funcName !== null && funcName !== void 0 ? funcName : func.name}(${argValues})`;
71
+ // Call the original function and get the filter
49
72
  const filter = func(...args);
73
+ // Add the composeCode property
50
74
  filter.composeCode = signature;
51
75
  return filter;
52
76
  };
@@ -1,5 +1,5 @@
1
- import { BaseFilterJaql, ConditionFilterJaql, FilterJaqlInternal, PeriodFilterJaql, RangeFilterJaql, SpecificItemsFilterJaql } from './types.js';
2
- import { Attribute, BaseMeasure, Filter, LevelAttribute } from '../../interfaces.js';
1
+ import { BaseFilterJaql, FilterJaqlInternal, PeriodFilterJaql, RangeFilterJaql, SpecificItemsFilterJaql } from './types.js';
2
+ import { Attribute, Filter, LevelAttribute } from '../../interfaces.js';
3
3
  import { FilterJaql } from '../../types.js';
4
4
  /**
5
5
  * Creates a generic filter (aka pass-through JAQL filter) if the JAQL cannot be translated to a specific filter type.
@@ -8,75 +8,65 @@ import { FilterJaql } from '../../types.js';
8
8
  * @param guid - Optional GUID for the filter
9
9
  * @returns A generic Filter object.
10
10
  */
11
- export declare const createGenericFilter: (jaql: FilterJaql | FilterJaqlInternal, guid?: string) => Filter;
11
+ export declare const createGenericFilter: (jaql: FilterJaql | FilterJaqlInternal, guid: string) => Filter;
12
12
  /**
13
13
  * Creates a filter that includes all members of the attribute.
14
14
  *
15
15
  * @param attribute - The attribute.
16
- * @param guid - Optional GUID for the filter
16
+ * @param guid - GUID for the filter
17
17
  * @returns The created Filter object.
18
18
  */
19
- export declare const createFilterIncludeAll: (attribute: Attribute, guid?: string) => Filter;
19
+ export declare const createFilterIncludeAll: (attribute: Attribute, guid: string) => Filter;
20
20
  /**
21
21
  * Creates a filter from a specific items filter JAQL object.
22
22
  *
23
23
  * @param attribute - attribute
24
24
  * @param specificItemsFilterJaql - Specific Items Filter Jaql
25
- * @param guid - Optional GUID for the filter
25
+ * @param guid - GUID for the filter
26
26
  * @returns Filter object
27
27
  */
28
- export declare const createFilterFromSpecificItemsFilterJaql: (attribute: Attribute, specificItemsFilterJaql: SpecificItemsFilterJaql, guid?: string, multiSelection?: boolean) => Filter;
28
+ export declare const createFilterFromSpecificItemsFilterJaql: (attribute: Attribute, specificItemsFilterJaql: SpecificItemsFilterJaql, guid: string, multiSelection?: boolean) => Filter;
29
29
  /**
30
30
  * Creates a filter from a date range filter JAQL object.
31
31
  *
32
32
  * @param attribute - attribute
33
33
  * @param rangeFilterJaql - Range Filter Jaql
34
- * @param guid - Optional GUID for the filter
34
+ * @param guid - GUID for the filter
35
35
  * @returns Filter object
36
36
  */
37
- export declare const createFilterFromDateRangeFilterJaql: (attribute: LevelAttribute, rangeFilterJaql: RangeFilterJaql, guid?: string) => Filter;
37
+ export declare const createFilterFromDateRangeFilterJaql: (attribute: LevelAttribute, rangeFilterJaql: RangeFilterJaql, guid: string) => Filter;
38
38
  /**
39
39
  * Creates a filter from a numeric range filter JAQL object.
40
40
  *
41
41
  * @param attribute - attribute
42
42
  * @param rangeFilterJaql - Range Filter Jaql
43
- * @param guid - Optional GUID for the filter
43
+ * @param guid - GUID for the filter
44
44
  * @returns Filter object
45
45
  */
46
- export declare const createFilterFromNumericRangeJaql: (attribute: Attribute, rangeFilterJaql: RangeFilterJaql, guid?: string) => Filter;
46
+ export declare const createFilterFromNumericRangeJaql: (attribute: Attribute, rangeFilterJaql: RangeFilterJaql, guid: string) => Filter;
47
47
  /**
48
48
  * Creates a filter from a period filter JAQL object.
49
49
  *
50
50
  * @param attribute - attribute
51
51
  * @param periodFilterJaql - Period Filter Jaql
52
- * @param guid - Optional GUID for the filter
52
+ * @param guid - GUID for the filter
53
53
  * @returns Filter object
54
54
  */
55
- export declare const createFilterFromPeriodFilterJaql: (attribute: LevelAttribute, periodFilterJaql: PeriodFilterJaql, guid?: string) => Filter;
56
- /**
57
- * Creates a filter from a condition filter JAQL object.
58
- *
59
- * @param attribute - attribute
60
- * @param conditionFilterJaql - Condition Filter Jaql
61
- * @param measure - measure
62
- * @param guid - Optional GUID for the filter
63
- * @returns Filter object
64
- */
65
- export declare const createFilterFromConditionFilterJaql: (attribute: Attribute, conditionFilterJaql: ConditionFilterJaql, measure?: BaseMeasure, guid?: string) => Filter;
55
+ export declare const createFilterFromPeriodFilterJaql: (attribute: LevelAttribute, periodFilterJaql: PeriodFilterJaql, guid: string) => Filter;
66
56
  /**
67
57
  * Creates a filter from a custom filter JAQL object.
68
58
  *
69
59
  * @param attribute - attribute
70
60
  * @param customFilterJaql - Custom Filter Jaql
71
- * @param guid - Optional GUID for the filter
61
+ * @param guid - GUID for the filter
72
62
  * @returns Filter object
73
63
  */
74
- export declare const createFilterFromCustomFilterJaql: (attribute: Attribute, customFilterJaql: BaseFilterJaql, guid?: string) => Filter;
64
+ export declare const createFilterFromCustomFilterJaql: (attribute: Attribute, customFilterJaql: BaseFilterJaql, guid: string) => Filter;
75
65
  /**
76
66
  * Creates a filter from a filter JAQL object.
77
67
  *
78
68
  * @param jaql - The filter JAQL object.
79
- * @param guid - Optional GUID for the filter
69
+ * @param guid - GUID for the filter
80
70
  * @returns Filter object.
81
71
  */
82
- export declare const createFilterFromJaqlInternal: (jaql: FilterJaqlInternal, guid?: string) => Filter;
72
+ export declare const createFilterFromJaqlInternal: (jaql: FilterJaqlInternal, guid: string) => Filter;
@@ -4,8 +4,8 @@ import { createAttributeFilterFromConditionFilterJaql, createMeasureFilterFromCo
4
4
  import { extractFilterTypeFromFilterJaql } from './filter-types-util.js';
5
5
  import { withComposeCode } from './filter-code-util.js';
6
6
  import { createAttributeFromFilterJaql, createMeasureFromFilterJaql, } from './attribute-measure-util.js';
7
- import { guidFast } from '../../../utils.js';
8
7
  import { TranslatableError } from '../../../translation/translatable-error.js';
8
+ import { getDefaultBaseFilterConfig, simplifyFilterConfig } from '../filter-config-utils.js';
9
9
  /**
10
10
  * Creates a generic filter (aka pass-through JAQL filter) if the JAQL cannot be translated to a specific filter type.
11
11
  *
@@ -15,7 +15,7 @@ import { TranslatableError } from '../../../translation/translatable-error.js';
15
15
  */
16
16
  export const createGenericFilter = (jaql, guid) => {
17
17
  return {
18
- guid: guid || guidFast(13),
18
+ config: Object.assign(Object.assign({}, getDefaultBaseFilterConfig()), { guid, originalFilterJaql: jaql }),
19
19
  jaql: (nested) => {
20
20
  if (nested) {
21
21
  return jaql;
@@ -41,31 +41,40 @@ export const createGenericFilter = (jaql, guid) => {
41
41
  * Creates a filter that includes all members of the attribute.
42
42
  *
43
43
  * @param attribute - The attribute.
44
- * @param guid - Optional GUID for the filter
44
+ * @param guid - GUID for the filter
45
45
  * @returns The created Filter object.
46
46
  */
47
47
  export const createFilterIncludeAll = (attribute, guid) => {
48
48
  // including all members is equivalent to excluding none
49
49
  // so we can simply create a filter with no members and excludeMembers set to true
50
- return withComposeCode(filterFactory.members)(attribute, [], true, guid);
50
+ const config = {
51
+ guid,
52
+ excludeMembers: true,
53
+ };
54
+ return withComposeCode(filterFactory.members, 'members')(attribute, [], config);
51
55
  };
52
56
  /**
53
57
  * Creates a filter from a specific items filter JAQL object.
54
58
  *
55
59
  * @param attribute - attribute
56
60
  * @param specificItemsFilterJaql - Specific Items Filter Jaql
57
- * @param guid - Optional GUID for the filter
61
+ * @param guid - GUID for the filter
58
62
  * @returns Filter object
59
63
  */
60
64
  export const createFilterFromSpecificItemsFilterJaql = (attribute, specificItemsFilterJaql, guid, multiSelection) => {
61
65
  const deactivatedMembers = getDeactivatedMembersFromFilterJaql(specificItemsFilterJaql);
62
66
  const activeMembers = getActiveMembersFromFilterJaql(specificItemsFilterJaql, deactivatedMembers);
63
- return withComposeCode(filterFactory.members)(attribute, activeMembers, undefined, // use undefined instead of false to avoid including the property in composeCode
64
- guid, deactivatedMembers, undefined, multiSelection);
67
+ const config = simplifyFilterConfig({
68
+ guid,
69
+ excludeMembers: false,
70
+ enableMultiSelection: multiSelection !== null && multiSelection !== void 0 ? multiSelection : true,
71
+ deactivatedMembers,
72
+ });
73
+ return withComposeCode(filterFactory.members, 'members')(attribute, activeMembers, config);
65
74
  };
66
75
  function getDeactivatedMembersFromFilterJaql(filterJaql) {
67
- var _a, _b, _c;
68
- return ((_a = filterJaql.filter) === null || _a === void 0 ? void 0 : _a.turnedOff) ? (_c = (_b = filterJaql.filter) === null || _b === void 0 ? void 0 : _b.exclude) === null || _c === void 0 ? void 0 : _c.members : undefined;
76
+ var _a, _b, _c, _d;
77
+ return ((_a = filterJaql.filter) === null || _a === void 0 ? void 0 : _a.turnedOff) ? (_d = (_c = (_b = filterJaql.filter) === null || _b === void 0 ? void 0 : _b.exclude) === null || _c === void 0 ? void 0 : _c.members) !== null && _d !== void 0 ? _d : [] : [];
69
78
  }
70
79
  function getActiveMembersFromFilterJaql(filterJaql, deactivatedMembers) {
71
80
  const allMembers = filterJaql.members;
@@ -78,54 +87,37 @@ function getActiveMembersFromFilterJaql(filterJaql, deactivatedMembers) {
78
87
  *
79
88
  * @param attribute - attribute
80
89
  * @param rangeFilterJaql - Range Filter Jaql
81
- * @param guid - Optional GUID for the filter
90
+ * @param guid - GUID for the filter
82
91
  * @returns Filter object
83
92
  */
84
93
  export const createFilterFromDateRangeFilterJaql = (attribute, rangeFilterJaql, guid) => {
85
- return withComposeCode(filterFactory.dateRange)(attribute, rangeFilterJaql.from, rangeFilterJaql.to, guid);
94
+ return withComposeCode(filterFactory.dateRange, 'dateRange')(attribute, rangeFilterJaql.from, rangeFilterJaql.to, { guid });
86
95
  };
87
96
  /**
88
97
  * Creates a filter from a numeric range filter JAQL object.
89
98
  *
90
99
  * @param attribute - attribute
91
100
  * @param rangeFilterJaql - Range Filter Jaql
92
- * @param guid - Optional GUID for the filter
101
+ * @param guid - GUID for the filter
93
102
  * @returns Filter object
94
103
  */
95
104
  export const createFilterFromNumericRangeJaql = (attribute, rangeFilterJaql, guid) => {
96
- return withComposeCode(filterFactory.between)(attribute, rangeFilterJaql.from, rangeFilterJaql.to, guid);
105
+ return withComposeCode(filterFactory.between, 'between')(attribute, rangeFilterJaql.from, rangeFilterJaql.to, { guid });
97
106
  };
98
107
  /**
99
108
  * Creates a filter from a period filter JAQL object.
100
109
  *
101
110
  * @param attribute - attribute
102
111
  * @param periodFilterJaql - Period Filter Jaql
103
- * @param guid - Optional GUID for the filter
112
+ * @param guid - GUID for the filter
104
113
  * @returns Filter object
105
114
  */
106
115
  export const createFilterFromPeriodFilterJaql = (attribute, periodFilterJaql, guid) => {
107
116
  if (periodFilterJaql.last) {
108
- return withComposeCode(filterFactory.dateRelativeTo)(attribute, periodFilterJaql.last.offset, periodFilterJaql.last.count, periodFilterJaql.last.anchor, guid);
109
- }
110
- else {
111
- return withComposeCode(filterFactory.dateRelativeFrom)(attribute, periodFilterJaql.next.offset, periodFilterJaql.next.count, periodFilterJaql.next.anchor, guid);
112
- }
113
- };
114
- /**
115
- * Creates a filter from a condition filter JAQL object.
116
- *
117
- * @param attribute - attribute
118
- * @param conditionFilterJaql - Condition Filter Jaql
119
- * @param measure - measure
120
- * @param guid - Optional GUID for the filter
121
- * @returns Filter object
122
- */
123
- export const createFilterFromConditionFilterJaql = (attribute, conditionFilterJaql, measure, guid) => {
124
- if (measure) {
125
- return createMeasureFilterFromConditionFilterJaql(measure, conditionFilterJaql, guid);
117
+ return withComposeCode(filterFactory.dateRelativeTo, 'dateRelativeTo')(attribute, periodFilterJaql.last.offset, periodFilterJaql.last.count, periodFilterJaql.last.anchor, { guid });
126
118
  }
127
119
  else {
128
- return createAttributeFilterFromConditionFilterJaql(attribute, conditionFilterJaql, guid);
120
+ return withComposeCode(filterFactory.dateRelativeFrom, 'dateRelativeFrom')(attribute, periodFilterJaql.next.offset, periodFilterJaql.next.count, periodFilterJaql.next.anchor, { guid });
129
121
  }
130
122
  };
131
123
  /**
@@ -133,17 +125,19 @@ export const createFilterFromConditionFilterJaql = (attribute, conditionFilterJa
133
125
  *
134
126
  * @param attribute - attribute
135
127
  * @param customFilterJaql - Custom Filter Jaql
136
- * @param guid - Optional GUID for the filter
128
+ * @param guid - GUID for the filter
137
129
  * @returns Filter object
138
130
  */
139
131
  export const createFilterFromCustomFilterJaql = (attribute, customFilterJaql, guid) => {
140
- return withComposeCode(filterFactory.customFilter)(attribute, customFilterJaql, guid);
132
+ return withComposeCode(filterFactory.customFilter, 'customFilter')(attribute, customFilterJaql, {
133
+ guid,
134
+ });
141
135
  };
142
136
  /**
143
137
  * Creates a filter from a filter JAQL object.
144
138
  *
145
139
  * @param jaql - The filter JAQL object.
146
- * @param guid - Optional GUID for the filter
140
+ * @param guid - GUID for the filter
147
141
  * @returns Filter object.
148
142
  */
149
143
  export const createFilterFromJaqlInternal = (jaql, guid) => {
@@ -165,7 +159,12 @@ export const createFilterFromJaqlInternal = (jaql, guid) => {
165
159
  case FILTER_TYPES.SPECIFIC_ITEMS:
166
160
  return createFilterFromSpecificItemsFilterJaql(attribute, filterJaqlWithType, guid, filterJaqlWithType.multiSelection);
167
161
  case FILTER_TYPES.CONDITION:
168
- return createFilterFromConditionFilterJaql(attribute, filterJaqlWithType, measure, guid);
162
+ if (measure) {
163
+ return createMeasureFilterFromConditionFilterJaql(measure, filterJaqlWithType, guid);
164
+ }
165
+ else {
166
+ return createAttributeFilterFromConditionFilterJaql(attribute, filterJaqlWithType, guid);
167
+ }
169
168
  case FILTER_TYPES.DATE_RANGE:
170
169
  return createFilterFromDateRangeFilterJaql(attribute, filterJaqlWithType, guid);
171
170
  case FILTER_TYPES.PERIOD: