@sisense/sdk-data 1.10.1 → 1.12.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 (109) hide show
  1. package/dist/cjs/dimensional-model/analytics/factory.d.ts +47 -0
  2. package/dist/cjs/dimensional-model/analytics/factory.js +151 -0
  3. package/dist/cjs/dimensional-model/analytics/factory.test.d.ts +1 -0
  4. package/dist/cjs/dimensional-model/analytics/factory.test.js +99 -0
  5. package/dist/cjs/dimensional-model/attributes.d.ts +139 -0
  6. package/dist/cjs/dimensional-model/attributes.js +342 -0
  7. package/dist/cjs/dimensional-model/attributes.test.d.ts +1 -0
  8. package/dist/cjs/dimensional-model/attributes.test.js +154 -0
  9. package/dist/cjs/dimensional-model/base.d.ts +43 -0
  10. package/dist/cjs/dimensional-model/base.js +58 -0
  11. package/dist/cjs/dimensional-model/base.test.d.ts +1 -0
  12. package/dist/cjs/dimensional-model/base.test.js +17 -0
  13. package/dist/cjs/dimensional-model/data-model.d.ts +13 -0
  14. package/dist/cjs/dimensional-model/data-model.js +37 -0
  15. package/dist/cjs/dimensional-model/dimensions.d.ts +167 -0
  16. package/dist/cjs/dimensional-model/dimensions.js +307 -0
  17. package/dist/cjs/dimensional-model/dimensions.test.d.ts +1 -0
  18. package/dist/cjs/dimensional-model/dimensions.test.js +54 -0
  19. package/dist/cjs/dimensional-model/factory.d.ts +17 -0
  20. package/dist/cjs/dimensional-model/factory.js +54 -0
  21. package/dist/cjs/dimensional-model/filters/factory.d.ts +796 -0
  22. package/dist/cjs/dimensional-model/filters/factory.js +962 -0
  23. package/dist/cjs/dimensional-model/filters/factory.test.d.ts +1 -0
  24. package/dist/cjs/dimensional-model/filters/factory.test.js +366 -0
  25. package/dist/cjs/dimensional-model/filters/filters.d.ts +321 -0
  26. package/dist/cjs/dimensional-model/filters/filters.js +614 -0
  27. package/dist/cjs/dimensional-model/filters/filters.test.d.ts +1 -0
  28. package/dist/cjs/dimensional-model/filters/filters.test.js +225 -0
  29. package/dist/cjs/dimensional-model/filters/utils/attribute-measure-util.d.ts +47 -0
  30. package/dist/cjs/dimensional-model/filters/utils/attribute-measure-util.js +111 -0
  31. package/dist/cjs/dimensional-model/filters/utils/condition-filter-util.d.ts +21 -0
  32. package/dist/cjs/dimensional-model/filters/utils/condition-filter-util.js +194 -0
  33. package/dist/cjs/dimensional-model/filters/utils/date-time-filter-util.d.ts +2 -0
  34. package/dist/cjs/dimensional-model/filters/utils/date-time-filter-util.js +12 -0
  35. package/dist/cjs/dimensional-model/filters/utils/filter-code-util.d.ts +13 -0
  36. package/dist/cjs/dimensional-model/filters/utils/filter-code-util.js +54 -0
  37. package/dist/cjs/dimensional-model/filters/utils/filter-code-util.test.d.ts +1 -0
  38. package/dist/cjs/dimensional-model/filters/utils/filter-code-util.test.js +32 -0
  39. package/dist/cjs/dimensional-model/filters/utils/filter-from-jaql-util.d.ts +73 -0
  40. package/dist/cjs/dimensional-model/filters/utils/filter-from-jaql-util.js +190 -0
  41. package/dist/cjs/dimensional-model/filters/utils/filter-from-jaql-util.test.d.ts +1 -0
  42. package/dist/cjs/dimensional-model/filters/utils/filter-from-jaql-util.test.js +558 -0
  43. package/dist/cjs/dimensional-model/filters/utils/filter-matcher-utils.d.ts +5 -0
  44. package/dist/cjs/dimensional-model/filters/utils/filter-matcher-utils.js +174 -0
  45. package/dist/cjs/dimensional-model/filters/utils/filter-matcher-utils.test.d.ts +1 -0
  46. package/dist/cjs/dimensional-model/filters/utils/filter-matcher-utils.test.js +236 -0
  47. package/dist/cjs/dimensional-model/filters/utils/filter-types-util.d.ts +17 -0
  48. package/dist/cjs/dimensional-model/filters/utils/filter-types-util.js +79 -0
  49. package/dist/cjs/dimensional-model/filters/utils/types.d.ts +200 -0
  50. package/dist/cjs/dimensional-model/filters/utils/types.js +99 -0
  51. package/dist/cjs/dimensional-model/interfaces.d.ts +512 -0
  52. package/dist/cjs/dimensional-model/interfaces.js +31 -0
  53. package/dist/cjs/dimensional-model/measures/factory.d.ts +920 -0
  54. package/dist/cjs/dimensional-model/measures/factory.js +1188 -0
  55. package/dist/cjs/dimensional-model/measures/factory.test.d.ts +1 -0
  56. package/dist/cjs/dimensional-model/measures/factory.test.js +481 -0
  57. package/dist/cjs/dimensional-model/measures/measures.d.ts +217 -0
  58. package/dist/cjs/dimensional-model/measures/measures.js +416 -0
  59. package/dist/cjs/dimensional-model/measures/measures.test.d.ts +1 -0
  60. package/dist/cjs/dimensional-model/measures/measures.test.js +79 -0
  61. package/dist/cjs/dimensional-model/simple-column-types.d.ts +39 -0
  62. package/dist/cjs/dimensional-model/simple-column-types.js +134 -0
  63. package/dist/cjs/dimensional-model/simple-column-types.test.d.ts +1 -0
  64. package/dist/cjs/dimensional-model/simple-column-types.test.js +85 -0
  65. package/dist/cjs/dimensional-model/types.d.ts +256 -0
  66. package/dist/cjs/dimensional-model/types.js +298 -0
  67. package/dist/cjs/dimensional-model/types.test.d.ts +1 -0
  68. package/dist/cjs/dimensional-model/types.test.js +33 -0
  69. package/dist/cjs/index.d.ts +93 -0
  70. package/dist/cjs/index.js +123 -0
  71. package/dist/cjs/interfaces.d.ts +367 -0
  72. package/dist/cjs/interfaces.js +21 -0
  73. package/dist/cjs/translation/initialize-i18n.d.ts +2 -0
  74. package/dist/cjs/translation/initialize-i18n.js +14 -0
  75. package/dist/cjs/translation/resources/en.d.ts +28 -0
  76. package/dist/cjs/translation/resources/en.js +30 -0
  77. package/dist/cjs/translation/resources/index.d.ts +53 -0
  78. package/dist/cjs/translation/resources/index.js +10 -0
  79. package/dist/cjs/translation/resources/uk.d.ts +5 -0
  80. package/dist/cjs/translation/resources/uk.js +30 -0
  81. package/dist/cjs/translation/translatable-error.d.ts +5 -0
  82. package/dist/cjs/translation/translatable-error.js +15 -0
  83. package/dist/cjs/utils.d.ts +37 -0
  84. package/dist/cjs/utils.js +105 -0
  85. package/dist/cjs/utils.test.d.ts +1 -0
  86. package/dist/cjs/utils.test.js +158 -0
  87. package/dist/dimensional-model/attributes.d.ts +1 -0
  88. package/dist/dimensional-model/attributes.js +31 -0
  89. package/dist/dimensional-model/filters/factory.d.ts +80 -42
  90. package/dist/dimensional-model/filters/factory.js +123 -85
  91. package/dist/dimensional-model/filters/filters.d.ts +40 -12
  92. package/dist/dimensional-model/filters/filters.js +75 -24
  93. package/dist/dimensional-model/filters/utils/attribute-measure-util.d.ts +2 -2
  94. package/dist/dimensional-model/filters/utils/attribute-measure-util.js +6 -3
  95. package/dist/dimensional-model/filters/utils/condition-filter-util.d.ts +4 -2
  96. package/dist/dimensional-model/filters/utils/condition-filter-util.js +34 -31
  97. package/dist/dimensional-model/filters/utils/filter-code-util.js +1 -1
  98. package/dist/dimensional-model/filters/utils/filter-from-jaql-util.d.ts +16 -10
  99. package/dist/dimensional-model/filters/utils/filter-from-jaql-util.js +34 -27
  100. package/dist/dimensional-model/filters/utils/filter-matcher-utils.d.ts +5 -0
  101. package/dist/dimensional-model/filters/utils/filter-matcher-utils.js +170 -0
  102. package/dist/dimensional-model/filters/utils/filter-types-util.d.ts +3 -1
  103. package/dist/dimensional-model/filters/utils/filter-types-util.js +2 -2
  104. package/dist/dimensional-model/filters/utils/types.d.ts +1 -1
  105. package/dist/dimensional-model/interfaces.d.ts +6 -0
  106. package/dist/dimensional-model/types.d.ts +9 -3
  107. package/dist/index.d.ts +1 -0
  108. package/dist/index.js +1 -0
  109. package/package.json +18 -9
