@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.
Files changed (44) hide show
  1. package/dist/cjs/dimensional-model/filters/factory.d.ts +2 -1
  2. package/dist/cjs/dimensional-model/filters/factory.js +3 -2
  3. package/dist/cjs/dimensional-model/filters/filters.d.ts +10 -8
  4. package/dist/cjs/dimensional-model/filters/filters.js +3 -5
  5. package/dist/cjs/dimensional-model/filters/utils/attribute-measure-util.d.ts +1 -1
  6. package/dist/cjs/dimensional-model/filters/utils/attribute-measure-util.js +5 -4
  7. package/dist/cjs/dimensional-model/filters/utils/condition-filter-util.js +9 -6
  8. package/dist/cjs/dimensional-model/filters/utils/filter-from-jaql-util.d.ts +1 -1
  9. package/dist/cjs/dimensional-model/filters/utils/filter-from-jaql-util.js +3 -3
  10. package/dist/cjs/dimensional-model/jaql-element.d.ts +36 -0
  11. package/dist/cjs/dimensional-model/jaql-element.js +73 -0
  12. package/dist/cjs/dimensional-model/types.d.ts +155 -0
  13. package/dist/cjs/dimensional-model/types.js +11 -2
  14. package/dist/cjs/index.d.ts +2 -0
  15. package/dist/cjs/index.js +4 -1
  16. package/dist/cjs/interfaces.d.ts +8 -0
  17. package/dist/cjs/translation/resources/en.d.ts +14 -0
  18. package/dist/cjs/translation/resources/index.d.ts +6 -0
  19. package/dist/cjs/translation/resources/index.js +6 -0
  20. package/dist/cjs/utils.d.ts +11 -1
  21. package/dist/cjs/utils.js +30 -5
  22. package/dist/dimensional-model/filters/factory.d.ts +2 -1
  23. package/dist/dimensional-model/filters/factory.js +3 -2
  24. package/dist/dimensional-model/filters/filters.d.ts +10 -8
  25. package/dist/dimensional-model/filters/filters.js +3 -5
  26. package/dist/dimensional-model/filters/utils/attribute-measure-util.d.ts +1 -1
  27. package/dist/dimensional-model/filters/utils/attribute-measure-util.js +5 -4
  28. package/dist/dimensional-model/filters/utils/condition-filter-util.js +9 -6
  29. package/dist/dimensional-model/filters/utils/filter-from-jaql-util.d.ts +1 -1
  30. package/dist/dimensional-model/filters/utils/filter-from-jaql-util.js +3 -3
  31. package/dist/dimensional-model/jaql-element.d.ts +36 -0
  32. package/dist/dimensional-model/jaql-element.js +68 -0
  33. package/dist/dimensional-model/types.d.ts +155 -0
  34. package/dist/dimensional-model/types.js +10 -1
  35. package/dist/index.d.ts +2 -0
  36. package/dist/index.js +2 -0
  37. package/dist/interfaces.d.ts +8 -0
  38. package/dist/translation/resources/en.d.ts +14 -0
  39. package/dist/translation/resources/index.d.ts +6 -0
  40. package/dist/translation/resources/index.js +6 -0
  41. package/dist/tsconfig.prod.cjs.tsbuildinfo +1 -1
  42. package/dist/utils.d.ts +11 -1
  43. package/dist/utils.js +26 -2
  44. 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: string;
38
- To: string;
39
- Last: string;
40
- Next: string;
41
- Anchor: string;
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: string;
322
+ readonly operator: typeof DateOperators.Last | typeof DateOperators.Next;
321
323
  readonly anchor?: Date | string;
322
- constructor(l: LevelAttribute, offset: number, count: number, operator?: string, anchor?: Date | string, guid?: string);
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
- // if there's no members to exclude, do not add the exclude property
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, ((_c = conditionFilterJaql.exclude) === null || _c === void 0 ? void 0 : _c.members) || [], true, guid, (((_d = conditionFilterJaql.filter) === null || _d === void 0 ? void 0 : _d.turnedOff) && ((_e = conditionFilterJaql.filter.exclude) === null || _e === void 0 ? void 0 : _e.members)) ||
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
- return (o.agg || o.aggregation) && o.attribute && !this.isMeasureTemplate(o);
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 = {}));
@@ -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; } });
@@ -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,
@@ -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;