@sisense/sdk-data 1.21.0 → 1.23.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/attributes.js +5 -5
- package/dist/cjs/dimensional-model/base.js +1 -1
- package/dist/cjs/dimensional-model/dimensions.d.ts +3 -3
- package/dist/cjs/dimensional-model/dimensions.js +29 -25
- package/dist/cjs/dimensional-model/filters/factory.d.ts +3 -1
- package/dist/cjs/dimensional-model/filters/factory.js +4 -2
- package/dist/cjs/dimensional-model/filters/filters.d.ts +3 -1
- package/dist/cjs/dimensional-model/filters/filters.js +3 -5
- package/dist/cjs/dimensional-model/filters/utils/attribute-measure-util.d.ts +1 -1
- package/dist/cjs/dimensional-model/filters/utils/attribute-measure-util.js +5 -4
- package/dist/cjs/dimensional-model/filters/utils/condition-filter-util.js +16 -7
- package/dist/cjs/dimensional-model/filters/utils/filter-from-jaql-util.d.ts +1 -1
- package/dist/cjs/dimensional-model/filters/utils/filter-from-jaql-util.js +7 -4
- package/dist/cjs/dimensional-model/interfaces.d.ts +1 -0
- package/dist/cjs/dimensional-model/jaql-element.d.ts +36 -0
- package/dist/cjs/dimensional-model/jaql-element.js +73 -0
- package/dist/cjs/dimensional-model/measures/factory.js +2 -1
- package/dist/cjs/dimensional-model/types.d.ts +148 -0
- package/dist/cjs/dimensional-model/types.js +11 -2
- package/dist/cjs/index.d.ts +2 -0
- package/dist/cjs/index.js +4 -1
- package/dist/cjs/translation/resources/en.d.ts +17 -0
- package/dist/cjs/translation/resources/en.js +3 -0
- package/dist/cjs/translation/resources/index.d.ts +12 -0
- package/dist/cjs/translation/resources/index.js +6 -0
- package/dist/cjs/translation/resources/uk.js +3 -0
- package/dist/cjs/utils.d.ts +11 -1
- package/dist/cjs/utils.js +28 -5
- package/dist/dimensional-model/attributes.js +5 -5
- package/dist/dimensional-model/base.js +1 -1
- package/dist/dimensional-model/dimensions.d.ts +3 -3
- package/dist/dimensional-model/dimensions.js +29 -25
- package/dist/dimensional-model/filters/factory.d.ts +3 -1
- package/dist/dimensional-model/filters/factory.js +4 -2
- package/dist/dimensional-model/filters/filters.d.ts +3 -1
- package/dist/dimensional-model/filters/filters.js +3 -5
- package/dist/dimensional-model/filters/utils/attribute-measure-util.d.ts +1 -1
- package/dist/dimensional-model/filters/utils/attribute-measure-util.js +5 -4
- package/dist/dimensional-model/filters/utils/condition-filter-util.js +16 -7
- package/dist/dimensional-model/filters/utils/filter-from-jaql-util.d.ts +1 -1
- package/dist/dimensional-model/filters/utils/filter-from-jaql-util.js +7 -4
- package/dist/dimensional-model/interfaces.d.ts +1 -0
- package/dist/dimensional-model/jaql-element.d.ts +36 -0
- package/dist/dimensional-model/jaql-element.js +68 -0
- package/dist/dimensional-model/measures/factory.js +2 -1
- package/dist/dimensional-model/types.d.ts +148 -0
- package/dist/dimensional-model/types.js +10 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/translation/resources/en.d.ts +17 -0
- package/dist/translation/resources/en.js +3 -0
- package/dist/translation/resources/index.d.ts +12 -0
- package/dist/translation/resources/index.js +6 -0
- package/dist/translation/resources/uk.js +3 -0
- package/dist/tsconfig.prod.cjs.tsbuildinfo +1 -1
- package/dist/utils.d.ts +11 -1
- package/dist/utils.js +24 -2
- package/package.json +3 -3
|
@@ -40,7 +40,7 @@ class DimensionalAttribute extends base_js_1.DimensionalElement {
|
|
|
40
40
|
* @returns An instance representing the sorted {@link Attribute} of this instance
|
|
41
41
|
*/
|
|
42
42
|
sort(sort) {
|
|
43
|
-
return new DimensionalAttribute(this.name, this.expression, this.type, this.description, sort);
|
|
43
|
+
return new DimensionalAttribute(this.name, this.expression, this.type, this.description, sort, this.dataSource);
|
|
44
44
|
}
|
|
45
45
|
/**
|
|
46
46
|
* Gets the JAQL representation of this instance
|
|
@@ -109,7 +109,7 @@ class DimensionalLevelAttribute extends DimensionalAttribute {
|
|
|
109
109
|
* @returns An instance representing the sorted {@link LevelAttribute} of this instance
|
|
110
110
|
*/
|
|
111
111
|
sort(sort) {
|
|
112
|
-
return new DimensionalLevelAttribute(this.name, this.expression, this.granularity, this._format, this.description, sort);
|
|
112
|
+
return new DimensionalLevelAttribute(this.name, this.expression, this.granularity, this._format, this.description, sort, this.dataSource);
|
|
113
113
|
}
|
|
114
114
|
/**
|
|
115
115
|
* The string formatting of this instance
|
|
@@ -126,7 +126,7 @@ class DimensionalLevelAttribute extends DimensionalAttribute {
|
|
|
126
126
|
* @returns An instance representing the formatted {@link LevelAttribute} of this instance
|
|
127
127
|
*/
|
|
128
128
|
format(format) {
|
|
129
|
-
return new DimensionalLevelAttribute(this.name, this.expression, this.granularity, format, this.description, this._sort);
|
|
129
|
+
return new DimensionalLevelAttribute(this.name, this.expression, this.granularity, format, this.description, this._sort, this.dataSource);
|
|
130
130
|
}
|
|
131
131
|
/**
|
|
132
132
|
* Gets a serializable representation of the element
|
|
@@ -326,7 +326,7 @@ function createAttribute(json) {
|
|
|
326
326
|
if (json.granularity) {
|
|
327
327
|
return createLevel(json);
|
|
328
328
|
}
|
|
329
|
-
return new DimensionalAttribute(json.name || json.title, json.attribute || json.expression || json.dim, json.type, json.desc || json.description);
|
|
329
|
+
return new DimensionalAttribute(json.name || json.title, json.attribute || json.expression || json.dim, json.type, json.desc || json.description, json.sort, json.dataSource);
|
|
330
330
|
}
|
|
331
331
|
exports.createAttribute = createAttribute;
|
|
332
332
|
/**
|
|
@@ -336,7 +336,7 @@ exports.createAttribute = createAttribute;
|
|
|
336
336
|
* @internal
|
|
337
337
|
*/
|
|
338
338
|
function createLevel(json) {
|
|
339
|
-
return new DimensionalLevelAttribute(json.name || json.title, json.attribute || json.expression || json.dim, json.granularity, json.format, json.desc || json.description);
|
|
339
|
+
return new DimensionalLevelAttribute(json.name || json.title, json.attribute || json.expression || json.dim, json.granularity, json.format, json.desc || json.description, json.sort, json.dataSource);
|
|
340
340
|
}
|
|
341
341
|
exports.createLevel = createLevel;
|
|
342
342
|
/**
|
|
@@ -57,7 +57,7 @@ exports.DimensionalElement = DimensionalElement;
|
|
|
57
57
|
*/
|
|
58
58
|
function normalizeName(name) {
|
|
59
59
|
// Remove all invalid characters
|
|
60
|
-
let normalizedName = name.replace(/[^a-zA-Z0-9_]/g, '');
|
|
60
|
+
let normalizedName = name.replace(/[^a-zA-Z0-9_.]/g, '').replace('.', '_');
|
|
61
61
|
// Prefix with '_' if it starts with a number
|
|
62
62
|
const firstChar = normalizedName.charAt(0);
|
|
63
63
|
if (firstChar.match(/[0-9]/)) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Attribute, LevelAttribute, Dimension, DateDimension } from './interfaces.js';
|
|
2
|
-
import { Sort } from './types.js';
|
|
2
|
+
import { Sort, JaqlDataSource } from './types.js';
|
|
3
3
|
import { DimensionalElement } from './base.js';
|
|
4
4
|
/**
|
|
5
5
|
* Represents a Dimension in a Dimensional Model
|
|
@@ -14,7 +14,7 @@ export declare class DimensionalDimension extends DimensionalElement implements
|
|
|
14
14
|
protected _attributes: Attribute[];
|
|
15
15
|
private _expression;
|
|
16
16
|
protected _sort: Sort;
|
|
17
|
-
constructor(name: string, expression: string, attributes: Attribute[], dimensions?: Dimension[], type?: string, desc?: string, sort?: Sort);
|
|
17
|
+
constructor(name: string, expression: string, attributes: Attribute[], dimensions?: Dimension[], type?: string, desc?: string, sort?: Sort, dataSource?: JaqlDataSource);
|
|
18
18
|
private getAttachedName;
|
|
19
19
|
protected setDimensions(dimensions: Dimension[]): void;
|
|
20
20
|
protected setAttributes(attributes: Attribute[]): void;
|
|
@@ -61,7 +61,7 @@ export declare class DimensionalDimension extends DimensionalElement implements
|
|
|
61
61
|
* @internal
|
|
62
62
|
*/
|
|
63
63
|
export declare class DimensionalDateDimension extends DimensionalDimension implements DateDimension {
|
|
64
|
-
constructor(name: string, expression: string, desc?: string, sort?: Sort);
|
|
64
|
+
constructor(name: string, expression: string, desc?: string, sort?: Sort, dataSource?: JaqlDataSource);
|
|
65
65
|
/**
|
|
66
66
|
* Years level
|
|
67
67
|
*/
|
|
@@ -10,8 +10,8 @@ const base_js_1 = require("./base.js");
|
|
|
10
10
|
* @internal
|
|
11
11
|
*/
|
|
12
12
|
class DimensionalDimension extends base_js_1.DimensionalElement {
|
|
13
|
-
constructor(name, expression, attributes, dimensions, type, desc, sort) {
|
|
14
|
-
super(name, type || types_js_1.MetadataTypes.Dimension, desc);
|
|
13
|
+
constructor(name, expression, attributes, dimensions, type, desc, sort, dataSource) {
|
|
14
|
+
super(name, type || types_js_1.MetadataTypes.Dimension, desc, dataSource);
|
|
15
15
|
this._dimensions = [];
|
|
16
16
|
this._attributes = [];
|
|
17
17
|
this._sort = types_js_1.Sort.None;
|
|
@@ -104,7 +104,7 @@ class DimensionalDimension extends base_js_1.DimensionalElement {
|
|
|
104
104
|
* @returns An instance representing the sorted {@link Dimension} of this instance
|
|
105
105
|
*/
|
|
106
106
|
sort(sort) {
|
|
107
|
-
return new DimensionalDimension(this.name, this.expression, this.attributes, this.dimensions, this.type, this.description, sort);
|
|
107
|
+
return new DimensionalDimension(this.name, this.expression, this.attributes, this.dimensions, this.type, this.description, sort, this.dataSource);
|
|
108
108
|
}
|
|
109
109
|
/**
|
|
110
110
|
* Gets a serializable representation of the element
|
|
@@ -154,23 +154,23 @@ exports.DimensionalDimension = DimensionalDimension;
|
|
|
154
154
|
* @internal
|
|
155
155
|
*/
|
|
156
156
|
class DimensionalDateDimension extends DimensionalDimension {
|
|
157
|
-
constructor(name, expression, desc, sort) {
|
|
158
|
-
super(name, expression, [], [], types_js_1.MetadataTypes.DateDimension, desc, sort);
|
|
157
|
+
constructor(name, expression, desc, sort, dataSource) {
|
|
158
|
+
super(name, expression, [], [], types_js_1.MetadataTypes.DateDimension, desc, sort, dataSource);
|
|
159
159
|
this.defaultLevel = types_js_1.DateLevels.Years;
|
|
160
|
-
this.Years = new attributes_js_1.DimensionalLevelAttribute(types_js_1.DateLevels.Years, expression, types_js_1.DateLevels.Years, 'yyyy');
|
|
161
|
-
this.Quarters = new attributes_js_1.DimensionalLevelAttribute(types_js_1.DateLevels.Quarters, expression, types_js_1.DateLevels.Quarters, 'Q yyyy');
|
|
162
|
-
this.Months = new attributes_js_1.DimensionalLevelAttribute(types_js_1.DateLevels.Months, expression, types_js_1.DateLevels.Months, 'yyyy-MM');
|
|
163
|
-
this.Weeks = new attributes_js_1.DimensionalLevelAttribute(types_js_1.DateLevels.Weeks, expression, types_js_1.DateLevels.Weeks, 'ww yyyy');
|
|
164
|
-
this.Days = new attributes_js_1.DimensionalLevelAttribute(types_js_1.DateLevels.Days, expression, types_js_1.DateLevels.Days, 'yyyy-MM-dd');
|
|
165
|
-
this.Hours = new attributes_js_1.DimensionalLevelAttribute(types_js_1.DateLevels.Hours, expression, types_js_1.DateLevels.Hours, 'yyyy-MM-dd HH:mm');
|
|
166
|
-
this.MinutesRoundTo30 = new attributes_js_1.DimensionalLevelAttribute(types_js_1.DateLevels.MinutesRoundTo30, expression, types_js_1.DateLevels.MinutesRoundTo30, 'yyyy-MM-dd HH:mm');
|
|
167
|
-
this.MinutesRoundTo15 = new attributes_js_1.DimensionalLevelAttribute(types_js_1.DateLevels.MinutesRoundTo15, expression, types_js_1.DateLevels.MinutesRoundTo15, 'yyyy-MM-dd HH:mm');
|
|
168
|
-
this.Minutes = new attributes_js_1.DimensionalLevelAttribute(types_js_1.DateLevels.Minutes, expression, types_js_1.DateLevels.Minutes, 'yyyy-MM-dd HH:mm');
|
|
169
|
-
this.Seconds = new attributes_js_1.DimensionalLevelAttribute(types_js_1.DateLevels.Seconds, expression, types_js_1.DateLevels.Seconds, 'yyyy-MM-dd HH:mm:ss');
|
|
170
|
-
this.AggHours = new attributes_js_1.DimensionalLevelAttribute(types_js_1.DateLevels.AggHours, expression, types_js_1.DateLevels.AggHours, 'HH:mm');
|
|
171
|
-
this.AggMinutesRoundTo30 = new attributes_js_1.DimensionalLevelAttribute(types_js_1.DateLevels.AggMinutesRoundTo30, expression, types_js_1.DateLevels.AggMinutesRoundTo30, 'HH:mm');
|
|
172
|
-
this.AggMinutesRoundTo15 = new attributes_js_1.DimensionalLevelAttribute(types_js_1.DateLevels.AggMinutesRoundTo15, expression, types_js_1.DateLevels.AggMinutesRoundTo15, 'HH:mm');
|
|
173
|
-
this.AggMinutesRoundTo1 = new attributes_js_1.DimensionalLevelAttribute(types_js_1.DateLevels.AggMinutesRoundTo1, expression, types_js_1.DateLevels.AggMinutesRoundTo1, 'HH:mm');
|
|
160
|
+
this.Years = new attributes_js_1.DimensionalLevelAttribute(types_js_1.DateLevels.Years, expression, types_js_1.DateLevels.Years, 'yyyy', desc, sort, dataSource);
|
|
161
|
+
this.Quarters = new attributes_js_1.DimensionalLevelAttribute(types_js_1.DateLevels.Quarters, expression, types_js_1.DateLevels.Quarters, 'Q yyyy', desc, sort, dataSource);
|
|
162
|
+
this.Months = new attributes_js_1.DimensionalLevelAttribute(types_js_1.DateLevels.Months, expression, types_js_1.DateLevels.Months, 'yyyy-MM', desc, sort, dataSource);
|
|
163
|
+
this.Weeks = new attributes_js_1.DimensionalLevelAttribute(types_js_1.DateLevels.Weeks, expression, types_js_1.DateLevels.Weeks, 'ww yyyy', desc, sort, dataSource);
|
|
164
|
+
this.Days = new attributes_js_1.DimensionalLevelAttribute(types_js_1.DateLevels.Days, expression, types_js_1.DateLevels.Days, 'yyyy-MM-dd', desc, sort, dataSource);
|
|
165
|
+
this.Hours = new attributes_js_1.DimensionalLevelAttribute(types_js_1.DateLevels.Hours, expression, types_js_1.DateLevels.Hours, 'yyyy-MM-dd HH:mm', desc, sort, dataSource);
|
|
166
|
+
this.MinutesRoundTo30 = new attributes_js_1.DimensionalLevelAttribute(types_js_1.DateLevels.MinutesRoundTo30, expression, types_js_1.DateLevels.MinutesRoundTo30, 'yyyy-MM-dd HH:mm', desc, sort, dataSource);
|
|
167
|
+
this.MinutesRoundTo15 = new attributes_js_1.DimensionalLevelAttribute(types_js_1.DateLevels.MinutesRoundTo15, expression, types_js_1.DateLevels.MinutesRoundTo15, 'yyyy-MM-dd HH:mm', desc, sort, dataSource);
|
|
168
|
+
this.Minutes = new attributes_js_1.DimensionalLevelAttribute(types_js_1.DateLevels.Minutes, expression, types_js_1.DateLevels.Minutes, 'yyyy-MM-dd HH:mm', desc, sort, dataSource);
|
|
169
|
+
this.Seconds = new attributes_js_1.DimensionalLevelAttribute(types_js_1.DateLevels.Seconds, expression, types_js_1.DateLevels.Seconds, 'yyyy-MM-dd HH:mm:ss', desc, sort, dataSource);
|
|
170
|
+
this.AggHours = new attributes_js_1.DimensionalLevelAttribute(types_js_1.DateLevels.AggHours, expression, types_js_1.DateLevels.AggHours, 'HH:mm', desc, sort, dataSource);
|
|
171
|
+
this.AggMinutesRoundTo30 = new attributes_js_1.DimensionalLevelAttribute(types_js_1.DateLevels.AggMinutesRoundTo30, expression, types_js_1.DateLevels.AggMinutesRoundTo30, 'HH:mm', desc, sort, dataSource);
|
|
172
|
+
this.AggMinutesRoundTo15 = new attributes_js_1.DimensionalLevelAttribute(types_js_1.DateLevels.AggMinutesRoundTo15, expression, types_js_1.DateLevels.AggMinutesRoundTo15, 'HH:mm', desc, sort, dataSource);
|
|
173
|
+
this.AggMinutesRoundTo1 = new attributes_js_1.DimensionalLevelAttribute(types_js_1.DateLevels.AggMinutesRoundTo1, expression, types_js_1.DateLevels.AggMinutesRoundTo1, 'HH:mm', desc, sort, dataSource);
|
|
174
174
|
this.setAttributes([
|
|
175
175
|
this.Years,
|
|
176
176
|
this.Quarters,
|
|
@@ -215,7 +215,7 @@ class DimensionalDateDimension extends DimensionalDimension {
|
|
|
215
215
|
* @returns An instance representing the sorted {@link Dimension} of this instance
|
|
216
216
|
*/
|
|
217
217
|
sort(sort) {
|
|
218
|
-
return new DimensionalDateDimension(this.name, this.expression, this.description, sort);
|
|
218
|
+
return new DimensionalDateDimension(this.name, this.expression, this.description, sort, this.dataSource);
|
|
219
219
|
}
|
|
220
220
|
/**
|
|
221
221
|
* Gets a serializable representation of the element
|
|
@@ -255,9 +255,11 @@ function createDimension(json) {
|
|
|
255
255
|
const description = json.desc || json.description;
|
|
256
256
|
const expression = json.expression || json.dim;
|
|
257
257
|
const type = DimensionalDimension.parseType(json.dimtype || json.type);
|
|
258
|
+
const sort = json.sort;
|
|
259
|
+
const dataSource = json.dataSource;
|
|
258
260
|
// date dimension
|
|
259
261
|
if (type == types_js_1.MetadataTypes.DateDimension) {
|
|
260
|
-
return new DimensionalDateDimension(name, expression, description);
|
|
262
|
+
return new DimensionalDateDimension(name, expression, description, sort, dataSource);
|
|
261
263
|
}
|
|
262
264
|
// attributes
|
|
263
265
|
const atts = Object.getOwnPropertyNames(json)
|
|
@@ -268,12 +270,12 @@ function createDimension(json) {
|
|
|
268
270
|
let att;
|
|
269
271
|
for (let i = 0; i < json.attributes.length; i++) {
|
|
270
272
|
att = json.attributes[i];
|
|
271
|
-
atts.push(new attributes_js_1.DimensionalAttribute(att.name, att.expression, att.type, att.description));
|
|
273
|
+
atts.push(new attributes_js_1.DimensionalAttribute(att.name, att.expression, att.type, att.description, att.sort, att.dataSource));
|
|
272
274
|
}
|
|
273
275
|
}
|
|
274
276
|
// default attribute
|
|
275
277
|
else if (expression) {
|
|
276
|
-
atts.push(new attributes_js_1.DimensionalAttribute(name, expression, type, description));
|
|
278
|
+
atts.push(new attributes_js_1.DimensionalAttribute(name, expression, type, description, sort, dataSource));
|
|
277
279
|
}
|
|
278
280
|
}
|
|
279
281
|
// nested dimensions
|
|
@@ -285,7 +287,7 @@ function createDimension(json) {
|
|
|
285
287
|
dims.push(createDimension(json.dimensions[i]));
|
|
286
288
|
}
|
|
287
289
|
}
|
|
288
|
-
const d = new DimensionalDimension(name, expression, atts, dims, type, description);
|
|
290
|
+
const d = new DimensionalDimension(name, expression, atts, dims, type, description, sort, dataSource);
|
|
289
291
|
if (json.defaultAttribute) {
|
|
290
292
|
d.defaultAttribute = atts.find((a) => a.name === json.defaultAttribute);
|
|
291
293
|
}
|
|
@@ -307,6 +309,8 @@ function createDateDimension(json) {
|
|
|
307
309
|
const name = json.name || json.title;
|
|
308
310
|
const expression = json.expression || json.dim;
|
|
309
311
|
const description = json.desc || json.description;
|
|
310
|
-
|
|
312
|
+
const sort = json.sort;
|
|
313
|
+
const dataSource = json.dataSource;
|
|
314
|
+
return new DimensionalDateDimension(name, expression, description, sort, dataSource);
|
|
311
315
|
}
|
|
312
316
|
exports.createDateDimension = createDateDimension;
|
|
@@ -377,9 +377,11 @@ export declare function numeric(attribute: Attribute, operatorA?: string, valueA
|
|
|
377
377
|
* @param guid - Optional GUID for the filter
|
|
378
378
|
* @param deactivatedMembers - Array of deactivated member values
|
|
379
379
|
* @param backgroundFilter - Optional background filter
|
|
380
|
+
* @param multiSelection - Optional flag to disable multi-selection
|
|
380
381
|
* @returns A filter instance
|
|
382
|
+
* @shortDescription Creates filter on attribute to match certain string values
|
|
381
383
|
*/
|
|
382
|
-
export declare function members(attribute: Attribute, members: string[], excludeMembers?: boolean, guid?: string, deactivatedMembers?: string[], backgroundFilter?: Filter): Filter;
|
|
384
|
+
export declare function members(attribute: Attribute, members: string[], excludeMembers?: boolean, guid?: string, deactivatedMembers?: string[], backgroundFilter?: Filter, multiSelection?: boolean): Filter;
|
|
383
385
|
/**
|
|
384
386
|
* Creates a filter to isolate date values starting from and including the given date and level.
|
|
385
387
|
*
|
|
@@ -449,10 +449,12 @@ exports.numeric = numeric;
|
|
|
449
449
|
* @param guid - Optional GUID for the filter
|
|
450
450
|
* @param deactivatedMembers - Array of deactivated member values
|
|
451
451
|
* @param backgroundFilter - Optional background filter
|
|
452
|
+
* @param multiSelection - Optional flag to disable multi-selection
|
|
452
453
|
* @returns A filter instance
|
|
454
|
+
* @shortDescription Creates filter on attribute to match certain string values
|
|
453
455
|
*/
|
|
454
|
-
function members(attribute, members, excludeMembers, guid, deactivatedMembers, backgroundFilter) {
|
|
455
|
-
return new filters_js_1.MembersFilter(attribute, members, excludeMembers, guid, deactivatedMembers, backgroundFilter);
|
|
456
|
+
function members(attribute, members, excludeMembers, guid, deactivatedMembers, backgroundFilter, multiSelection) {
|
|
457
|
+
return new filters_js_1.MembersFilter(attribute, members, excludeMembers, guid, deactivatedMembers, backgroundFilter, multiSelection);
|
|
456
458
|
}
|
|
457
459
|
exports.members = members;
|
|
458
460
|
// DATE FILTERS
|
|
@@ -166,10 +166,12 @@ export declare class MembersFilter extends AbstractFilter {
|
|
|
166
166
|
/** @internal */
|
|
167
167
|
excludeMembers: boolean;
|
|
168
168
|
/** @internal */
|
|
169
|
+
multiSelection: boolean;
|
|
170
|
+
/** @internal */
|
|
169
171
|
deactivatedMembers: any[];
|
|
170
172
|
/** @internal */
|
|
171
173
|
backgroundFilter?: Filter;
|
|
172
|
-
constructor(attribute: Attribute, members?: any[], excludeMembers?: boolean, guid?: string, deactivatedMembers?: any[], backgroundFilter?: Filter);
|
|
174
|
+
constructor(attribute: Attribute, members?: any[], excludeMembers?: boolean, guid?: string, deactivatedMembers?: any[], backgroundFilter?: Filter, multiSelection?: boolean);
|
|
173
175
|
/**
|
|
174
176
|
* gets the element's ID
|
|
175
177
|
*/
|
|
@@ -227,10 +227,11 @@ exports.LogicalAttributeFilter = LogicalAttributeFilter;
|
|
|
227
227
|
* @internal
|
|
228
228
|
*/
|
|
229
229
|
class MembersFilter extends AbstractFilter {
|
|
230
|
-
constructor(attribute, members, excludeMembers, guid, deactivatedMembers, backgroundFilter) {
|
|
230
|
+
constructor(attribute, members, excludeMembers, guid, deactivatedMembers, backgroundFilter, multiSelection = true) {
|
|
231
231
|
super(attribute, exports.FilterTypes.members, guid);
|
|
232
232
|
this.members = members !== null && members !== void 0 ? members : [];
|
|
233
233
|
this.excludeMembers = excludeMembers !== null && excludeMembers !== void 0 ? excludeMembers : false;
|
|
234
|
+
this.multiSelection = multiSelection;
|
|
234
235
|
this.deactivatedMembers = deactivatedMembers !== null && deactivatedMembers !== void 0 ? deactivatedMembers : [];
|
|
235
236
|
this.backgroundFilter = backgroundFilter;
|
|
236
237
|
if (this.members.filter((m) => m === null || m === undefined).length > 0) {
|
|
@@ -263,10 +264,7 @@ class MembersFilter extends AbstractFilter {
|
|
|
263
264
|
const membersFilterJaql = {
|
|
264
265
|
members: this.members.map((m) => m.toString()),
|
|
265
266
|
};
|
|
266
|
-
|
|
267
|
-
const filterJaql = this.excludeMembers && this.members.length
|
|
268
|
-
? { exclude: membersFilterJaql }
|
|
269
|
-
: membersFilterJaql;
|
|
267
|
+
const filterJaql = this.excludeMembers ? { exclude: membersFilterJaql } : membersFilterJaql;
|
|
270
268
|
if (this.backgroundFilter) {
|
|
271
269
|
return {
|
|
272
270
|
and: [filterJaql, this.backgroundFilter.filterJaql()],
|
|
@@ -55,4 +55,4 @@ export declare const createMeasureFromFilterJaql: (jaql: FilterJaqlInternal) =>
|
|
|
55
55
|
* @param jaql - Ranking filter Jaql object
|
|
56
56
|
* @returns Measure
|
|
57
57
|
*/
|
|
58
|
-
export declare const createMeasureFromRankingFilterJaql: (jaql: RankingFilterJaql | CustomFormulaJaql) => BaseMeasure | CalculatedMeasure;
|
|
58
|
+
export declare const createMeasureFromRankingFilterJaql: (jaql: RankingFilterJaql | CustomFormulaJaql, rankingMessage?: string) => BaseMeasure | CalculatedMeasure;
|
|
@@ -29,6 +29,7 @@ const simple_column_types_js_1 = require("../../simple-column-types.js");
|
|
|
29
29
|
const types_js_1 = require("../../types.js");
|
|
30
30
|
const measureFactory = __importStar(require("../../measures/factory.js"));
|
|
31
31
|
const factory_js_1 = require("../../measures/factory.js");
|
|
32
|
+
const measures_js_1 = require("../../measures/measures.js");
|
|
32
33
|
const DATA_MODEL_MODULE_NAME = 'DM';
|
|
33
34
|
/**
|
|
34
35
|
* Creates an attribute or level attribute from the provided parameters
|
|
@@ -86,7 +87,7 @@ exports.createAttributeFromFilterJaql = createAttributeFromFilterJaql;
|
|
|
86
87
|
*/
|
|
87
88
|
const createMeasureHelper = (dim, table, column, level, dataType, agg, title, dataSource) => {
|
|
88
89
|
const attribute = (0, exports.createAttributeHelper)(dim, table, column, level, dataType, title, dataSource);
|
|
89
|
-
const measure = measureFactory.aggregate(attribute, agg);
|
|
90
|
+
const measure = measureFactory.aggregate(attribute, agg, title);
|
|
90
91
|
measure.composeCode = `measureFactory.${agg}(${attribute.composeCode})`;
|
|
91
92
|
return measure;
|
|
92
93
|
};
|
|
@@ -115,7 +116,7 @@ const createMeasureFromFilterJaql = (jaql) => {
|
|
|
115
116
|
const { dim, table, column, title, level, datatype: dataType, agg, datasource: dataSource, } = jaql;
|
|
116
117
|
if (!agg)
|
|
117
118
|
return undefined;
|
|
118
|
-
return (0, exports.createMeasureHelper)(dim, table, column, level, dataType, agg, title, dataSource);
|
|
119
|
+
return (0, exports.createMeasureHelper)(dim, table, column, level, dataType, measures_js_1.DimensionalBaseMeasure.aggregationFromJAQL(agg), title, dataSource);
|
|
119
120
|
};
|
|
120
121
|
exports.createMeasureFromFilterJaql = createMeasureFromFilterJaql;
|
|
121
122
|
/**
|
|
@@ -124,10 +125,10 @@ exports.createMeasureFromFilterJaql = createMeasureFromFilterJaql;
|
|
|
124
125
|
* @param jaql - Ranking filter Jaql object
|
|
125
126
|
* @returns Measure
|
|
126
127
|
*/
|
|
127
|
-
const createMeasureFromRankingFilterJaql = (jaql) => {
|
|
128
|
+
const createMeasureFromRankingFilterJaql = (jaql, rankingMessage) => {
|
|
128
129
|
if ('formula' in jaql)
|
|
129
130
|
return (0, exports.createCalculatedMeasureFromJaql)(jaql);
|
|
130
131
|
const { dim, table, column, level, datatype: dataType, agg } = jaql;
|
|
131
|
-
return (0, exports.createMeasureHelper)(dim, table, column, level, dataType, agg);
|
|
132
|
+
return (0, exports.createMeasureHelper)(dim, table, column, level, dataType, measures_js_1.DimensionalBaseMeasure.aggregationFromJAQL(agg), rankingMessage);
|
|
132
133
|
};
|
|
133
134
|
exports.createMeasureFromRankingFilterJaql = createMeasureFromRankingFilterJaql;
|
|
@@ -28,6 +28,7 @@ const types_js_1 = require("./types.js");
|
|
|
28
28
|
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
|
+
const translatable_error_js_1 = require("../../../translation/translatable-error.js");
|
|
31
32
|
const isTopCondition = (filter) => filter.top !== undefined;
|
|
32
33
|
const isBottomCondition = (filter) => filter.bottom !== undefined;
|
|
33
34
|
const isExcludeCondition = (filter) => { var _a; return !!((_a = filter.exclude) === null || _a === void 0 ? void 0 : _a.members); };
|
|
@@ -108,12 +109,12 @@ exports.getSelectedConditionOption = getSelectedConditionOption;
|
|
|
108
109
|
* @returns attribute filter
|
|
109
110
|
*/
|
|
110
111
|
const createAttributeFilterFromConditionFilterJaql = (attribute, conditionFilterJaql, guid) => {
|
|
111
|
-
var _a, _b, _c;
|
|
112
|
+
var _a, _b, _c, _d, _e, _f;
|
|
112
113
|
const conditionType = (0, exports.getSelectedConditionOption)(conditionFilterJaql);
|
|
113
114
|
switch (conditionType) {
|
|
114
115
|
case types_js_1.ConditionFilterType.BOTTOM:
|
|
115
116
|
if (conditionFilterJaql.by) {
|
|
116
|
-
return (0, filter_code_util_js_1.withComposeCode)(filterFactory.bottomRanking)(attribute, (0, attribute_measure_util_js_1.createMeasureFromRankingFilterJaql)(conditionFilterJaql.by), conditionFilterJaql[types_js_1.ConditionFilterType.BOTTOM], guid);
|
|
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);
|
|
117
118
|
}
|
|
118
119
|
break;
|
|
119
120
|
case types_js_1.ConditionFilterType.EQUALS:
|
|
@@ -126,7 +127,7 @@ const createAttributeFilterFromConditionFilterJaql = (attribute, conditionFilter
|
|
|
126
127
|
return (0, filter_code_util_js_1.withComposeCode)(filterFactory.greaterThanOrEqual)(attribute, conditionFilterJaql[types_js_1.ConditionFilterType.GREATER_THAN_OR_EQUAL], guid);
|
|
127
128
|
case types_js_1.ConditionFilterType.TOP:
|
|
128
129
|
if (conditionFilterJaql.by) {
|
|
129
|
-
return (0, filter_code_util_js_1.withComposeCode)(filterFactory.topRanking)(attribute, (0, attribute_measure_util_js_1.createMeasureFromRankingFilterJaql)(conditionFilterJaql.by), conditionFilterJaql[types_js_1.ConditionFilterType.TOP], guid);
|
|
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);
|
|
130
131
|
}
|
|
131
132
|
break;
|
|
132
133
|
case types_js_1.ConditionFilterType.STARTS_WITH:
|
|
@@ -157,9 +158,13 @@ const createAttributeFilterFromConditionFilterJaql = (attribute, conditionFilter
|
|
|
157
158
|
return (0, filter_code_util_js_1.withComposeCode)(filterFactory.union)(conditionFilterJaql.or.map((c) => (0, exports.createAttributeFilterFromConditionFilterJaql)(attribute, c, guid)), guid);
|
|
158
159
|
}
|
|
159
160
|
break;
|
|
160
|
-
case types_js_1.ConditionFilterType.IS_NOT:
|
|
161
|
+
case types_js_1.ConditionFilterType.IS_NOT: {
|
|
162
|
+
const deactivatedMembers = (((_c = conditionFilterJaql.filter) === null || _c === void 0 ? void 0 : _c.turnedOff) && ((_d = conditionFilterJaql.filter.exclude) === null || _d === void 0 ? void 0 : _d.members)) ||
|
|
163
|
+
[];
|
|
164
|
+
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))) || [];
|
|
161
165
|
// use members filter with exclude instead of exclude filter
|
|
162
|
-
return (0, filter_code_util_js_1.withComposeCode)(filterFactory.members)(attribute,
|
|
166
|
+
return (0, filter_code_util_js_1.withComposeCode)(filterFactory.members)(attribute, selectedMembers, true, guid, deactivatedMembers, undefined, conditionFilterJaql.multiSelection);
|
|
167
|
+
}
|
|
163
168
|
case types_js_1.ConditionFilterType.AFTER:
|
|
164
169
|
case types_js_1.ConditionFilterType.BEFORE:
|
|
165
170
|
case types_js_1.ConditionFilterType.IS_EMPTY:
|
|
@@ -167,7 +172,9 @@ const createAttributeFilterFromConditionFilterJaql = (attribute, conditionFilter
|
|
|
167
172
|
// TODO Handle these cases later; may need filterFactory function added first
|
|
168
173
|
break;
|
|
169
174
|
}
|
|
170
|
-
throw '
|
|
175
|
+
throw new translatable_error_js_1.TranslatableError('errors.filter.unsupportedConditionFilter', {
|
|
176
|
+
filter: JSON.stringify(conditionFilterJaql),
|
|
177
|
+
});
|
|
171
178
|
};
|
|
172
179
|
exports.createAttributeFilterFromConditionFilterJaql = createAttributeFilterFromConditionFilterJaql;
|
|
173
180
|
/**
|
|
@@ -194,6 +201,8 @@ const createMeasureFilterFromConditionFilterJaql = (measure, conditionFilterJaql
|
|
|
194
201
|
case types_js_1.ConditionFilterType.BETWEEN:
|
|
195
202
|
return (0, filter_code_util_js_1.withComposeCode)(filterFactory.measureBetween)(measure, conditionFilterJaql.from, conditionFilterJaql.to, guid);
|
|
196
203
|
}
|
|
197
|
-
throw '
|
|
204
|
+
throw new translatable_error_js_1.TranslatableError('errors.filter.unsupportedConditionFilter', {
|
|
205
|
+
filter: JSON.stringify(conditionFilterJaql),
|
|
206
|
+
});
|
|
198
207
|
};
|
|
199
208
|
exports.createMeasureFilterFromConditionFilterJaql = createMeasureFilterFromConditionFilterJaql;
|
|
@@ -25,7 +25,7 @@ export declare const createFilterIncludeAll: (attribute: Attribute, guid?: strin
|
|
|
25
25
|
* @param guid - Optional GUID for the filter
|
|
26
26
|
* @returns Filter object
|
|
27
27
|
*/
|
|
28
|
-
export declare const createFilterFromSpecificItemsFilterJaql: (attribute: Attribute, specificItemsFilterJaql: SpecificItemsFilterJaql, guid?: string) => 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
|
*
|
|
@@ -31,6 +31,7 @@ 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
33
|
const utils_js_1 = require("../../../utils.js");
|
|
34
|
+
const translatable_error_js_1 = require("../../../translation/translatable-error.js");
|
|
34
35
|
/**
|
|
35
36
|
* Creates a generic filter (aka pass-through JAQL filter) if the JAQL cannot be translated to a specific filter type.
|
|
36
37
|
*
|
|
@@ -84,11 +85,11 @@ exports.createFilterIncludeAll = createFilterIncludeAll;
|
|
|
84
85
|
* @param guid - Optional GUID for the filter
|
|
85
86
|
* @returns Filter object
|
|
86
87
|
*/
|
|
87
|
-
const createFilterFromSpecificItemsFilterJaql = (attribute, specificItemsFilterJaql, guid) => {
|
|
88
|
+
const createFilterFromSpecificItemsFilterJaql = (attribute, specificItemsFilterJaql, guid, multiSelection) => {
|
|
88
89
|
const deactivatedMembers = getDeactivatedMembersFromFilterJaql(specificItemsFilterJaql);
|
|
89
90
|
const activeMembers = getActiveMembersFromFilterJaql(specificItemsFilterJaql, deactivatedMembers);
|
|
90
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
|
|
91
|
-
guid, deactivatedMembers);
|
|
92
|
+
guid, deactivatedMembers, undefined, multiSelection);
|
|
92
93
|
};
|
|
93
94
|
exports.createFilterFromSpecificItemsFilterJaql = createFilterFromSpecificItemsFilterJaql;
|
|
94
95
|
function getDeactivatedMembersFromFilterJaql(filterJaql) {
|
|
@@ -183,7 +184,9 @@ const createFilterFromJaqlInternal = (jaql, guid) => {
|
|
|
183
184
|
try {
|
|
184
185
|
if ('formula' in jaql) {
|
|
185
186
|
// generic pass-through JAQL filter will be used instead
|
|
186
|
-
throw '
|
|
187
|
+
throw new translatable_error_js_1.TranslatableError('errors.filter.formulaFiltersNotSupported', {
|
|
188
|
+
filter: JSON.stringify(jaql),
|
|
189
|
+
});
|
|
187
190
|
}
|
|
188
191
|
const filterJaqlWrapperWithType = (0, filter_types_util_js_1.extractFilterTypeFromFilterJaql)(jaql, jaql.datatype);
|
|
189
192
|
const { filter: filterJaqlWithType } = filterJaqlWrapperWithType;
|
|
@@ -194,7 +197,7 @@ const createFilterFromJaqlInternal = (jaql, guid) => {
|
|
|
194
197
|
case types_js_1.FILTER_TYPES.INCLUDE_ALL:
|
|
195
198
|
return (0, exports.createFilterIncludeAll)(attribute, guid);
|
|
196
199
|
case types_js_1.FILTER_TYPES.SPECIFIC_ITEMS:
|
|
197
|
-
return (0, exports.createFilterFromSpecificItemsFilterJaql)(attribute, filterJaqlWithType, guid);
|
|
200
|
+
return (0, exports.createFilterFromSpecificItemsFilterJaql)(attribute, filterJaqlWithType, guid, filterJaqlWithType.multiSelection);
|
|
198
201
|
case types_js_1.FILTER_TYPES.CONDITION:
|
|
199
202
|
return (0, exports.createFilterFromConditionFilterJaql)(attribute, filterJaqlWithType, measure, guid);
|
|
200
203
|
case types_js_1.FILTER_TYPES.DATE_RANGE:
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { DimensionalElement } from './base.js';
|
|
2
|
+
import { SortDirection } from './interfaces.js';
|
|
3
|
+
import { MetadataItem } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* This implementation wraps metadata for a JAQL query. The metadata could be
|
|
6
|
+
* for a dimension, measure, or filter. We do little to no interpretation of
|
|
7
|
+
* the JAQL as it is designed to be "passed through" to the query execution
|
|
8
|
+
* step.
|
|
9
|
+
*
|
|
10
|
+
* This will typically be used for JAQL metadata that is coming from a Sisense
|
|
11
|
+
* instance and is assumed to be correct (e.g. dashboard widget, NLQ
|
|
12
|
+
* suggestion).
|
|
13
|
+
*
|
|
14
|
+
* @param item - the metadata item in a JAQL query
|
|
15
|
+
* @param type - the data type of the dimension
|
|
16
|
+
* @internal
|
|
17
|
+
*/
|
|
18
|
+
export declare class JaqlElement extends DimensionalElement {
|
|
19
|
+
private readonly metadataItem;
|
|
20
|
+
expression: string;
|
|
21
|
+
skipValidation: boolean;
|
|
22
|
+
aggregation?: string;
|
|
23
|
+
formula?: string;
|
|
24
|
+
sortType?: SortDirection;
|
|
25
|
+
constructor(item: MetadataItem, type: string);
|
|
26
|
+
get id(): string;
|
|
27
|
+
jaql(): MetadataItem;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Create a JaqlElement from a MetadataItem
|
|
31
|
+
*
|
|
32
|
+
* @param item - the metadata item in a JAQL query
|
|
33
|
+
* @returns a JaqlElement
|
|
34
|
+
* @internal
|
|
35
|
+
*/
|
|
36
|
+
export declare function createJaqlElement(item: MetadataItem): JaqlElement;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createJaqlElement = exports.JaqlElement = void 0;
|
|
4
|
+
const base_js_1 = require("./base.js");
|
|
5
|
+
const utils_js_1 = require("../utils.js");
|
|
6
|
+
const types_js_1 = require("./types.js");
|
|
7
|
+
/**
|
|
8
|
+
* This implementation wraps metadata for a JAQL query. The metadata could be
|
|
9
|
+
* for a dimension, measure, or filter. We do little to no interpretation of
|
|
10
|
+
* the JAQL as it is designed to be "passed through" to the query execution
|
|
11
|
+
* step.
|
|
12
|
+
*
|
|
13
|
+
* This will typically be used for JAQL metadata that is coming from a Sisense
|
|
14
|
+
* instance and is assumed to be correct (e.g. dashboard widget, NLQ
|
|
15
|
+
* suggestion).
|
|
16
|
+
*
|
|
17
|
+
* @param item - the metadata item in a JAQL query
|
|
18
|
+
* @param type - the data type of the dimension
|
|
19
|
+
* @internal
|
|
20
|
+
*/
|
|
21
|
+
class JaqlElement extends base_js_1.DimensionalElement {
|
|
22
|
+
constructor(item, type) {
|
|
23
|
+
var _a;
|
|
24
|
+
super((_a = item.jaql.title) !== null && _a !== void 0 ? _a : '', type);
|
|
25
|
+
this.expression = (item.jaql.dim || item.jaql.formula);
|
|
26
|
+
this.metadataItem = item;
|
|
27
|
+
if (item.jaql.agg) {
|
|
28
|
+
this.aggregation = item.jaql.agg;
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
delete this.aggregation;
|
|
32
|
+
}
|
|
33
|
+
if (item.jaql.formula) {
|
|
34
|
+
this.formula = item.jaql.formula;
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
delete this.formula;
|
|
38
|
+
}
|
|
39
|
+
if (item.jaql.sort) {
|
|
40
|
+
this.sortType = (0, utils_js_1.getSortType)(item.jaql.sort);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
delete this.sortType;
|
|
44
|
+
}
|
|
45
|
+
this.skipValidation = true;
|
|
46
|
+
}
|
|
47
|
+
get id() {
|
|
48
|
+
return this.expression;
|
|
49
|
+
}
|
|
50
|
+
jaql() {
|
|
51
|
+
return this.metadataItem;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.JaqlElement = JaqlElement;
|
|
55
|
+
const toMetadataType = {
|
|
56
|
+
text: types_js_1.MetadataTypes.TextAttribute,
|
|
57
|
+
numeric: types_js_1.MetadataTypes.NumericAttribute,
|
|
58
|
+
datetime: types_js_1.MetadataTypes.DateLevel,
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Create a JaqlElement from a MetadataItem
|
|
62
|
+
*
|
|
63
|
+
* @param item - the metadata item in a JAQL query
|
|
64
|
+
* @returns a JaqlElement
|
|
65
|
+
* @internal
|
|
66
|
+
*/
|
|
67
|
+
function createJaqlElement(item) {
|
|
68
|
+
var _a;
|
|
69
|
+
// TODO: measures with a "formula" may not have a datatype. force this to be numeric because aggregations
|
|
70
|
+
// will always be of type number. check if there is a more correct way to do this
|
|
71
|
+
return new JaqlElement(item, (_a = toMetadataType[item.jaql.datatype]) !== null && _a !== void 0 ? _a : 'numeric');
|
|
72
|
+
}
|
|
73
|
+
exports.createJaqlElement = createJaqlElement;
|
|
@@ -11,6 +11,7 @@ const mapValues_js_1 = __importDefault(require("lodash-es/mapValues.js"));
|
|
|
11
11
|
const attributes_js_1 = require("../attributes.js");
|
|
12
12
|
const simple_column_types_js_1 = require("./../simple-column-types.js");
|
|
13
13
|
const utils_js_1 = require("../../utils.js");
|
|
14
|
+
const translatable_error_js_1 = require("../../translation/translatable-error.js");
|
|
14
15
|
/**
|
|
15
16
|
* Defines the different numeric operators that can be used with numeric filters
|
|
16
17
|
*
|
|
@@ -115,7 +116,7 @@ function transformCustomFormulaJaql(jaql) {
|
|
|
115
116
|
var _a;
|
|
116
117
|
const isFormulaJaql = 'formula' in jaql;
|
|
117
118
|
if (!isFormulaJaql) {
|
|
118
|
-
throw new
|
|
119
|
+
throw new translatable_error_js_1.TranslatableError('errors.measure.notAFormula');
|
|
119
120
|
}
|
|
120
121
|
const sort = (0, utils_js_1.convertSort)(jaql.sort);
|
|
121
122
|
const context = (0, mapValues_js_1.default)((_a = jaql.context) !== null && _a !== void 0 ? _a : {}, (jaqlContextValue) => jaqlContextValue ? transformFormulaJaqlHelper(jaqlContextValue) : {});
|