@@ -73,6 +73,7 @@ export declare const FilterTypes: {
73
73
  numeric: string;
74
74
  date: string;
75
75
  relativeDate: string;
76
+ cascading: string;
76
77
  };
77
78
  /**
78
79
  * base implementation for filter classes
@@ -92,7 +93,13 @@ declare abstract class AbstractFilter extends DimensionalElement implements Filt
92
93
  * Global filter identifier
93
94
  */
94
95
  readonly guid: string;
95
- constructor(att: Attribute, filterType: string);
96
+ /**
97
+ * Boolean flag whether the filter is disabled
98
+ *
99
+ * @internal
100
+ */
101
+ disabled: boolean;
102
+ constructor(att: Attribute, filterType: string, guid?: string);
96
103
  get name(): string;
97
104
  /**
98
105
  * Gets JAQL representing this Filter instance
@@ -117,6 +124,7 @@ declare abstract class AbstractFilter extends DimensionalElement implements Filt
117
124
  */
118
125
  jaql(nested?: boolean): any;
119
126
  static checkAttributeSupport(attribute: Attribute): void;
127
+ static disabledJaql(nested?: boolean): any;
120
128
  }
121
129
  /**
122
130
  * @internal
@@ -124,7 +132,7 @@ declare abstract class AbstractFilter extends DimensionalElement implements Filt
124
132
  export declare class LogicalAttributeFilter extends AbstractFilter {
125
133
  readonly filters: Filter[];
126
134
  readonly operator: string;
127
- constructor(filters: Filter[], operator: string);
135
+ constructor(filters: Filter[], operator: string, guid?: string);
128
136
  /**
129
137
  * gets the element's ID
130
138
  */
