@sisense/sdk-data 1.11.0 → 1.13.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.
- package/dist/cjs/dimensional-model/analytics/factory.d.ts +47 -0
- package/dist/cjs/dimensional-model/analytics/factory.js +153 -0
- package/dist/cjs/dimensional-model/analytics/factory.test.d.ts +1 -0
- package/dist/cjs/dimensional-model/analytics/factory.test.js +99 -0
- package/dist/cjs/dimensional-model/attributes.d.ts +139 -0
- package/dist/cjs/dimensional-model/attributes.js +342 -0
- package/dist/cjs/dimensional-model/attributes.test.d.ts +1 -0
- package/dist/cjs/dimensional-model/attributes.test.js +154 -0
- package/dist/cjs/dimensional-model/base.d.ts +43 -0
- package/dist/cjs/dimensional-model/base.js +58 -0
- package/dist/cjs/dimensional-model/base.test.d.ts +1 -0
- package/dist/cjs/dimensional-model/base.test.js +17 -0
- package/dist/cjs/dimensional-model/data-model.d.ts +13 -0
- package/dist/cjs/dimensional-model/data-model.js +37 -0
- package/dist/cjs/dimensional-model/dimensions.d.ts +167 -0
- package/dist/cjs/dimensional-model/dimensions.js +307 -0
- package/dist/cjs/dimensional-model/dimensions.test.d.ts +1 -0
- package/dist/cjs/dimensional-model/dimensions.test.js +54 -0
- package/dist/cjs/dimensional-model/factory.d.ts +17 -0
- package/dist/cjs/dimensional-model/factory.js +54 -0
- package/dist/cjs/dimensional-model/filters/factory.d.ts +797 -0
- package/dist/cjs/dimensional-model/filters/factory.js +962 -0
- package/dist/cjs/dimensional-model/filters/factory.test.d.ts +1 -0
- package/dist/cjs/dimensional-model/filters/factory.test.js +366 -0
- package/dist/cjs/dimensional-model/filters/filters.d.ts +344 -0
- package/dist/cjs/dimensional-model/filters/filters.js +663 -0
- package/dist/cjs/dimensional-model/filters/filters.test.d.ts +1 -0
- package/dist/cjs/dimensional-model/filters/filters.test.js +225 -0
- package/dist/cjs/dimensional-model/filters/utils/attribute-measure-util.d.ts +47 -0
- package/dist/cjs/dimensional-model/filters/utils/attribute-measure-util.js +111 -0
- package/dist/cjs/dimensional-model/filters/utils/condition-filter-util.d.ts +21 -0
- package/dist/cjs/dimensional-model/filters/utils/condition-filter-util.js +196 -0
- package/dist/cjs/dimensional-model/filters/utils/date-time-filter-util.d.ts +2 -0
- package/dist/cjs/dimensional-model/filters/utils/date-time-filter-util.js +12 -0
- package/dist/cjs/dimensional-model/filters/utils/filter-code-util.d.ts +13 -0
- package/dist/cjs/dimensional-model/filters/utils/filter-code-util.js +58 -0
- package/dist/cjs/dimensional-model/filters/utils/filter-code-util.test.d.ts +1 -0
- package/dist/cjs/dimensional-model/filters/utils/filter-code-util.test.js +32 -0
- package/dist/cjs/dimensional-model/filters/utils/filter-from-jaql-util.d.ts +82 -0
- package/dist/cjs/dimensional-model/filters/utils/filter-from-jaql-util.js +215 -0
- package/dist/cjs/dimensional-model/filters/utils/filter-from-jaql-util.test.d.ts +1 -0
- package/dist/cjs/dimensional-model/filters/utils/filter-from-jaql-util.test.js +623 -0
- package/dist/cjs/dimensional-model/filters/utils/filter-matcher-utils.d.ts +5 -0
- package/dist/cjs/dimensional-model/filters/utils/filter-matcher-utils.js +174 -0
- package/dist/cjs/dimensional-model/filters/utils/filter-matcher-utils.test.d.ts +1 -0
- package/dist/cjs/dimensional-model/filters/utils/filter-matcher-utils.test.js +236 -0
- package/dist/cjs/dimensional-model/filters/utils/filter-types-util.d.ts +17 -0
- package/dist/cjs/dimensional-model/filters/utils/filter-types-util.js +79 -0
- package/dist/cjs/dimensional-model/filters/utils/types.d.ts +206 -0
- package/dist/cjs/dimensional-model/filters/utils/types.js +99 -0
- package/dist/cjs/dimensional-model/interfaces.d.ts +512 -0
- package/dist/cjs/dimensional-model/interfaces.js +31 -0
- package/dist/cjs/dimensional-model/measures/factory.d.ts +920 -0
- package/dist/cjs/dimensional-model/measures/factory.js +1188 -0
- package/dist/cjs/dimensional-model/measures/factory.test.d.ts +1 -0
- package/dist/cjs/dimensional-model/measures/factory.test.js +481 -0
- package/dist/cjs/dimensional-model/measures/measures.d.ts +217 -0
- package/dist/cjs/dimensional-model/measures/measures.js +416 -0
- package/dist/cjs/dimensional-model/measures/measures.test.d.ts +1 -0
- package/dist/cjs/dimensional-model/measures/measures.test.js +79 -0
- package/dist/cjs/dimensional-model/simple-column-types.d.ts +39 -0
- package/dist/cjs/dimensional-model/simple-column-types.js +134 -0
- package/dist/cjs/dimensional-model/simple-column-types.test.d.ts +1 -0
- package/dist/cjs/dimensional-model/simple-column-types.test.js +85 -0
- package/dist/cjs/dimensional-model/types.d.ts +256 -0
- package/dist/cjs/dimensional-model/types.js +298 -0
- package/dist/cjs/dimensional-model/types.test.d.ts +1 -0
- package/dist/cjs/dimensional-model/types.test.js +33 -0
- package/dist/cjs/index.d.ts +93 -0
- package/dist/cjs/index.js +123 -0
- package/dist/cjs/interfaces.d.ts +367 -0
- package/dist/cjs/interfaces.js +21 -0
- package/dist/cjs/translation/initialize-i18n.d.ts +2 -0
- package/dist/cjs/translation/initialize-i18n.js +14 -0
- package/dist/cjs/translation/resources/en.d.ts +28 -0
- package/dist/cjs/translation/resources/en.js +30 -0
- package/dist/cjs/translation/resources/index.d.ts +53 -0
- package/dist/cjs/translation/resources/index.js +10 -0
- package/dist/cjs/translation/resources/uk.d.ts +5 -0
- package/dist/cjs/translation/resources/uk.js +30 -0
- package/dist/cjs/translation/translatable-error.d.ts +5 -0
- package/dist/cjs/translation/translatable-error.js +15 -0
- package/dist/cjs/utils.d.ts +37 -0
- package/dist/cjs/utils.js +105 -0
- package/dist/cjs/utils.test.d.ts +1 -0
- package/dist/cjs/utils.test.js +158 -0
- package/dist/dimensional-model/analytics/factory.js +6 -4
- package/dist/dimensional-model/filters/factory.d.ts +81 -42
- package/dist/dimensional-model/filters/factory.js +125 -87
- package/dist/dimensional-model/filters/filters.d.ts +58 -13
- package/dist/dimensional-model/filters/filters.js +117 -27
- package/dist/dimensional-model/filters/utils/condition-filter-util.d.ts +4 -2
- package/dist/dimensional-model/filters/utils/condition-filter-util.js +30 -26
- package/dist/dimensional-model/filters/utils/filter-code-util.js +5 -1
- package/dist/dimensional-model/filters/utils/filter-from-jaql-util.d.ts +26 -11
- package/dist/dimensional-model/filters/utils/filter-from-jaql-util.js +58 -27
- package/dist/dimensional-model/filters/utils/filter-types-util.js +3 -3
- package/dist/dimensional-model/filters/utils/types.d.ts +6 -0
- package/package.json +18 -9
|
@@ -73,6 +73,8 @@ export declare const FilterTypes: {
|
|
|
73
73
|
numeric: string;
|
|
74
74
|
date: string;
|
|
75
75
|
relativeDate: string;
|
|
76
|
+
cascading: string;
|
|
77
|
+
advanced: string;
|
|
76
78
|
};
|
|
77
79
|
/**
|
|
78
80
|
* base implementation for filter classes
|
|
@@ -92,13 +94,15 @@ declare abstract class AbstractFilter extends DimensionalElement implements Filt
|
|
|
92
94
|
* Global filter identifier
|
|
93
95
|
*/
|
|
94
96
|
readonly guid: string;
|
|
97
|
+
private _disabled;
|
|
95
98
|
/**
|
|
96
99
|
* Boolean flag whether the filter is disabled
|
|
97
100
|
*
|
|
98
101
|
* @internal
|
|
99
102
|
*/
|
|
100
|
-
disabled: boolean;
|
|
101
|
-
|
|
103
|
+
get disabled(): boolean;
|
|
104
|
+
set disabled(value: boolean);
|
|
105
|
+
constructor(att: Attribute, filterType: string, guid?: string);
|
|
102
106
|
get name(): string;
|
|
103
107
|
/**
|
|
104
108
|
* Gets JAQL representing this Filter instance
|
|
@@ -123,6 +127,7 @@ declare abstract class AbstractFilter extends DimensionalElement implements Filt
|
|
|
123
127
|
*/
|
|
124
128
|
jaql(nested?: boolean): any;
|
|
125
129
|
static checkAttributeSupport(attribute: Attribute): void;
|
|
130
|
+
static disabledJaql(nested?: boolean): any;
|
|
126
131
|
}
|
|
127
132
|
/**
|
|
128
133
|
* @internal
|
|
@@ -130,7 +135,7 @@ declare abstract class AbstractFilter extends DimensionalElement implements Filt
|
|
|
130
135
|
export declare class LogicalAttributeFilter extends AbstractFilter {
|
|
131
136
|
readonly filters: Filter[];
|
|
132
137
|
readonly operator: string;
|
|
133
|
-
constructor(filters: Filter[], operator: string);
|
|
138
|
+
constructor(filters: Filter[], operator: string, guid?: string);
|
|
134
139
|
/**
|
|
135
140
|
* gets the element's ID
|
|
136
141
|
*/
|
|
@@ -149,7 +154,9 @@ export declare class LogicalAttributeFilter extends AbstractFilter {
|
|
|
149
154
|
*/
|
|
150
155
|
export declare class MembersFilter extends AbstractFilter {
|
|
151
156
|
readonly members: any[];
|
|
152
|
-
|
|
157
|
+
/** @internal */
|
|
158
|
+
_deactivatedMembers: any[];
|
|
159
|
+
constructor(attribute: Attribute, members?: any[], _deactivatedMembers?: any[], guid?: string);
|
|
153
160
|
/**
|
|
154
161
|
* gets the element's ID
|
|
155
162
|
*/
|
|
@@ -163,13 +170,35 @@ export declare class MembersFilter extends AbstractFilter {
|
|
|
163
170
|
*/
|
|
164
171
|
filterJaql(): any;
|
|
165
172
|
}
|
|
173
|
+
/**
|
|
174
|
+
* @internal
|
|
175
|
+
*/
|
|
176
|
+
export declare class CascadingFilter extends AbstractFilter {
|
|
177
|
+
readonly filters: Filter[];
|
|
178
|
+
constructor(filters: Filter[], guid?: string);
|
|
179
|
+
/**
|
|
180
|
+
* gets the element's ID
|
|
181
|
+
*/
|
|
182
|
+
get id(): string;
|
|
183
|
+
get disabled(): boolean;
|
|
184
|
+
set disabled(value: boolean);
|
|
185
|
+
/**
|
|
186
|
+
* Gets a serializable representation of the element
|
|
187
|
+
*/
|
|
188
|
+
serializable(): any;
|
|
189
|
+
/**
|
|
190
|
+
* Gets JAQL representing this Filter instance
|
|
191
|
+
*/
|
|
192
|
+
filterJaql(): any;
|
|
193
|
+
jaql(nested?: boolean): any;
|
|
194
|
+
}
|
|
166
195
|
/**
|
|
167
196
|
* @internal
|
|
168
197
|
*/
|
|
169
198
|
export declare class ExcludeFilter extends AbstractFilter {
|
|
170
199
|
readonly filter: Filter;
|
|
171
200
|
readonly input?: Filter;
|
|
172
|
-
constructor(filter: Filter, input?: Filter);
|
|
201
|
+
constructor(filter: Filter, input?: Filter, guid?: string);
|
|
173
202
|
/**
|
|
174
203
|
* gets the element's ID
|
|
175
204
|
*/
|
|
@@ -191,7 +220,7 @@ export declare class DoubleOperatorFilter<Type> extends AbstractFilter {
|
|
|
191
220
|
operatorB?: string;
|
|
192
221
|
valueA?: Type;
|
|
193
222
|
valueB?: Type;
|
|
194
|
-
constructor(att: Attribute, filterType: string, operatorA?: string, valueA?: Type, operatorB?: string, valueB?: Type);
|
|
223
|
+
constructor(att: Attribute, filterType: string, operatorA?: string, valueA?: Type, operatorB?: string, valueB?: Type, guid?: string);
|
|
195
224
|
/**
|
|
196
225
|
* gets the element's ID
|
|
197
226
|
*/
|
|
@@ -210,7 +239,7 @@ export declare class DoubleOperatorFilter<Type> extends AbstractFilter {
|
|
|
210
239
|
*/
|
|
211
240
|
export declare class MeasureFilter extends DoubleOperatorFilter<number> {
|
|
212
241
|
measure: Measure;
|
|
213
|
-
constructor(att: Attribute, measure: Measure, operatorA?: string, valueA?: number, operatorB?: string, valueB?: number);
|
|
242
|
+
constructor(att: Attribute, measure: Measure, operatorA?: string, valueA?: number, operatorB?: string, valueB?: number, guid?: string);
|
|
214
243
|
/**
|
|
215
244
|
* gets the element's ID
|
|
216
245
|
*/
|
|
@@ -228,7 +257,7 @@ export declare class RankingFilter extends AbstractFilter {
|
|
|
228
257
|
count: number;
|
|
229
258
|
operator: string;
|
|
230
259
|
measure: Measure;
|
|
231
|
-
constructor(att: Attribute, measure: Measure, operator: string, count: number);
|
|
260
|
+
constructor(att: Attribute, measure: Measure, operator: string, count: number, guid?: string);
|
|
232
261
|
/**
|
|
233
262
|
* gets the element's ID
|
|
234
263
|
*/
|
|
@@ -246,19 +275,19 @@ export declare class RankingFilter extends AbstractFilter {
|
|
|
246
275
|
* @internal
|
|
247
276
|
*/
|
|
248
277
|
export declare class NumericFilter extends DoubleOperatorFilter<number> {
|
|
249
|
-
constructor(att: Attribute, operatorA?: string, valueA?: number, operatorB?: string, valueB?: number);
|
|
278
|
+
constructor(att: Attribute, operatorA?: string, valueA?: number, operatorB?: string, valueB?: number, guid?: string);
|
|
250
279
|
}
|
|
251
280
|
/**
|
|
252
281
|
* @internal
|
|
253
282
|
*/
|
|
254
283
|
export declare class TextFilter extends DoubleOperatorFilter<string> {
|
|
255
|
-
constructor(att: Attribute, operator: string, value: string);
|
|
284
|
+
constructor(att: Attribute, operator: string, value: string, guid?: string);
|
|
256
285
|
}
|
|
257
286
|
/**
|
|
258
287
|
* @internal
|
|
259
288
|
*/
|
|
260
289
|
export declare class DateRangeFilter extends DoubleOperatorFilter<Date | string> {
|
|
261
|
-
constructor(l: LevelAttribute, valueFrom?: Date | string, valueTo?: Date | string);
|
|
290
|
+
constructor(l: LevelAttribute, valueFrom?: Date | string, valueTo?: Date | string, guid?: string);
|
|
262
291
|
get level(): LevelAttribute;
|
|
263
292
|
get from(): string;
|
|
264
293
|
get to(): string;
|
|
@@ -275,7 +304,7 @@ export declare class RelativeDateFilter extends AbstractFilter {
|
|
|
275
304
|
readonly count: number;
|
|
276
305
|
readonly operator: string;
|
|
277
306
|
readonly anchor?: Date | string;
|
|
278
|
-
constructor(l: LevelAttribute, offset: number, count: number, operator?: string, anchor?: Date | string);
|
|
307
|
+
constructor(l: LevelAttribute, offset: number, count: number, operator?: string, anchor?: Date | string, guid?: string);
|
|
279
308
|
get level(): LevelAttribute;
|
|
280
309
|
/**
|
|
281
310
|
* gets the element's ID
|
|
@@ -292,7 +321,23 @@ export declare class RelativeDateFilter extends AbstractFilter {
|
|
|
292
321
|
filterJaql(): any;
|
|
293
322
|
}
|
|
294
323
|
/**
|
|
295
|
-
* @
|
|
324
|
+
* @internal
|
|
325
|
+
*/
|
|
326
|
+
export declare class CustomFilter extends AbstractFilter {
|
|
327
|
+
readonly jaqlExpression: any;
|
|
328
|
+
constructor(att: Attribute, jaql: any, guid?: string);
|
|
329
|
+
/**
|
|
330
|
+
* gets the element's ID
|
|
331
|
+
*/
|
|
332
|
+
get id(): string;
|
|
333
|
+
/**
|
|
334
|
+
* Gets JAQL representing this Filter instance
|
|
335
|
+
*
|
|
336
|
+
*/
|
|
337
|
+
filterJaql(): any;
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* @param json - Filter JSON representation
|
|
296
341
|
* @internal
|
|
297
342
|
*/
|
|
298
343
|
export declare function createFilter(json: any): Filter;
|
|
@@ -85,6 +85,8 @@ export const FilterTypes = {
|
|
|
85
85
|
numeric: 'numeric',
|
|
86
86
|
date: 'date',
|
|
87
87
|
relativeDate: 'relativeDate',
|
|
88
|
+
cascading: 'cascading',
|
|
89
|
+
advanced: 'advanced',
|
|
88
90
|
};
|
|
89
91
|
// CLASSES
|
|
90
92
|
/**
|
|
@@ -93,14 +95,25 @@ export const FilterTypes = {
|
|
|
93
95
|
* @internal
|
|
94
96
|
*/
|
|
95
97
|
class AbstractFilter extends DimensionalElement {
|
|
96
|
-
constructor(att, filterType) {
|
|
98
|
+
constructor(att, filterType, guid) {
|
|
97
99
|
super('filter', MetadataTypes.Filter);
|
|
98
100
|
this.filterType = filterType;
|
|
99
101
|
AbstractFilter.checkAttributeSupport(att);
|
|
100
102
|
this.attribute = att;
|
|
101
|
-
this.guid = guidFast(13);
|
|
103
|
+
this.guid = guid || guidFast(13);
|
|
102
104
|
this.disabled = false;
|
|
103
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* Boolean flag whether the filter is disabled
|
|
108
|
+
*
|
|
109
|
+
* @internal
|
|
110
|
+
*/
|
|
111
|
+
get disabled() {
|
|
112
|
+
return this._disabled;
|
|
113
|
+
}
|
|
114
|
+
set disabled(value) {
|
|
115
|
+
this._disabled = value;
|
|
116
|
+
}
|
|
104
117
|
get name() {
|
|
105
118
|
return hash(this.jaql());
|
|
106
119
|
}
|
|
@@ -119,9 +132,8 @@ class AbstractFilter extends DimensionalElement {
|
|
|
119
132
|
* @param nested - defines whether the JAQL is nested within parent JAQL statement or a root JAQL element
|
|
120
133
|
*/
|
|
121
134
|
jaql(nested) {
|
|
122
|
-
// if the filter is disabled, return empty filter JAQL
|
|
123
135
|
if (this.disabled) {
|
|
124
|
-
return nested
|
|
136
|
+
return AbstractFilter.disabledJaql(nested);
|
|
125
137
|
}
|
|
126
138
|
const result = this.attribute.jaql(false);
|
|
127
139
|
const level = this.attribute;
|
|
@@ -147,13 +159,16 @@ class AbstractFilter extends DimensionalElement {
|
|
|
147
159
|
throw new TranslatableError('errors.filter.unsupportedDatetimeLevel');
|
|
148
160
|
}
|
|
149
161
|
}
|
|
162
|
+
static disabledJaql(nested) {
|
|
163
|
+
return nested ? { filter: {} } : { jaql: { filter: {} } };
|
|
164
|
+
}
|
|
150
165
|
}
|
|
151
166
|
/**
|
|
152
167
|
* @internal
|
|
153
168
|
*/
|
|
154
169
|
export class LogicalAttributeFilter extends AbstractFilter {
|
|
155
|
-
constructor(filters, operator) {
|
|
156
|
-
super(filters[0].attribute, FilterTypes.logicalAttribute);
|
|
170
|
+
constructor(filters, operator, guid) {
|
|
171
|
+
super(filters[0].attribute, FilterTypes.logicalAttribute, guid);
|
|
157
172
|
this.operator = operator;
|
|
158
173
|
this.filters = filters;
|
|
159
174
|
}
|
|
@@ -185,9 +200,10 @@ export class LogicalAttributeFilter extends AbstractFilter {
|
|
|
185
200
|
* @internal
|
|
186
201
|
*/
|
|
187
202
|
export class MembersFilter extends AbstractFilter {
|
|
188
|
-
constructor(attribute, members) {
|
|
189
|
-
super(attribute, FilterTypes.members);
|
|
203
|
+
constructor(attribute, members, _deactivatedMembers, guid) {
|
|
204
|
+
super(attribute, FilterTypes.members, guid);
|
|
190
205
|
this.members = members !== null && members !== void 0 ? members : [];
|
|
206
|
+
this._deactivatedMembers = _deactivatedMembers !== null && _deactivatedMembers !== void 0 ? _deactivatedMembers : [];
|
|
191
207
|
if (this.members.filter((m) => m === null || m === undefined).length > 0) {
|
|
192
208
|
throw new TranslatableError('errors.filter.membersFilterNullMember', {
|
|
193
209
|
attributeId: attribute.id,
|
|
@@ -217,12 +233,63 @@ export class MembersFilter extends AbstractFilter {
|
|
|
217
233
|
};
|
|
218
234
|
}
|
|
219
235
|
}
|
|
236
|
+
/**
|
|
237
|
+
* @internal
|
|
238
|
+
*/
|
|
239
|
+
export class CascadingFilter extends AbstractFilter {
|
|
240
|
+
constructor(filters, guid) {
|
|
241
|
+
super(filters[0].attribute, FilterTypes.cascading, guid);
|
|
242
|
+
this.filters = filters;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* gets the element's ID
|
|
246
|
+
*/
|
|
247
|
+
get id() {
|
|
248
|
+
return `${this.filterType}_${this.filters.map((f) => f.id).join()}`;
|
|
249
|
+
}
|
|
250
|
+
get disabled() {
|
|
251
|
+
return super.disabled;
|
|
252
|
+
}
|
|
253
|
+
set disabled(value) {
|
|
254
|
+
super.disabled = value;
|
|
255
|
+
if (this.filters) {
|
|
256
|
+
this.filters.forEach((filter) => {
|
|
257
|
+
filter.disabled = value;
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Gets a serializable representation of the element
|
|
263
|
+
*/
|
|
264
|
+
serializable() {
|
|
265
|
+
const result = super.serializable();
|
|
266
|
+
result.filters = this.filters.map((f) => f.serializable());
|
|
267
|
+
return result;
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Gets JAQL representing this Filter instance
|
|
271
|
+
*/
|
|
272
|
+
filterJaql() {
|
|
273
|
+
// return empty object as jaql is handled by jaql() method
|
|
274
|
+
return {};
|
|
275
|
+
}
|
|
276
|
+
jaql(nested) {
|
|
277
|
+
if (this.disabled) {
|
|
278
|
+
return AbstractFilter.disabledJaql(nested);
|
|
279
|
+
}
|
|
280
|
+
// return jaql of all level filters treated as scope filters
|
|
281
|
+
return this.filters.map((f) => {
|
|
282
|
+
f.isScope = true;
|
|
283
|
+
return f.jaql(nested);
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
}
|
|
220
287
|
/**
|
|
221
288
|
* @internal
|
|
222
289
|
*/
|
|
223
290
|
export class ExcludeFilter extends AbstractFilter {
|
|
224
|
-
constructor(filter, input) {
|
|
225
|
-
super(filter.attribute, FilterTypes.exclude);
|
|
291
|
+
constructor(filter, input, guid) {
|
|
292
|
+
super(filter.attribute, FilterTypes.exclude, guid);
|
|
226
293
|
this.input = input;
|
|
227
294
|
this.filter = filter;
|
|
228
295
|
}
|
|
@@ -267,8 +334,8 @@ export class ExcludeFilter extends AbstractFilter {
|
|
|
267
334
|
* @internal
|
|
268
335
|
*/
|
|
269
336
|
export class DoubleOperatorFilter extends AbstractFilter {
|
|
270
|
-
constructor(att, filterType, operatorA, valueA, operatorB, valueB) {
|
|
271
|
-
super(att, filterType);
|
|
337
|
+
constructor(att, filterType, operatorA, valueA, operatorB, valueB, guid) {
|
|
338
|
+
super(att, filterType, guid);
|
|
272
339
|
if (operatorA && valueA !== undefined) {
|
|
273
340
|
this.valueA = valueA;
|
|
274
341
|
this.operatorA = operatorA;
|
|
@@ -328,8 +395,8 @@ export class DoubleOperatorFilter extends AbstractFilter {
|
|
|
328
395
|
* @internal
|
|
329
396
|
*/
|
|
330
397
|
export class MeasureFilter extends DoubleOperatorFilter {
|
|
331
|
-
constructor(att, measure, operatorA, valueA, operatorB, valueB) {
|
|
332
|
-
super(att, FilterTypes.measure, operatorA, valueA, operatorB, valueB);
|
|
398
|
+
constructor(att, measure, operatorA, valueA, operatorB, valueB, guid) {
|
|
399
|
+
super(att, FilterTypes.measure, operatorA, valueA, operatorB, valueB, guid);
|
|
333
400
|
this.measure = measure;
|
|
334
401
|
}
|
|
335
402
|
/**
|
|
@@ -354,9 +421,8 @@ export class MeasureFilter extends DoubleOperatorFilter {
|
|
|
354
421
|
return result;
|
|
355
422
|
}
|
|
356
423
|
jaql(nested) {
|
|
357
|
-
// if the filter is disabled, return empty filter JAQL
|
|
358
424
|
if (this.disabled) {
|
|
359
|
-
return nested
|
|
425
|
+
return AbstractFilter.disabledJaql(nested);
|
|
360
426
|
}
|
|
361
427
|
const result = super.jaql(nested);
|
|
362
428
|
if (this.measure instanceof DimensionalBaseMeasure) {
|
|
@@ -371,8 +437,8 @@ export class MeasureFilter extends DoubleOperatorFilter {
|
|
|
371
437
|
* @internal
|
|
372
438
|
*/
|
|
373
439
|
export class RankingFilter extends AbstractFilter {
|
|
374
|
-
constructor(att, measure, operator, count) {
|
|
375
|
-
super(att, FilterTypes.ranking);
|
|
440
|
+
constructor(att, measure, operator, count, guid) {
|
|
441
|
+
super(att, FilterTypes.ranking, guid);
|
|
376
442
|
this.count = count;
|
|
377
443
|
this.operator = operator;
|
|
378
444
|
this.measure = measure;
|
|
@@ -407,24 +473,24 @@ export class RankingFilter extends AbstractFilter {
|
|
|
407
473
|
* @internal
|
|
408
474
|
*/
|
|
409
475
|
export class NumericFilter extends DoubleOperatorFilter {
|
|
410
|
-
constructor(att, operatorA, valueA, operatorB, valueB) {
|
|
411
|
-
super(att, FilterTypes.numeric, operatorA, valueA, operatorB, valueB);
|
|
476
|
+
constructor(att, operatorA, valueA, operatorB, valueB, guid) {
|
|
477
|
+
super(att, FilterTypes.numeric, operatorA, valueA, operatorB, valueB, guid);
|
|
412
478
|
}
|
|
413
479
|
}
|
|
414
480
|
/**
|
|
415
481
|
* @internal
|
|
416
482
|
*/
|
|
417
483
|
export class TextFilter extends DoubleOperatorFilter {
|
|
418
|
-
constructor(att, operator, value) {
|
|
419
|
-
super(att, FilterTypes.text, operator, value);
|
|
484
|
+
constructor(att, operator, value, guid) {
|
|
485
|
+
super(att, FilterTypes.text, operator, value, undefined, undefined, guid);
|
|
420
486
|
}
|
|
421
487
|
}
|
|
422
488
|
/**
|
|
423
489
|
* @internal
|
|
424
490
|
*/
|
|
425
491
|
export class DateRangeFilter extends DoubleOperatorFilter {
|
|
426
|
-
constructor(l, valueFrom, valueTo) {
|
|
427
|
-
super(l, FilterTypes.date, DateOperators.From, valueFrom, DateOperators.To, valueTo);
|
|
492
|
+
constructor(l, valueFrom, valueTo, guid) {
|
|
493
|
+
super(l, FilterTypes.date, DateOperators.From, valueFrom, DateOperators.To, valueTo, guid);
|
|
428
494
|
if (typeof valueFrom === 'object') {
|
|
429
495
|
this.valueA = valueFrom.toISOString();
|
|
430
496
|
}
|
|
@@ -452,8 +518,8 @@ export class DateRangeFilter extends DoubleOperatorFilter {
|
|
|
452
518
|
* @internal
|
|
453
519
|
*/
|
|
454
520
|
export class RelativeDateFilter extends AbstractFilter {
|
|
455
|
-
constructor(l, offset, count, operator, anchor) {
|
|
456
|
-
super(l, FilterTypes.relativeDate);
|
|
521
|
+
constructor(l, offset, count, operator, anchor, guid) {
|
|
522
|
+
super(l, FilterTypes.relativeDate, guid);
|
|
457
523
|
if (!operator) {
|
|
458
524
|
operator = DateOperators.Next;
|
|
459
525
|
}
|
|
@@ -515,7 +581,31 @@ export class RelativeDateFilter extends AbstractFilter {
|
|
|
515
581
|
}
|
|
516
582
|
}
|
|
517
583
|
/**
|
|
518
|
-
* @
|
|
584
|
+
* @internal
|
|
585
|
+
*/
|
|
586
|
+
export class CustomFilter extends AbstractFilter {
|
|
587
|
+
constructor(att, jaql, guid) {
|
|
588
|
+
super(att, FilterTypes.advanced, guid);
|
|
589
|
+
// remove filterType from jaql as it is not needed
|
|
590
|
+
delete jaql.filterType;
|
|
591
|
+
this.jaqlExpression = jaql;
|
|
592
|
+
}
|
|
593
|
+
/**
|
|
594
|
+
* gets the element's ID
|
|
595
|
+
*/
|
|
596
|
+
get id() {
|
|
597
|
+
return `custom_${this.attribute.id}_${this.guid}`;
|
|
598
|
+
}
|
|
599
|
+
/**
|
|
600
|
+
* Gets JAQL representing this Filter instance
|
|
601
|
+
*
|
|
602
|
+
*/
|
|
603
|
+
filterJaql() {
|
|
604
|
+
return this.jaqlExpression;
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
/**
|
|
608
|
+
* @param json - Filter JSON representation
|
|
519
609
|
* @internal
|
|
520
610
|
*/
|
|
521
611
|
export function createFilter(json) {
|
|
@@ -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;
|
|
@@ -77,56 +77,59 @@ export const getSelectedConditionOption = (filter) => {
|
|
|
77
77
|
*
|
|
78
78
|
* @param attribute - Provided attribute
|
|
79
79
|
* @param conditionFilterJaql - Condition filter JAQL object
|
|
80
|
+
* @param guid - Optional GUID for the filter
|
|
80
81
|
* @returns attribute filter
|
|
81
82
|
*/
|
|
82
|
-
export const createAttributeFilterFromConditionFilterJaql = (attribute, conditionFilterJaql) => {
|
|
83
|
-
var _a, _b;
|
|
83
|
+
export const createAttributeFilterFromConditionFilterJaql = (attribute, conditionFilterJaql, guid) => {
|
|
84
|
+
var _a, _b, _c;
|
|
84
85
|
const conditionType = getSelectedConditionOption(conditionFilterJaql);
|
|
85
86
|
switch (conditionType) {
|
|
86
87
|
case ConditionFilterType.BOTTOM:
|
|
87
88
|
if (conditionFilterJaql.by && 'agg' in conditionFilterJaql.by) {
|
|
88
|
-
return withComposeCode(filterFactory.bottomRanking)(attribute, createMeasureFromRankingFilterJaql(conditionFilterJaql.by), conditionFilterJaql[ConditionFilterType.BOTTOM]);
|
|
89
|
+
return withComposeCode(filterFactory.bottomRanking)(attribute, createMeasureFromRankingFilterJaql(conditionFilterJaql.by), conditionFilterJaql[ConditionFilterType.BOTTOM], guid);
|
|
89
90
|
}
|
|
90
91
|
break;
|
|
91
92
|
case ConditionFilterType.EQUALS:
|
|
92
|
-
return withComposeCode(filterFactory.equals)(attribute, conditionFilterJaql[ConditionFilterType.EQUALS]);
|
|
93
|
+
return withComposeCode(filterFactory.equals)(attribute, conditionFilterJaql[ConditionFilterType.EQUALS], guid);
|
|
93
94
|
case ConditionFilterType.GREATER_THAN:
|
|
94
|
-
return withComposeCode(filterFactory.greaterThan)(attribute, conditionFilterJaql[ConditionFilterType.GREATER_THAN]);
|
|
95
|
+
return withComposeCode(filterFactory.greaterThan)(attribute, conditionFilterJaql[ConditionFilterType.GREATER_THAN], guid);
|
|
95
96
|
case ConditionFilterType.GREATER_THAN_OR_EQUAL:
|
|
96
|
-
return withComposeCode(filterFactory.greaterThanOrEqual)(attribute, conditionFilterJaql[ConditionFilterType.GREATER_THAN_OR_EQUAL]);
|
|
97
|
+
return withComposeCode(filterFactory.greaterThanOrEqual)(attribute, conditionFilterJaql[ConditionFilterType.GREATER_THAN_OR_EQUAL], guid);
|
|
97
98
|
case ConditionFilterType.TOP:
|
|
98
99
|
if (conditionFilterJaql.by) {
|
|
99
|
-
return withComposeCode(filterFactory.topRanking)(attribute, createMeasureFromRankingFilterJaql(conditionFilterJaql.by), conditionFilterJaql[ConditionFilterType.TOP]);
|
|
100
|
+
return withComposeCode(filterFactory.topRanking)(attribute, createMeasureFromRankingFilterJaql(conditionFilterJaql.by), conditionFilterJaql[ConditionFilterType.TOP], guid);
|
|
100
101
|
}
|
|
101
102
|
break;
|
|
102
103
|
case ConditionFilterType.STARTS_WITH:
|
|
103
|
-
return withComposeCode(filterFactory.startsWith)(attribute, conditionFilterJaql[ConditionFilterType.STARTS_WITH]);
|
|
104
|
+
return withComposeCode(filterFactory.startsWith)(attribute, conditionFilterJaql[ConditionFilterType.STARTS_WITH], guid);
|
|
104
105
|
case ConditionFilterType.DOESNT_START_WITH:
|
|
105
|
-
return withComposeCode(filterFactory.doesntStartWith)(attribute, conditionFilterJaql[ConditionFilterType.DOESNT_START_WITH]);
|
|
106
|
+
return withComposeCode(filterFactory.doesntStartWith)(attribute, conditionFilterJaql[ConditionFilterType.DOESNT_START_WITH], guid);
|
|
106
107
|
case ConditionFilterType.ENDS_WITH:
|
|
107
|
-
return withComposeCode(filterFactory.endsWith)(attribute, conditionFilterJaql[ConditionFilterType.ENDS_WITH]);
|
|
108
|
+
return withComposeCode(filterFactory.endsWith)(attribute, conditionFilterJaql[ConditionFilterType.ENDS_WITH], guid);
|
|
108
109
|
case ConditionFilterType.DOESNT_END_WITH:
|
|
109
|
-
return withComposeCode(filterFactory.doesntEndWith)(attribute, conditionFilterJaql[ConditionFilterType.DOESNT_END_WITH]);
|
|
110
|
+
return withComposeCode(filterFactory.doesntEndWith)(attribute, conditionFilterJaql[ConditionFilterType.DOESNT_END_WITH], guid);
|
|
110
111
|
case ConditionFilterType.CONTAINS:
|
|
111
|
-
return withComposeCode(filterFactory.contains)(attribute, conditionFilterJaql[ConditionFilterType.CONTAINS]);
|
|
112
|
+
return withComposeCode(filterFactory.contains)(attribute, conditionFilterJaql[ConditionFilterType.CONTAINS], guid);
|
|
112
113
|
case ConditionFilterType.DOESNT_CONTAIN:
|
|
113
|
-
return withComposeCode(filterFactory.doesntContain)(attribute, conditionFilterJaql[ConditionFilterType.DOESNT_CONTAIN]);
|
|
114
|
+
return withComposeCode(filterFactory.doesntContain)(attribute, conditionFilterJaql[ConditionFilterType.DOESNT_CONTAIN], guid);
|
|
114
115
|
case ConditionFilterType.LESS_THAN:
|
|
115
|
-
return withComposeCode(filterFactory.lessThan)(attribute, conditionFilterJaql[ConditionFilterType.LESS_THAN]);
|
|
116
|
+
return withComposeCode(filterFactory.lessThan)(attribute, conditionFilterJaql[ConditionFilterType.LESS_THAN], guid);
|
|
116
117
|
case ConditionFilterType.LESS_THAN_OR_EQUAL:
|
|
117
|
-
return withComposeCode(filterFactory.lessThanOrEqual)(attribute, conditionFilterJaql[ConditionFilterType.LESS_THAN_OR_EQUAL]);
|
|
118
|
+
return withComposeCode(filterFactory.lessThanOrEqual)(attribute, conditionFilterJaql[ConditionFilterType.LESS_THAN_OR_EQUAL], guid);
|
|
118
119
|
case ConditionFilterType.BETWEEN:
|
|
119
|
-
return withComposeCode(filterFactory.between)(attribute, conditionFilterJaql.from, conditionFilterJaql.to);
|
|
120
|
+
return withComposeCode(filterFactory.between)(attribute, conditionFilterJaql.from, conditionFilterJaql.to, guid);
|
|
120
121
|
case ConditionFilterType.IS_NOT_BETWEEN:
|
|
121
|
-
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), undefined, guid);
|
|
122
123
|
case ConditionFilterType.MULTIPLE_CONDITION:
|
|
123
124
|
if (conditionFilterJaql.and) {
|
|
124
|
-
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);
|
|
125
126
|
}
|
|
126
127
|
if (conditionFilterJaql.or) {
|
|
127
|
-
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);
|
|
128
129
|
}
|
|
129
130
|
break;
|
|
131
|
+
case ConditionFilterType.IS_NOT:
|
|
132
|
+
return withComposeCode(filterFactory.exclude)(withComposeCode(filterFactory.members)(attribute, ((_c = conditionFilterJaql.exclude) === null || _c === void 0 ? void 0 : _c.members) || [], undefined, guid), undefined, guid);
|
|
130
133
|
case ConditionFilterType.AFTER:
|
|
131
134
|
case ConditionFilterType.BEFORE:
|
|
132
135
|
case ConditionFilterType.IS_EMPTY:
|
|
@@ -141,23 +144,24 @@ export const createAttributeFilterFromConditionFilterJaql = (attribute, conditio
|
|
|
141
144
|
*
|
|
142
145
|
* @param measure - Provided measure
|
|
143
146
|
* @param conditionFilterJaql - Condition filter JAQL object
|
|
147
|
+
* @param guid - Optional GUID for the filter
|
|
144
148
|
* @returns measure filter
|
|
145
149
|
*/
|
|
146
|
-
export const createMeasureFilterFromConditionFilterJaql = (measure, conditionFilterJaql) => {
|
|
150
|
+
export const createMeasureFilterFromConditionFilterJaql = (measure, conditionFilterJaql, guid) => {
|
|
147
151
|
const conditionType = getSelectedConditionOption(conditionFilterJaql);
|
|
148
152
|
switch (conditionType) {
|
|
149
153
|
case ConditionFilterType.EQUALS:
|
|
150
|
-
return withComposeCode(filterFactory.measureEquals)(measure, conditionFilterJaql[ConditionFilterType.EQUALS]);
|
|
154
|
+
return withComposeCode(filterFactory.measureEquals)(measure, conditionFilterJaql[ConditionFilterType.EQUALS], guid);
|
|
151
155
|
case ConditionFilterType.GREATER_THAN:
|
|
152
|
-
return withComposeCode(filterFactory.measureGreaterThan)(measure, conditionFilterJaql[ConditionFilterType.GREATER_THAN]);
|
|
156
|
+
return withComposeCode(filterFactory.measureGreaterThan)(measure, conditionFilterJaql[ConditionFilterType.GREATER_THAN], guid);
|
|
153
157
|
case ConditionFilterType.GREATER_THAN_OR_EQUAL:
|
|
154
|
-
return withComposeCode(filterFactory.measureGreaterThanOrEqual)(measure, conditionFilterJaql[ConditionFilterType.GREATER_THAN_OR_EQUAL]);
|
|
158
|
+
return withComposeCode(filterFactory.measureGreaterThanOrEqual)(measure, conditionFilterJaql[ConditionFilterType.GREATER_THAN_OR_EQUAL], guid);
|
|
155
159
|
case ConditionFilterType.LESS_THAN:
|
|
156
|
-
return withComposeCode(filterFactory.measureLessThan)(measure, conditionFilterJaql[ConditionFilterType.LESS_THAN]);
|
|
160
|
+
return withComposeCode(filterFactory.measureLessThan)(measure, conditionFilterJaql[ConditionFilterType.LESS_THAN], guid);
|
|
157
161
|
case ConditionFilterType.LESS_THAN_OR_EQUAL:
|
|
158
|
-
return withComposeCode(filterFactory.measureLessThanOrEqual)(measure, conditionFilterJaql[ConditionFilterType.LESS_THAN_OR_EQUAL]);
|
|
162
|
+
return withComposeCode(filterFactory.measureLessThanOrEqual)(measure, conditionFilterJaql[ConditionFilterType.LESS_THAN_OR_EQUAL], guid);
|
|
159
163
|
case ConditionFilterType.BETWEEN:
|
|
160
|
-
return withComposeCode(filterFactory.measureBetween)(measure, conditionFilterJaql.from, conditionFilterJaql.to);
|
|
164
|
+
return withComposeCode(filterFactory.measureBetween)(measure, conditionFilterJaql.from, conditionFilterJaql.to, guid);
|
|
161
165
|
}
|
|
162
166
|
throw 'Jaql contains unsupported condition filter: ' + JSON.stringify(conditionFilterJaql);
|
|
163
167
|
};
|
|
@@ -40,7 +40,11 @@ export function stringifyHelper(arg) {
|
|
|
40
40
|
*/
|
|
41
41
|
export function withComposeCode(func) {
|
|
42
42
|
return function (...args) {
|
|
43
|
-
const argValues = args
|
|
43
|
+
const argValues = args
|
|
44
|
+
.map(stringifyHelper)
|
|
45
|
+
.join(', ')
|
|
46
|
+
// remove any number of trailing commas
|
|
47
|
+
.replace(/(,\s*)+$/, '');
|
|
44
48
|
const signature = `filterFactory.${func.name}(${argValues})`;
|
|
45
49
|
const filter = func(...args);
|
|
46
50
|
filter.composeCode = signature;
|