@sisense/sdk-data 1.22.0 → 1.24.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/filters/factory.d.ts +2 -1
- package/dist/cjs/dimensional-model/filters/factory.js +3 -2
- package/dist/cjs/dimensional-model/filters/filters.d.ts +10 -8
- 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 +9 -6
- 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 +3 -3
- 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/types.d.ts +155 -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/interfaces.d.ts +8 -0
- package/dist/cjs/translation/resources/en.d.ts +14 -0
- package/dist/cjs/translation/resources/index.d.ts +6 -0
- package/dist/cjs/translation/resources/index.js +6 -0
- package/dist/cjs/utils.d.ts +11 -1
- package/dist/cjs/utils.js +30 -5
- package/dist/dimensional-model/filters/factory.d.ts +2 -1
- package/dist/dimensional-model/filters/factory.js +3 -2
- package/dist/dimensional-model/filters/filters.d.ts +10 -8
- 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 +9 -6
- 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 +3 -3
- package/dist/dimensional-model/jaql-element.d.ts +36 -0
- package/dist/dimensional-model/jaql-element.js +68 -0
- package/dist/dimensional-model/types.d.ts +155 -0
- package/dist/dimensional-model/types.js +10 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/interfaces.d.ts +8 -0
- package/dist/translation/resources/en.d.ts +14 -0
- package/dist/translation/resources/index.d.ts +6 -0
- package/dist/translation/resources/index.js +6 -0
- package/dist/tsconfig.prod.cjs.tsbuildinfo +1 -1
- package/dist/utils.d.ts +11 -1
- package/dist/utils.js +26 -2
- package/package.json +3 -3
|
@@ -377,10 +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
|
|
381
382
|
* @shortDescription Creates filter on attribute to match certain string values
|
|
382
383
|
*/
|
|
383
|
-
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;
|
|
384
385
|
/**
|
|
385
386
|
* Creates a filter to isolate date values starting from and including the given date and level.
|
|
386
387
|
*
|
|
@@ -449,11 +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
|
|
453
454
|
* @shortDescription Creates filter on attribute to match certain string values
|
|
454
455
|
*/
|
|
455
|
-
function members(attribute, members, excludeMembers, guid, deactivatedMembers, backgroundFilter) {
|
|
456
|
-
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);
|
|
457
458
|
}
|
|
458
459
|
exports.members = members;
|
|
459
460
|
// DATE FILTERS
|
|
@@ -34,11 +34,11 @@ export declare const NumericOperators: {
|
|
|
34
34
|
* @internal
|
|
35
35
|
*/
|
|
36
36
|
export declare const DateOperators: {
|
|
37
|
-
From:
|
|
38
|
-
To:
|
|
39
|
-
Last:
|
|
40
|
-
Next:
|
|
41
|
-
Anchor:
|
|
37
|
+
readonly From: "from";
|
|
38
|
+
readonly To: "to";
|
|
39
|
+
readonly Last: "last";
|
|
40
|
+
readonly Next: "next";
|
|
41
|
+
readonly Anchor: "Anchor";
|
|
42
42
|
};
|
|
43
43
|
/**
|
|
44
44
|
* Different logical operators that can be used with logical 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
|
*/
|
|
@@ -317,9 +319,9 @@ export declare class DateRangeFilter extends DoubleOperatorFilter<Date | string>
|
|
|
317
319
|
export declare class RelativeDateFilter extends AbstractFilter {
|
|
318
320
|
readonly offset: number;
|
|
319
321
|
readonly count: number;
|
|
320
|
-
readonly operator:
|
|
322
|
+
readonly operator: typeof DateOperators.Last | typeof DateOperators.Next;
|
|
321
323
|
readonly anchor?: Date | string;
|
|
322
|
-
constructor(l: LevelAttribute, offset: number, count: number, operator?:
|
|
324
|
+
constructor(l: LevelAttribute, offset: number, count: number, operator?: typeof DateOperators.Last | typeof DateOperators.Next, anchor?: Date | string, guid?: string);
|
|
323
325
|
get level(): LevelAttribute;
|
|
324
326
|
/**
|
|
325
327
|
* gets the element's ID
|
|
@@ -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;
|
|
@@ -109,12 +109,12 @@ exports.getSelectedConditionOption = getSelectedConditionOption;
|
|
|
109
109
|
* @returns attribute filter
|
|
110
110
|
*/
|
|
111
111
|
const createAttributeFilterFromConditionFilterJaql = (attribute, conditionFilterJaql, guid) => {
|
|
112
|
-
var _a, _b, _c, _d, _e;
|
|
112
|
+
var _a, _b, _c, _d, _e, _f;
|
|
113
113
|
const conditionType = (0, exports.getSelectedConditionOption)(conditionFilterJaql);
|
|
114
114
|
switch (conditionType) {
|
|
115
115
|
case types_js_1.ConditionFilterType.BOTTOM:
|
|
116
116
|
if (conditionFilterJaql.by) {
|
|
117
|
-
return (0, filter_code_util_js_1.withComposeCode)(filterFactory.bottomRanking)(attribute, (0, attribute_measure_util_js_1.createMeasureFromRankingFilterJaql)(conditionFilterJaql.by), conditionFilterJaql[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);
|
|
118
118
|
}
|
|
119
119
|
break;
|
|
120
120
|
case types_js_1.ConditionFilterType.EQUALS:
|
|
@@ -127,7 +127,7 @@ const createAttributeFilterFromConditionFilterJaql = (attribute, conditionFilter
|
|
|
127
127
|
return (0, filter_code_util_js_1.withComposeCode)(filterFactory.greaterThanOrEqual)(attribute, conditionFilterJaql[types_js_1.ConditionFilterType.GREATER_THAN_OR_EQUAL], guid);
|
|
128
128
|
case types_js_1.ConditionFilterType.TOP:
|
|
129
129
|
if (conditionFilterJaql.by) {
|
|
130
|
-
return (0, filter_code_util_js_1.withComposeCode)(filterFactory.topRanking)(attribute, (0, attribute_measure_util_js_1.createMeasureFromRankingFilterJaql)(conditionFilterJaql.by), conditionFilterJaql[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);
|
|
131
131
|
}
|
|
132
132
|
break;
|
|
133
133
|
case types_js_1.ConditionFilterType.STARTS_WITH:
|
|
@@ -158,10 +158,13 @@ const createAttributeFilterFromConditionFilterJaql = (attribute, conditionFilter
|
|
|
158
158
|
return (0, filter_code_util_js_1.withComposeCode)(filterFactory.union)(conditionFilterJaql.or.map((c) => (0, exports.createAttributeFilterFromConditionFilterJaql)(attribute, c, guid)), guid);
|
|
159
159
|
}
|
|
160
160
|
break;
|
|
161
|
-
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))) || [];
|
|
162
165
|
// use members filter with exclude instead of exclude filter
|
|
163
|
-
return (0, filter_code_util_js_1.withComposeCode)(filterFactory.members)(attribute,
|
|
164
|
-
|
|
166
|
+
return (0, filter_code_util_js_1.withComposeCode)(filterFactory.members)(attribute, selectedMembers, true, guid, deactivatedMembers, undefined, conditionFilterJaql.multiSelection);
|
|
167
|
+
}
|
|
165
168
|
case types_js_1.ConditionFilterType.AFTER:
|
|
166
169
|
case types_js_1.ConditionFilterType.BEFORE:
|
|
167
170
|
case types_js_1.ConditionFilterType.IS_EMPTY:
|
|
@@ -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
|
*
|
|
@@ -85,11 +85,11 @@ exports.createFilterIncludeAll = createFilterIncludeAll;
|
|
|
85
85
|
* @param guid - Optional GUID for the filter
|
|
86
86
|
* @returns Filter object
|
|
87
87
|
*/
|
|
88
|
-
const createFilterFromSpecificItemsFilterJaql = (attribute, specificItemsFilterJaql, guid) => {
|
|
88
|
+
const createFilterFromSpecificItemsFilterJaql = (attribute, specificItemsFilterJaql, guid, multiSelection) => {
|
|
89
89
|
const deactivatedMembers = getDeactivatedMembersFromFilterJaql(specificItemsFilterJaql);
|
|
90
90
|
const activeMembers = getActiveMembersFromFilterJaql(specificItemsFilterJaql, deactivatedMembers);
|
|
91
91
|
return (0, filter_code_util_js_1.withComposeCode)(filterFactory.members)(attribute, activeMembers, undefined, // use undefined instead of false to avoid including the property in composeCode
|
|
92
|
-
guid, deactivatedMembers);
|
|
92
|
+
guid, deactivatedMembers, undefined, multiSelection);
|
|
93
93
|
};
|
|
94
94
|
exports.createFilterFromSpecificItemsFilterJaql = createFilterFromSpecificItemsFilterJaql;
|
|
95
95
|
function getDeactivatedMembersFromFilterJaql(filterJaql) {
|
|
@@ -197,7 +197,7 @@ const createFilterFromJaqlInternal = (jaql, guid) => {
|
|
|
197
197
|
case types_js_1.FILTER_TYPES.INCLUDE_ALL:
|
|
198
198
|
return (0, exports.createFilterIncludeAll)(attribute, guid);
|
|
199
199
|
case types_js_1.FILTER_TYPES.SPECIFIC_ITEMS:
|
|
200
|
-
return (0, exports.createFilterFromSpecificItemsFilterJaql)(attribute, filterJaqlWithType, guid);
|
|
200
|
+
return (0, exports.createFilterFromSpecificItemsFilterJaql)(attribute, filterJaqlWithType, guid, filterJaqlWithType.multiSelection);
|
|
201
201
|
case types_js_1.FILTER_TYPES.CONDITION:
|
|
202
202
|
return (0, exports.createFilterFromConditionFilterJaql)(attribute, filterJaqlWithType, measure, guid);
|
|
203
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;
|
|
@@ -223,12 +223,14 @@ export declare type IncludeAllFilter = {
|
|
|
223
223
|
/** @internal */
|
|
224
224
|
export declare type IncludeMembersFilter = {
|
|
225
225
|
members: string[];
|
|
226
|
+
multiSelection?: boolean;
|
|
226
227
|
};
|
|
227
228
|
/** @internal */
|
|
228
229
|
export declare type ExcludeMembersFilter = {
|
|
229
230
|
exclude: {
|
|
230
231
|
members: string[];
|
|
231
232
|
};
|
|
233
|
+
multiSelection?: boolean;
|
|
232
234
|
};
|
|
233
235
|
/** @internal */
|
|
234
236
|
export declare type TurnOffMembersFilter = ExcludeMembersFilter & {
|
|
@@ -266,3 +268,156 @@ export declare type OrFilter<FilterItem> = {
|
|
|
266
268
|
* Abstract object with any unknown values
|
|
267
269
|
*/
|
|
268
270
|
export declare type AnyObject = Record<string, any>;
|
|
271
|
+
/**
|
|
272
|
+
* @internal
|
|
273
|
+
*/
|
|
274
|
+
interface DecimalAbbreviations {
|
|
275
|
+
k: boolean;
|
|
276
|
+
m: boolean;
|
|
277
|
+
b: boolean;
|
|
278
|
+
t: boolean;
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* @internal
|
|
282
|
+
*/
|
|
283
|
+
export declare enum CurrencyPosition {
|
|
284
|
+
PRE = "pre",
|
|
285
|
+
POST = "post"
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* @internal
|
|
289
|
+
*/
|
|
290
|
+
export declare type NumericMask = {
|
|
291
|
+
isdefault?: boolean;
|
|
292
|
+
abbreviations?: DecimalAbbreviations;
|
|
293
|
+
decimals?: 'auto' | number | string;
|
|
294
|
+
currency?: {
|
|
295
|
+
symbol: string;
|
|
296
|
+
position: CurrencyPosition;
|
|
297
|
+
};
|
|
298
|
+
percent?: boolean;
|
|
299
|
+
number?: {
|
|
300
|
+
separated: boolean;
|
|
301
|
+
};
|
|
302
|
+
separated?: boolean;
|
|
303
|
+
type?: string;
|
|
304
|
+
};
|
|
305
|
+
/**
|
|
306
|
+
* @internal
|
|
307
|
+
*/
|
|
308
|
+
export declare type DatetimeMask = {
|
|
309
|
+
isdefault?: boolean;
|
|
310
|
+
years: string;
|
|
311
|
+
quarters: string;
|
|
312
|
+
months: string;
|
|
313
|
+
weeks: string;
|
|
314
|
+
minutes: string;
|
|
315
|
+
days: string;
|
|
316
|
+
type: string;
|
|
317
|
+
dateAndTime?: string;
|
|
318
|
+
};
|
|
319
|
+
/**
|
|
320
|
+
* @internal
|
|
321
|
+
*/
|
|
322
|
+
export declare type MetadataItem = {
|
|
323
|
+
instanceid?: string;
|
|
324
|
+
measure?: MetadataItemJaql;
|
|
325
|
+
jaql: MetadataItemJaql;
|
|
326
|
+
panel?: string;
|
|
327
|
+
isScope?: boolean;
|
|
328
|
+
members?: string[];
|
|
329
|
+
format?: {
|
|
330
|
+
mask?: Partial<DatetimeMask> | Partial<NumericMask>;
|
|
331
|
+
number?: string;
|
|
332
|
+
subtotal?: boolean;
|
|
333
|
+
width?: number;
|
|
334
|
+
databars?: boolean;
|
|
335
|
+
color?: {
|
|
336
|
+
type: string;
|
|
337
|
+
color?: string;
|
|
338
|
+
conditions?: Array<{
|
|
339
|
+
color: string;
|
|
340
|
+
operator: string;
|
|
341
|
+
expression: string | Record<string, any>;
|
|
342
|
+
}>;
|
|
343
|
+
};
|
|
344
|
+
};
|
|
345
|
+
field?: {
|
|
346
|
+
id?: string;
|
|
347
|
+
index?: number;
|
|
348
|
+
};
|
|
349
|
+
filter?: MetadataItem;
|
|
350
|
+
exclude?: MetadataItem;
|
|
351
|
+
by?: MetadataItemJaql;
|
|
352
|
+
level?: string;
|
|
353
|
+
anchor?: string;
|
|
354
|
+
from?: string;
|
|
355
|
+
to?: string;
|
|
356
|
+
};
|
|
357
|
+
/**
|
|
358
|
+
* @internal
|
|
359
|
+
*/
|
|
360
|
+
export declare type VagueMetadataItem = Omit<MetadataItem, 'json'> & {
|
|
361
|
+
json?: MetadataItem;
|
|
362
|
+
};
|
|
363
|
+
/**
|
|
364
|
+
* @internal
|
|
365
|
+
*/
|
|
366
|
+
export declare type MetadataItemJaql = {
|
|
367
|
+
dim?: string;
|
|
368
|
+
agg?: string;
|
|
369
|
+
datatype?: string;
|
|
370
|
+
table?: string;
|
|
371
|
+
column?: string;
|
|
372
|
+
level?: string;
|
|
373
|
+
dateTimeLevel?: string;
|
|
374
|
+
bucket?: string;
|
|
375
|
+
sort?: string;
|
|
376
|
+
in?: {
|
|
377
|
+
selected: {
|
|
378
|
+
jaql: MetadataItemJaql;
|
|
379
|
+
};
|
|
380
|
+
};
|
|
381
|
+
title?: string;
|
|
382
|
+
type?: string;
|
|
383
|
+
formula?: string;
|
|
384
|
+
context?: {
|
|
385
|
+
[itemId: string]: MetadataItemJaql;
|
|
386
|
+
};
|
|
387
|
+
filter?: MetadataItem;
|
|
388
|
+
sortDetails?: {
|
|
389
|
+
dir: string;
|
|
390
|
+
field?: number;
|
|
391
|
+
measurePath?: Record<number, string | number>;
|
|
392
|
+
sortingLastDimension?: boolean;
|
|
393
|
+
initialized?: boolean;
|
|
394
|
+
};
|
|
395
|
+
};
|
|
396
|
+
/**
|
|
397
|
+
* @internal
|
|
398
|
+
*/
|
|
399
|
+
export declare type DataSourceField = {
|
|
400
|
+
column: string;
|
|
401
|
+
dimtype: string;
|
|
402
|
+
id: string;
|
|
403
|
+
indexed: boolean;
|
|
404
|
+
merged: boolean;
|
|
405
|
+
table: string;
|
|
406
|
+
title: string;
|
|
407
|
+
type: string;
|
|
408
|
+
};
|
|
409
|
+
/**
|
|
410
|
+
* @internal
|
|
411
|
+
*/
|
|
412
|
+
export declare type DataSourceSchema = {
|
|
413
|
+
title: string;
|
|
414
|
+
type: 'extract' | 'live';
|
|
415
|
+
} & AnyObject;
|
|
416
|
+
/**
|
|
417
|
+
* @internal
|
|
418
|
+
*/
|
|
419
|
+
export declare type DataSourceMetadata = {
|
|
420
|
+
title: string;
|
|
421
|
+
fullname: string;
|
|
422
|
+
live: boolean;
|
|
423
|
+
};
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* Types
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.JaqlSortDirection = exports.DataType = exports.DateLevels = exports.MetadataTypes = exports.Sort = exports.AggregationTypes = void 0;
|
|
9
|
+
exports.CurrencyPosition = exports.JaqlSortDirection = exports.DataType = exports.DateLevels = exports.MetadataTypes = exports.Sort = exports.AggregationTypes = void 0;
|
|
10
10
|
/**
|
|
11
11
|
* Different aggregation types
|
|
12
12
|
*/
|
|
@@ -107,7 +107,8 @@ exports.MetadataTypes = {
|
|
|
107
107
|
const type = o;
|
|
108
108
|
return type.toLowerCase() === exports.MetadataTypes.BaseMeasure;
|
|
109
109
|
}
|
|
110
|
-
|
|
110
|
+
// JaqlElement doesn't have property attribute. Check for jaql instead
|
|
111
|
+
return (o.agg || o.aggregation) && (o.attribute || o.jaql) && !this.isMeasureTemplate(o);
|
|
111
112
|
},
|
|
112
113
|
/**
|
|
113
114
|
* Checks whether the given object or type is a measure - of any type
|
|
@@ -300,3 +301,11 @@ var JaqlSortDirection;
|
|
|
300
301
|
JaqlSortDirection["ASC"] = "asc";
|
|
301
302
|
JaqlSortDirection["DESC"] = "desc";
|
|
302
303
|
})(JaqlSortDirection = exports.JaqlSortDirection || (exports.JaqlSortDirection = {}));
|
|
304
|
+
/**
|
|
305
|
+
* @internal
|
|
306
|
+
*/
|
|
307
|
+
var CurrencyPosition;
|
|
308
|
+
(function (CurrencyPosition) {
|
|
309
|
+
CurrencyPosition["PRE"] = "pre";
|
|
310
|
+
CurrencyPosition["POST"] = "post";
|
|
311
|
+
})(CurrencyPosition = exports.CurrencyPosition || (exports.CurrencyPosition = {}));
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ export * from './dimensional-model/data-model.js';
|
|
|
14
14
|
export * from './dimensional-model/attributes.js';
|
|
15
15
|
export * from './dimensional-model/dimensions.js';
|
|
16
16
|
export * from './dimensional-model/factory.js';
|
|
17
|
+
export * from './dimensional-model/jaql-element.js';
|
|
17
18
|
export * from './dimensional-model/filters/filters.js';
|
|
18
19
|
export { createFilterMatcher } from './dimensional-model/filters/utils/filter-matcher-utils.js';
|
|
19
20
|
/**
|
|
@@ -91,3 +92,4 @@ export * from './dimensional-model/simple-column-types.js';
|
|
|
91
92
|
*/
|
|
92
93
|
export * as analyticsFactory from './dimensional-model/analytics/factory.js';
|
|
93
94
|
export * from './utils.js';
|
|
95
|
+
export { type TranslationDictionary, PACKAGE_NAMESPACE as translationNamespace, } from './translation/resources/index.js';
|
package/dist/cjs/index.js
CHANGED
|
@@ -26,7 +26,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
26
26
|
return result;
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.analyticsFactory = exports.measureFactory = exports.filterFactory = exports.createFilterMatcher = void 0;
|
|
29
|
+
exports.translationNamespace = exports.analyticsFactory = exports.measureFactory = exports.filterFactory = exports.createFilterMatcher = void 0;
|
|
30
30
|
require("./translation/initialize-i18n.js");
|
|
31
31
|
/**
|
|
32
32
|
* @packageDocumentation
|
|
@@ -43,6 +43,7 @@ __exportStar(require("./dimensional-model/data-model.js"), exports);
|
|
|
43
43
|
__exportStar(require("./dimensional-model/attributes.js"), exports);
|
|
44
44
|
__exportStar(require("./dimensional-model/dimensions.js"), exports);
|
|
45
45
|
__exportStar(require("./dimensional-model/factory.js"), exports);
|
|
46
|
+
__exportStar(require("./dimensional-model/jaql-element.js"), exports);
|
|
46
47
|
__exportStar(require("./dimensional-model/filters/filters.js"), exports);
|
|
47
48
|
var filter_matcher_utils_js_1 = require("./dimensional-model/filters/utils/filter-matcher-utils.js");
|
|
48
49
|
Object.defineProperty(exports, "createFilterMatcher", { enumerable: true, get: function () { return filter_matcher_utils_js_1.createFilterMatcher; } });
|
|
@@ -121,3 +122,5 @@ __exportStar(require("./dimensional-model/simple-column-types.js"), exports);
|
|
|
121
122
|
*/
|
|
122
123
|
exports.analyticsFactory = __importStar(require("./dimensional-model/analytics/factory.js"));
|
|
123
124
|
__exportStar(require("./utils.js"), exports);
|
|
125
|
+
var index_js_1 = require("./translation/resources/index.js");
|
|
126
|
+
Object.defineProperty(exports, "translationNamespace", { enumerable: true, get: function () { return index_js_1.PACKAGE_NAMESPACE; } });
|
package/dist/cjs/interfaces.d.ts
CHANGED
|
@@ -132,6 +132,14 @@ export interface CalculatedMeasureColumn {
|
|
|
132
132
|
* Info of data source
|
|
133
133
|
*/
|
|
134
134
|
export declare type DataSourceInfo = {
|
|
135
|
+
/**
|
|
136
|
+
* @internal
|
|
137
|
+
**/
|
|
138
|
+
id?: string;
|
|
139
|
+
/**
|
|
140
|
+
* @internal
|
|
141
|
+
**/
|
|
142
|
+
address?: string;
|
|
135
143
|
title: string;
|
|
136
144
|
type: 'live' | 'elasticube';
|
|
137
145
|
};
|
|
@@ -28,4 +28,18 @@ export declare const translation: {
|
|
|
28
28
|
unsupportedDimensionalElement: string;
|
|
29
29
|
};
|
|
30
30
|
};
|
|
31
|
+
/**
|
|
32
|
+
* A reference type containing all currently used translation keys.
|
|
33
|
+
* This type serves as a complete resource for creating custom translations,
|
|
34
|
+
* ensuring that all required keys are present and included.
|
|
35
|
+
* It can also be used as Partial to make sure custom translation does not contain any typos.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```typescript
|
|
39
|
+
* import { TranslationDictionary } from '@sisense/sdk-data';
|
|
40
|
+
*
|
|
41
|
+
* const customTranslationResources: Partial<TranslationDictionary> = {
|
|
42
|
+
* ```
|
|
43
|
+
* @internal
|
|
44
|
+
*/
|
|
31
45
|
export declare type TranslationDictionary = typeof translation;
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { TranslationDictionary } from './en.js';
|
|
2
2
|
export type { TranslationDictionary };
|
|
3
|
+
/**
|
|
4
|
+
* A reference to the namespace of the translation resources.
|
|
5
|
+
* This namespace is used to access the translation resources in the i18next instance.
|
|
6
|
+
*
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
3
9
|
export declare const PACKAGE_NAMESPACE: "sdkData";
|
|
4
10
|
export declare const resources: {
|
|
5
11
|
en: {
|
|
@@ -3,6 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.resources = exports.PACKAGE_NAMESPACE = void 0;
|
|
4
4
|
const en_js_1 = require("./en.js");
|
|
5
5
|
const uk_js_1 = require("./uk.js");
|
|
6
|
+
/**
|
|
7
|
+
* A reference to the namespace of the translation resources.
|
|
8
|
+
* This namespace is used to access the translation resources in the i18next instance.
|
|
9
|
+
*
|
|
10
|
+
* @internal
|
|
11
|
+
*/
|
|
6
12
|
exports.PACKAGE_NAMESPACE = 'sdkData';
|
|
7
13
|
exports.resources = {
|
|
8
14
|
en: en_js_1.translation,
|
package/dist/cjs/utils.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import { Filter, FilterRelations, FilterRelationsJaql, DataSource, DataSourceInfo, FilterJaql, Sort, Attribute } from './index.js';
|
|
2
1
|
import { JaqlDataSource } from './dimensional-model/filters/utils/types.js';
|
|
2
|
+
import { Attribute, Filter, FilterRelations, FilterRelationsJaql, SortDirection } from './dimensional-model/interfaces.js';
|
|
3
|
+
import { DataSource, DataSourceInfo } from './interfaces.js';
|
|
4
|
+
import { FilterJaql, JaqlSortDirection, Sort } from './dimensional-model/types.js';
|
|
3
5
|
/**
|
|
4
6
|
* A more performant, but slightly bulkier, RFC4122v4 implementation. Performance is improved by minimizing calls to random()
|
|
5
7
|
*
|
|
@@ -68,3 +70,11 @@ export declare function getTableNameFromAttribute(attribute: Attribute): string;
|
|
|
68
70
|
* @internal
|
|
69
71
|
*/
|
|
70
72
|
export declare function getColumnNameFromAttribute(attribute: Attribute): string;
|
|
73
|
+
/**
|
|
74
|
+
* Gets the sort type based on the jaql sort direction.
|
|
75
|
+
*
|
|
76
|
+
* @param jaqlSort - The jaql sort direction.
|
|
77
|
+
* @returns The sort direction.
|
|
78
|
+
* @internal
|
|
79
|
+
*/
|
|
80
|
+
export declare function getSortType(jaqlSort: `${JaqlSortDirection}` | undefined): SortDirection;
|