@@ -143,7 +151,7 @@ export declare class LogicalAttributeFilter extends AbstractFilter {
143
151
  */
144
152
  export declare class MembersFilter extends AbstractFilter {
145
153
  readonly members: any[];
146
- constructor(attribute: Attribute, members?: any[]);
154
+ constructor(attribute: Attribute, members?: any[], guid?: string);
147
155
  /**
148
156
  * gets the element's ID
149
157
  */
@@ -157,13 +165,33 @@ export declare class MembersFilter extends AbstractFilter {
157
165
  */
158
166
  filterJaql(): any;
159
167
  }
168
+ /**
169
+ * @internal
170
+ */
171
+ export declare class CascadingFilter extends AbstractFilter {
172
+ readonly filters: Filter[];
173
+ constructor(filters: Filter[], guid?: string);
174
+ /**
175
+ * gets the element's ID
176
+ */
177
+ get id(): string;
178
+ /**
179
+ * Gets a serializable representation of the element
180
+ */
181
+ serializable(): any;
182
+ /**
183
+ * Gets JAQL representing this Filter instance
184
+ */
185
+ filterJaql(): any;
186
+ jaql(nested?: boolean): any;
187
+ }
160
188
  /**
161
189
  * @internal
162
190
  */
163
191
  export declare class ExcludeFilter extends AbstractFilter {
164
192
  readonly filter: Filter;
165
193
  readonly input?: Filter;
166
- constructor(filter: Filter, input?: Filter);
194
+ constructor(filter: Filter, input?: Filter, guid?: string);
167
195
  /**
168
196
  * gets the element's ID
169
197
  */
@@ -185,7 +213,7 @@ export declare class DoubleOperatorFilter<Type> extends AbstractFilter {
185
213
  operatorB?: string;
186
214
  valueA?: Type;
187
215
  valueB?: Type;
188
- constructor(att: Attribute, filterType: string, operatorA?: string, valueA?: Type, operatorB?: string, valueB?: Type);
216
+ constructor(att: Attribute, filterType: string, operatorA?: string, valueA?: Type, operatorB?: string, valueB?: Type, guid?: string);
189
217
  /**
190
218
  * gets the element's ID
191
219
  */
@@ -204,7 +232,7 @@ export declare class DoubleOperatorFilter<Type> extends AbstractFilter {
204
232
  */
205
233
  export declare class MeasureFilter extends DoubleOperatorFilter<number> {
206
234
  measure: Measure;
207
- constructor(att: Attribute, measure: Measure, operatorA?: string, valueA?: number, operatorB?: string, valueB?: number);
235
+ constructor(att: Attribute, measure: Measure, operatorA?: string, valueA?: number, operatorB?: string, valueB?: number, guid?: string);
208
236
  /**
209
237
  * gets the element's ID
210
238
  */
@@ -222,7 +250,7 @@ export declare class RankingFilter extends AbstractFilter {
222
250
  count: number;
223
251
  operator: string;
224
252
  measure: Measure;
225
- constructor(att: Attribute, measure: Measure, operator: string, count: number);
253
+ constructor(att: Attribute, measure: Measure, operator: string, count: number, guid?: string);
226
254
  /**
227
255
  * gets the element's ID
228
256
  */
@@ -240,19 +268,19 @@ export declare class RankingFilter extends AbstractFilter {
240
268
  * @internal
241
269
  */
242
270
  export declare class NumericFilter extends DoubleOperatorFilter<number> {
243
- constructor(att: Attribute, operatorA?: string, valueA?: number, operatorB?: string, valueB?: number);
271
+ constructor(att: Attribute, operatorA?: string, valueA?: number, operatorB?: string, valueB?: number, guid?: string);
244
272
  }
245
273
  /**
246
274
  * @internal
247
275
  */
248
276
  export declare class TextFilter extends DoubleOperatorFilter<string> {
249
- constructor(att: Attribute, operator: string, value: string);
277
+ constructor(att: Attribute, operator: string, value: string, guid?: string);
250
278
  }
251
279
  /**
252
280
  * @internal
253
281
  */
254
282
  export declare class DateRangeFilter extends DoubleOperatorFilter<Date | string> {
255
- constructor(l: LevelAttribute, valueFrom?: Date | string, valueTo?: Date | string);
283
+ constructor(l: LevelAttribute, valueFrom?: Date | string, valueTo?: Date | string, guid?: string);
256
284
  get level(): LevelAttribute;
257
285
  get from(): string;
258
286
  get to(): string;
@@ -269,7 +297,7 @@ export declare class RelativeDateFilter extends AbstractFilter {
269
297
  readonly count: number;
270
298
  readonly operator: string;
271
299
  readonly anchor?: Date | string;
272
- constructor(l: LevelAttribute, offset: number, count: number, operator?: string, anchor?: Date | string);
300
+ constructor(l: LevelAttribute, offset: number, count: number, operator?: string, anchor?: Date | string, guid?: string);
273
301
  get level(): LevelAttribute;
274
302
  /**
275
303
  * gets the element's ID
@@ -286,7 +314,7 @@ export declare class RelativeDateFilter extends AbstractFilter {
286
314
  filterJaql(): any;
287
315
  }
288
316
  /**
289
- * @param json
317
+ * @param json - Filter JSON representation
290
318
  * @internal
291
319
  */
292
320
  export declare function createFilter(json: any): Filter;
@@ -25,7 +25,7 @@ export const TextOperators = {
25
25
  DoesntEqual: 'doesntEqual',
26
26
  DoesntStartWith: 'doesntStartWith',
27
27
  DoesntContain: 'doesntContain',
28
- DoesntEndWith: 'doesntEndWidth',
28
+ DoesntEndWith: 'doesntEndWith',
29
29
  Like: 'like',
30
30
  };
31
31
  /**
@@ -85,6 +85,7 @@ export const FilterTypes = {
85
85
  numeric: 'numeric',
86
86
  date: 'date',
87
87
  relativeDate: 'relativeDate',
88
+ cascading: 'cascading',
88
89
  };
89
90
  // CLASSES
90
91
  /**
@@ -93,12 +94,13 @@ export const FilterTypes = {
93
94
  * @internal
94
95
  */
95
96
  class AbstractFilter extends DimensionalElement {
96
- constructor(att, filterType) {
97
+ constructor(att, filterType, guid) {
97
98
  super('filter', MetadataTypes.Filter);
98
99
  this.filterType = filterType;
99
100
  AbstractFilter.checkAttributeSupport(att);
100
101
  this.attribute = att;
101
- this.guid = guidFast(13);
102
+ this.guid = guid || guidFast(13);
103
+ this.disabled = false;
102
104
  }
103
105
  get name() {
104
106
  return hash(this.jaql());
@@ -118,6 +120,9 @@ class AbstractFilter extends DimensionalElement {
118
120
  * @param nested - defines whether the JAQL is nested within parent JAQL statement or a root JAQL element
119
121
  */
120
122
  jaql(nested) {
123
+ if (this.disabled) {
124
+ return AbstractFilter.disabledJaql(nested);
125
+ }
121
126
  const result = this.attribute.jaql(false);
122
127
  const level = this.attribute;
123
128
  if (level.getFormat && level.getFormat() !== undefined) {
@@ -142,13 +147,16 @@ class AbstractFilter extends DimensionalElement {
142
147
  throw new TranslatableError('errors.filter.unsupportedDatetimeLevel');
143
148
  }
144
149
  }
150
+ static disabledJaql(nested) {
151
+ return nested ? { filter: {} } : { jaql: { filter: {} } };
152
+ }
145
153
  }
146
154
  /**
147
155
  * @internal
148
156
  */
149
157
  export class LogicalAttributeFilter extends AbstractFilter {
150
- constructor(filters, operator) {
151
- super(filters[0].attribute, FilterTypes.logicalAttribute);
158
+ constructor(filters, operator, guid) {
159
+ super(filters[0].attribute, FilterTypes.logicalAttribute, guid);
152
160
  this.operator = operator;
153
161
  this.filters = filters;
154
162
  }
@@ -180,8 +188,8 @@ export class LogicalAttributeFilter extends AbstractFilter {
180
188
  * @internal
181
189
  */
182
190
  export class MembersFilter extends AbstractFilter {
183
- constructor(attribute, members) {
184
- super(attribute, FilterTypes.members);
191
+ constructor(attribute, members, guid) {
192
+ super(attribute, FilterTypes.members, guid);
185
193
  this.members = members !== null && members !== void 0 ? members : [];
186
194
  if (this.members.filter((m) => m === null || m === undefined).length > 0) {
187
195
  throw new TranslatableError('errors.filter.membersFilterNullMember', {
@@ -212,12 +220,52 @@ export class MembersFilter extends AbstractFilter {
212
220
  };
213
221
  }
214
222
  }
223
+ /**
224
+ * @internal
225
+ */
226
+ export class CascadingFilter extends AbstractFilter {
227
+ constructor(filters, guid) {
228
+ super(filters[0].attribute, FilterTypes.cascading, guid);
229
+ this.filters = filters;
230
+ }
231
+ /**
232
+ * gets the element's ID
233
+ */
234
+ get id() {
235
+ return `${this.filterType}_${this.filters.map((f) => f.id).join()}`;
236
+ }
237
+ /**
238
+ * Gets a serializable representation of the element
239
+ */
240
+ serializable() {
241
+ const result = super.serializable();
242
+ result.filters = this.filters.map((f) => f.serializable());
243
+ return result;
244
+ }
245
+ /**
246
+ * Gets JAQL representing this Filter instance
247
+ */
248
+ filterJaql() {
249
+ // return empty object as jaql is handled by jaql() method
250
+ return {};
251
+ }
252
+ jaql(nested) {
253
+ if (this.disabled) {
254
+ return AbstractFilter.disabledJaql(nested);
255
+ }
256
+ // return jaql of all level filters treated as scope filters
257
+ return this.filters.map((f) => {
258
+ f.isScope = true;
259
+ return f.jaql(nested);
260
+ });
261
+ }
262
+ }
215
263
  /**
216
264
  * @internal
217
265
  */
218
266
  export class ExcludeFilter extends AbstractFilter {
219
- constructor(filter, input) {
220
- super(filter.attribute, FilterTypes.exclude);
267
+ constructor(filter, input, guid) {
268
+ super(filter.attribute, FilterTypes.exclude, guid);
221
269
  this.input = input;
222
270
  this.filter = filter;
223
271
  }
@@ -262,8 +310,8 @@ export class ExcludeFilter extends AbstractFilter {
262
310
  * @internal
263
311
  */
264
312
  export class DoubleOperatorFilter extends AbstractFilter {
265
- constructor(att, filterType, operatorA, valueA, operatorB, valueB) {
266
- super(att, filterType);
313
+ constructor(att, filterType, operatorA, valueA, operatorB, valueB, guid) {
314
+ super(att, filterType, guid);
267
315
  if (operatorA && valueA !== undefined) {
268
316
  this.valueA = valueA;
269
317
  this.operatorA = operatorA;
@@ -323,8 +371,8 @@ export class DoubleOperatorFilter extends AbstractFilter {
323
371
  * @internal
324
372
  */
325
373
  export class MeasureFilter extends DoubleOperatorFilter {
326
- constructor(att, measure, operatorA, valueA, operatorB, valueB) {
327
- super(att, FilterTypes.measure, operatorA, valueA, operatorB, valueB);
374
+ constructor(att, measure, operatorA, valueA, operatorB, valueB, guid) {
375
+ super(att, FilterTypes.measure, operatorA, valueA, operatorB, valueB, guid);
328
376
  this.measure = measure;
329
377
  }
330
378
  /**
@@ -349,6 +397,9 @@ export class MeasureFilter extends DoubleOperatorFilter {
349
397
  return result;
350
398
  }
351
399
  jaql(nested) {
400
+ if (this.disabled) {
401
+ return AbstractFilter.disabledJaql(nested);
402
+ }
352
403
  const result = super.jaql(nested);
353
404
  if (this.measure instanceof DimensionalBaseMeasure) {
354
405
  Object.entries(this.measure.jaql().jaql).forEach(([key, value]) => {
@@ -362,8 +413,8 @@ export class MeasureFilter extends DoubleOperatorFilter {
362
413
  * @internal
363
414
  */
364
415
  export class RankingFilter extends AbstractFilter {
365
- constructor(att, measure, operator, count) {
366
- super(att, FilterTypes.ranking);
416
+ constructor(att, measure, operator, count, guid) {
417
+ super(att, FilterTypes.ranking, guid);
367
418
  this.count = count;
368
419
  this.operator = operator;
369
420
  this.measure = measure;
@@ -398,24 +449,24 @@ export class RankingFilter extends AbstractFilter {
398
449
  * @internal
399
450
  */
400
451
  export class NumericFilter extends DoubleOperatorFilter {
401
- constructor(att, operatorA, valueA, operatorB, valueB) {
402
- super(att, FilterTypes.numeric, operatorA, valueA, operatorB, valueB);
452
+ constructor(att, operatorA, valueA, operatorB, valueB, guid) {
453
+ super(att, FilterTypes.numeric, operatorA, valueA, operatorB, valueB, guid);
403
454
  }
404
455
  }
405
456
  /**
406
457
  * @internal
407
458
  */
408
459
  export class TextFilter extends DoubleOperatorFilter {
409
- constructor(att, operator, value) {
410
- super(att, FilterTypes.text, operator, value);
460
+ constructor(att, operator, value, guid) {
461
+ super(att, FilterTypes.text, operator, value, undefined, undefined, guid);
411
462
  }
412
463
  }
413
464
  /**
414
465
  * @internal
415
466
  */
416
467
  export class DateRangeFilter extends DoubleOperatorFilter {
417
- constructor(l, valueFrom, valueTo) {
418
- super(l, FilterTypes.date, DateOperators.From, valueFrom, DateOperators.To, valueTo);
468
+ constructor(l, valueFrom, valueTo, guid) {
469
+ super(l, FilterTypes.date, DateOperators.From, valueFrom, DateOperators.To, valueTo, guid);
419
470
  if (typeof valueFrom === 'object') {
420
471
  this.valueA = valueFrom.toISOString();
421
472
  }
@@ -443,8 +494,8 @@ export class DateRangeFilter extends DoubleOperatorFilter {
443
494
  * @internal
444
495
  */
445
496
  export class RelativeDateFilter extends AbstractFilter {
446
- constructor(l, offset, count, operator, anchor) {
447
- super(l, FilterTypes.relativeDate);
497
+ constructor(l, offset, count, operator, anchor, guid) {
498
+ super(l, FilterTypes.relativeDate, guid);
448
499
  if (!operator) {
449
500
  operator = DateOperators.Next;
450
501
  }
@@ -506,7 +557,7 @@ export class RelativeDateFilter extends AbstractFilter {
506
557
  }
507
558
  }
508
559
  /**
509
- * @param json
560
+ * @param json - Filter JSON representation
510
561
  * @internal
511
562
  */
512
563
  export function createFilter(json) {
@@ -11,7 +11,7 @@ import { FilterJaqlInternal, RankingFilterJaql } from './types.js';
11
11
  * @param dataType - Data type
12
12
  * @returns attribute or level attribute
13
13
  */
14
- export declare const createAttributeHelper: (dim: string, table: string, column: string, level: string | undefined, dataType: string) => Attribute | LevelAttribute;
14
+ export declare const createAttributeHelper: (dim: string, table: string | undefined, column: string, level: string | undefined, dataType: string) => Attribute | LevelAttribute;
15
15
  /**
16
16
  * Creates an attribute or level attribute from the provided filter JAQL object
17
17
  *
@@ -30,7 +30,7 @@ export declare const createAttributeFromFilterJaql: (jaql: FilterJaql | FilterJa
30
30
  * @param agg - Aggregation function
31
31
  * @returns measure
32
32
  */
33
- export declare const createMeasureHelper: (dim: string, table: string, column: string, level: string | undefined, dataType: string, agg: string) => BaseMeasure;
33
+ export declare const createMeasureHelper: (dim: string, table: string | undefined, column: string, level: string | undefined, dataType: string, agg: string) => BaseMeasure;
34
34
  /**
35
35
  * Creates a measure from the provided filter JAQL object
36
36
  *
@@ -14,17 +14,20 @@ const DATA_MODEL_MODULE_NAME = 'DM';
14
14
  * @returns attribute or level attribute
15
15
  */
16
16
  export const createAttributeHelper = (dim, table, column, level, dataType) => {
17
+ // if table is undefined, extract it from dim
18
+ const dimTable = table !== null && table !== void 0 ? table : dim.slice(1, -1).split('.')[0];
17
19
  if (level) {
18
20
  const dateLevel = DimensionalLevelAttribute.translateJaqlToGranularity({ level });
19
- const levelAttribute = new DimensionalLevelAttribute(column, dim, dateLevel);
20
- levelAttribute.composeCode = normalizeAttributeName(table, column, level, DATA_MODEL_MODULE_NAME);
21
+ const format = DimensionalLevelAttribute.getDefaultFormatForGranularity(dateLevel);
22
+ const levelAttribute = new DimensionalLevelAttribute(column, dim, dateLevel, format);
23
+ levelAttribute.composeCode = normalizeAttributeName(dimTable, column, level, DATA_MODEL_MODULE_NAME);
21
24
  return levelAttribute;
22
25
  }
23
26
  const attributeType = isNumber(dataType)
24
27
  ? MetadataTypes.NumericAttribute
25
28
  : MetadataTypes.TextAttribute;
26
29
  const attribute = new DimensionalAttribute(column, dim, attributeType);
27
- attribute.composeCode = normalizeAttributeName(table, column, undefined, DATA_MODEL_MODULE_NAME);
30
+ attribute.composeCode = normalizeAttributeName(dimTable, column, undefined, DATA_MODEL_MODULE_NAME);
28
31
  return attribute;
29
32
  };
30
33
  /**
@@ -6,14 +6,16 @@ export declare const getSelectedConditionOption: (filter: ConditionFilterJaql) =
6
6
  *
7
7
  * @param attribute - Provided attribute
8
8
  * @param conditionFilterJaql - Condition filter JAQL object
9
+ * @param guid - Optional GUID for the filter
9
10
  * @returns attribute filter
10
11
  */
11
- export declare const createAttributeFilterFromConditionFilterJaql: (attribute: Attribute, conditionFilterJaql: ConditionFilterJaql) => Filter;
12
+ export declare const createAttributeFilterFromConditionFilterJaql: (attribute: Attribute, conditionFilterJaql: ConditionFilterJaql, guid?: string) => Filter;
12
13
  /**
13
14
  * Creates a measure filter from the provided measure and condition filter JAQL object
14
15
  *
15
16
  * @param measure - Provided measure
16
17
  * @param conditionFilterJaql - Condition filter JAQL object
18
+ * @param guid - Optional GUID for the filter
17
19
  * @returns measure filter
18
20
  */
19
- export declare const createMeasureFilterFromConditionFilterJaql: (measure: BaseMeasure, conditionFilterJaql: ConditionFilterJaql) => Filter;
21
+ export declare const createMeasureFilterFromConditionFilterJaql: (measure: BaseMeasure, conditionFilterJaql: ConditionFilterJaql, guid?: string) => Filter;
@@ -35,12 +35,8 @@ export const getSelectedConditionOption = (filter) => {
35
35
  return ConditionFilterType.IS_WITHIN;
36
36
  if (isGreaterThanCondition(filter))
37
37
  return ConditionFilterType.GREATER_THAN;
38
- if (isGreaterThanOrEqualCondition(filter))
39
- return ConditionFilterType.GREATER_THAN_OR_EQUAL;
40
38
  if (isLessThanCondition(filter))
41
39
  return ConditionFilterType.LESS_THAN;
42
- if (isLessThanOrEqualCondition(filter))
43
- return ConditionFilterType.LESS_THAN_OR_EQUAL;
44
40
  if (isEqualsCondition(filter))
45
41
  return ConditionFilterType.EQUALS;
46
42
  if (isNotEqualCondition(filter))
@@ -61,14 +57,19 @@ export const getSelectedConditionOption = (filter) => {
61
57
  return ConditionFilterType.ENDS_WITH;
62
58
  if (isStartsWithCondition(filter))
63
59
  return ConditionFilterType.STARTS_WITH;
64
- if (isBetweenCondition(filter))
65
- return ConditionFilterType.BETWEEN;
66
60
  if (isNotBetweenCondition(filter))
67
61
  return ConditionFilterType.IS_NOT_BETWEEN;
68
62
  if (isMembersCondition(filter))
69
63
  return ConditionFilterType.IS;
70
64
  if (isMultipleCondition(filter))
71
65
  return ConditionFilterType.MULTIPLE_CONDITION;
66
+ // Need to verify BETWEEN case before the GREATER_THAN_OR_EQUAL and LESS_THAN_OR_EQUAL due to missing `filter.isBetween` property in some cases
67
+ if (isBetweenCondition(filter))
68
+ return ConditionFilterType.BETWEEN;
69
+ if (isGreaterThanOrEqualCondition(filter))
70
+ return ConditionFilterType.GREATER_THAN_OR_EQUAL;
71
+ if (isLessThanOrEqualCondition(filter))
72
+ return ConditionFilterType.LESS_THAN_OR_EQUAL;
72
73
  return ConditionFilterType.NONE;
73
74
  };
74
75
  /**
@@ -76,54 +77,55 @@ export const getSelectedConditionOption = (filter) => {
76
77
  *
77
78
  * @param attribute - Provided attribute
78
79
  * @param conditionFilterJaql - Condition filter JAQL object
80
+ * @param guid - Optional GUID for the filter
79
81
  * @returns attribute filter
80
82
  */
81
- export const createAttributeFilterFromConditionFilterJaql = (attribute, conditionFilterJaql) => {
83
+ export const createAttributeFilterFromConditionFilterJaql = (attribute, conditionFilterJaql, guid) => {
82
84
  var _a, _b;
83
85
  const conditionType = getSelectedConditionOption(conditionFilterJaql);
84
86
  switch (conditionType) {
85
87
  case ConditionFilterType.BOTTOM:
86
88
  if (conditionFilterJaql.by && 'agg' in conditionFilterJaql.by) {
87
- return withComposeCode(filterFactory.bottomRanking)(attribute, createMeasureFromRankingFilterJaql(conditionFilterJaql.by), conditionFilterJaql[ConditionFilterType.BOTTOM]);
89
+ return withComposeCode(filterFactory.bottomRanking)(attribute, createMeasureFromRankingFilterJaql(conditionFilterJaql.by), conditionFilterJaql[ConditionFilterType.BOTTOM], guid);
88
90
  }
89
91
  break;
90
92
  case ConditionFilterType.EQUALS:
91
- return withComposeCode(filterFactory.equals)(attribute, conditionFilterJaql[ConditionFilterType.EQUALS]);
93
+ return withComposeCode(filterFactory.equals)(attribute, conditionFilterJaql[ConditionFilterType.EQUALS], guid);
92
94
  case ConditionFilterType.GREATER_THAN:
93
- return withComposeCode(filterFactory.greaterThan)(attribute, conditionFilterJaql[ConditionFilterType.GREATER_THAN]);
95
+ return withComposeCode(filterFactory.greaterThan)(attribute, conditionFilterJaql[ConditionFilterType.GREATER_THAN], guid);
94
96
  case ConditionFilterType.GREATER_THAN_OR_EQUAL:
95
- return withComposeCode(filterFactory.greaterThanOrEqual)(attribute, conditionFilterJaql[ConditionFilterType.GREATER_THAN_OR_EQUAL]);
97
+ return withComposeCode(filterFactory.greaterThanOrEqual)(attribute, conditionFilterJaql[ConditionFilterType.GREATER_THAN_OR_EQUAL], guid);
96
98
  case ConditionFilterType.TOP:
97
99
  if (conditionFilterJaql.by) {
98
- return withComposeCode(filterFactory.topRanking)(attribute, createMeasureFromRankingFilterJaql(conditionFilterJaql.by), conditionFilterJaql[ConditionFilterType.TOP]);
100
+ return withComposeCode(filterFactory.topRanking)(attribute, createMeasureFromRankingFilterJaql(conditionFilterJaql.by), conditionFilterJaql[ConditionFilterType.TOP], guid);
99
101
  }
100
102
  break;
101
103
  case ConditionFilterType.STARTS_WITH:
102
- return withComposeCode(filterFactory.startsWith)(attribute, conditionFilterJaql[ConditionFilterType.STARTS_WITH]);
104
+ return withComposeCode(filterFactory.startsWith)(attribute, conditionFilterJaql[ConditionFilterType.STARTS_WITH], guid);
103
105
  case ConditionFilterType.DOESNT_START_WITH:
104
- return withComposeCode(filterFactory.doesntStartWith)(attribute, conditionFilterJaql[ConditionFilterType.DOESNT_START_WITH]);
106
+ return withComposeCode(filterFactory.doesntStartWith)(attribute, conditionFilterJaql[ConditionFilterType.DOESNT_START_WITH], guid);
105
107
  case ConditionFilterType.ENDS_WITH:
106
- return withComposeCode(filterFactory.endsWith)(attribute, conditionFilterJaql[ConditionFilterType.ENDS_WITH]);
108
+ return withComposeCode(filterFactory.endsWith)(attribute, conditionFilterJaql[ConditionFilterType.ENDS_WITH], guid);
107
109
  case ConditionFilterType.DOESNT_END_WITH:
108
- return withComposeCode(filterFactory.doesntEndWith)(attribute, conditionFilterJaql[ConditionFilterType.DOESNT_END_WITH]);
110
+ return withComposeCode(filterFactory.doesntEndWith)(attribute, conditionFilterJaql[ConditionFilterType.DOESNT_END_WITH], guid);
109
111
  case ConditionFilterType.CONTAINS:
110
- return withComposeCode(filterFactory.contains)(attribute, conditionFilterJaql[ConditionFilterType.CONTAINS]);
112
+ return withComposeCode(filterFactory.contains)(attribute, conditionFilterJaql[ConditionFilterType.CONTAINS], guid);
111
113
  case ConditionFilterType.DOESNT_CONTAIN:
112
- return withComposeCode(filterFactory.doesntContain)(attribute, conditionFilterJaql[ConditionFilterType.DOESNT_CONTAIN]);
114
+ return withComposeCode(filterFactory.doesntContain)(attribute, conditionFilterJaql[ConditionFilterType.DOESNT_CONTAIN], guid);
113
115
  case ConditionFilterType.LESS_THAN:
114
- return withComposeCode(filterFactory.lessThan)(attribute, conditionFilterJaql[ConditionFilterType.LESS_THAN]);
116
+ return withComposeCode(filterFactory.lessThan)(attribute, conditionFilterJaql[ConditionFilterType.LESS_THAN], guid);
115
117
  case ConditionFilterType.LESS_THAN_OR_EQUAL:
116
- return withComposeCode(filterFactory.lessThanOrEqual)(attribute, conditionFilterJaql[ConditionFilterType.LESS_THAN_OR_EQUAL]);
118
+ return withComposeCode(filterFactory.lessThanOrEqual)(attribute, conditionFilterJaql[ConditionFilterType.LESS_THAN_OR_EQUAL], guid);
117
119
  case ConditionFilterType.BETWEEN:
118
- return withComposeCode(filterFactory.between)(attribute, conditionFilterJaql.from, conditionFilterJaql.to);
120
+ return withComposeCode(filterFactory.between)(attribute, conditionFilterJaql.from, conditionFilterJaql.to, guid);
119
121
  case ConditionFilterType.IS_NOT_BETWEEN:
120
- 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));
122
+ 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));
121
123
  case ConditionFilterType.MULTIPLE_CONDITION:
122
124
  if (conditionFilterJaql.and) {
123
- return withComposeCode(filterFactory.intersection)(conditionFilterJaql.and.map((c) => createAttributeFilterFromConditionFilterJaql(attribute, c)));
125
+ return withComposeCode(filterFactory.intersection)(conditionFilterJaql.and.map((c) => createAttributeFilterFromConditionFilterJaql(attribute, c, guid)), guid);
124
126
  }
125
127
  if (conditionFilterJaql.or) {
126
- return withComposeCode(filterFactory.union)(conditionFilterJaql.or.map((c) => createAttributeFilterFromConditionFilterJaql(attribute, c)));
128
+ return withComposeCode(filterFactory.union)(conditionFilterJaql.or.map((c) => createAttributeFilterFromConditionFilterJaql(attribute, c, guid)), guid);
127
129
  }
128
130
  break;
129
131
  case ConditionFilterType.AFTER:
@@ -140,23 +142,24 @@ export const createAttributeFilterFromConditionFilterJaql = (attribute, conditio
140
142
  *
141
143
  * @param measure - Provided measure
142
144
  * @param conditionFilterJaql - Condition filter JAQL object
145
+ * @param guid - Optional GUID for the filter
143
146
  * @returns measure filter
144
147
  */
145
- export const createMeasureFilterFromConditionFilterJaql = (measure, conditionFilterJaql) => {
148
+ export const createMeasureFilterFromConditionFilterJaql = (measure, conditionFilterJaql, guid) => {
146
149
  const conditionType = getSelectedConditionOption(conditionFilterJaql);
147
150
  switch (conditionType) {
148
151
  case ConditionFilterType.EQUALS:
149
- return withComposeCode(filterFactory.measureEquals)(measure, conditionFilterJaql[ConditionFilterType.EQUALS]);
152
+ return withComposeCode(filterFactory.measureEquals)(measure, conditionFilterJaql[ConditionFilterType.EQUALS], guid);
150
153
  case ConditionFilterType.GREATER_THAN:
151
- return withComposeCode(filterFactory.measureGreaterThan)(measure, conditionFilterJaql[ConditionFilterType.GREATER_THAN]);
154
+ return withComposeCode(filterFactory.measureGreaterThan)(measure, conditionFilterJaql[ConditionFilterType.GREATER_THAN], guid);
152
155
  case ConditionFilterType.GREATER_THAN_OR_EQUAL:
153
- return withComposeCode(filterFactory.measureGreaterThanOrEqual)(measure, conditionFilterJaql[ConditionFilterType.GREATER_THAN_OR_EQUAL]);
156
+ return withComposeCode(filterFactory.measureGreaterThanOrEqual)(measure, conditionFilterJaql[ConditionFilterType.GREATER_THAN_OR_EQUAL], guid);
154
157
  case ConditionFilterType.LESS_THAN:
155
- return withComposeCode(filterFactory.measureLessThan)(measure, conditionFilterJaql[ConditionFilterType.LESS_THAN]);
158
+ return withComposeCode(filterFactory.measureLessThan)(measure, conditionFilterJaql[ConditionFilterType.LESS_THAN], guid);
156
159
  case ConditionFilterType.LESS_THAN_OR_EQUAL:
157
- return withComposeCode(filterFactory.measureLessThanOrEqual)(measure, conditionFilterJaql[ConditionFilterType.LESS_THAN_OR_EQUAL]);
160
+ return withComposeCode(filterFactory.measureLessThanOrEqual)(measure, conditionFilterJaql[ConditionFilterType.LESS_THAN_OR_EQUAL], guid);
158
161
  case ConditionFilterType.BETWEEN:
159
- return withComposeCode(filterFactory.measureBetween)(measure, conditionFilterJaql.from, conditionFilterJaql.to);
162
+ return withComposeCode(filterFactory.measureBetween)(measure, conditionFilterJaql.from, conditionFilterJaql.to, guid);
160
163
  }
161
164
  throw 'Jaql contains unsupported condition filter: ' + JSON.stringify(conditionFilterJaql);
162
165
  };
@@ -40,7 +40,7 @@ export function stringifyHelper(arg) {
40
40
  */
41
41
  export function withComposeCode(func) {
42
42
  return function (...args) {
43
- const argValues = args.map(stringifyHelper).join(', ');
43
+ const argValues = args.map(stringifyHelper).join(', ').replace(/, $/, '');
44
44
  const signature = `filterFactory.${func.name}(${argValues})`;
45
45
  const filter = func(...args);
46
46
  filter.composeCode = signature;
@@ -5,63 +5,69 @@ import { FilterJaql } from '../../types.js';
5
5
  * Creates a generic filter (aka pass-through JAQL filter) if the JAQL cannot be translated to a specific filter type.
6
6
  *
7
7
  * @param jaql - The JAQL object.
8
- * @param instanceid - The instance ID.
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, instanceid?: 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
17
  * @returns The created Filter object.
17
18
  */
18
- export declare const createFilterIncludeAll: (attribute: Attribute) => Filter;
19
+ export declare const createFilterIncludeAll: (attribute: Attribute, guid?: string) => Filter;
19
20
  /**
20
21
  * Creates a filter from a specific items filter JAQL object.
21
22
  *
22
23
  * @param attribute - attribute
23
24
  * @param specificItemsFilterJaql - Specific Items Filter Jaql
25
+ * @param guid - Optional GUID for the filter
24
26
  * @returns Filter object
25
27
  */
26
- export declare const createFilterFromSpecificItemsFilterJaql: (attribute: Attribute, specificItemsFilterJaql: SpecificItemsFilterJaql) => Filter;
28
+ export declare const createFilterFromSpecificItemsFilterJaql: (attribute: Attribute, specificItemsFilterJaql: SpecificItemsFilterJaql, guid?: string) => Filter;
27
29
  /**
28
30
  * Creates a filter from a date range filter JAQL object.
29
31
  *
30
32
  * @param attribute - attribute
31
33
  * @param rangeFilterJaql - Range Filter Jaql
34
+ * @param guid - Optional GUID for the filter
32
35
  * @returns Filter object
33
36
  */
34
- export declare const createFilterFromDateRangeFilterJaql: (attribute: LevelAttribute, rangeFilterJaql: RangeFilterJaql) => Filter;
37
+ export declare const createFilterFromDateRangeFilterJaql: (attribute: LevelAttribute, rangeFilterJaql: RangeFilterJaql, guid?: string) => Filter;
35
38
  /**
36
39
  * Creates a filter from a numeric range filter JAQL object.
37
40
  *
38
41
  * @param attribute - attribute
39
42
  * @param rangeFilterJaql - Range Filter Jaql
43
+ * @param guid - Optional GUID for the filter
40
44
  * @returns Filter object
41
45
  */
42
- export declare const createFilterFromNumericRangeJaql: (attribute: Attribute, rangeFilterJaql: RangeFilterJaql) => Filter;
46
+ export declare const createFilterFromNumericRangeJaql: (attribute: Attribute, rangeFilterJaql: RangeFilterJaql, guid?: string) => Filter;
43
47
  /**
44
48
  * Creates a filter from a period filter JAQL object.
45
49
  *
46
50
  * @param attribute - attribute
47
51
  * @param periodFilterJaql - Period Filter Jaql
52
+ * @param guid - Optional GUID for the filter
48
53
  * @returns Filter object
49
54
  */
50
- export declare const createFilterFromPeriodFilterJaql: (attribute: LevelAttribute, periodFilterJaql: PeriodFilterJaql) => Filter;
55
+ export declare const createFilterFromPeriodFilterJaql: (attribute: LevelAttribute, periodFilterJaql: PeriodFilterJaql, guid?: string) => Filter;
51
56
  /**
52
57
  * Creates a filter from a condition filter JAQL object.
53
58
  *
54
59
  * @param attribute - attribute
55
60
  * @param conditionFilterJaql - Condition Filter Jaql
56
61
  * @param measure - measure
62
+ * @param guid - Optional GUID for the filter
57
63
  * @returns Filter object
58
64
  */
59
- export declare const createFilterFromConditionFilterJaql: (attribute: Attribute, conditionFilterJaql: ConditionFilterJaql, measure?: BaseMeasure) => Filter;
65
+ export declare const createFilterFromConditionFilterJaql: (attribute: Attribute, conditionFilterJaql: ConditionFilterJaql, measure?: BaseMeasure, guid?: string) => Filter;
60
66
  /**
61
67
  * Creates a filter from a filter JAQL object.
62
68
  *
63
69
  * @param jaql - The filter JAQL object.
64
- * @param instanceid - The instance ID.
70
+ * @param guid - Optional GUID for the filter
65
71
  * @returns Filter object.
66
72
  */
67
- export declare const createFilterFromJaqlInternal: (jaql: FilterJaqlInternal, instanceid?: string) => Filter;
73
+ export declare const createFilterFromJaqlInternal: (jaql: FilterJaqlInternal, guid?: string) => Filter;