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