@sisense/sdk-data 1.28.0 → 1.29.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 (52) hide show
  1. package/dist/cjs/dimensional-model/attributes.d.ts +2 -2
  2. package/dist/cjs/dimensional-model/attributes.js +7 -7
  3. package/dist/cjs/dimensional-model/base.d.ts +7 -1
  4. package/dist/cjs/dimensional-model/base.js +2 -1
  5. package/dist/cjs/dimensional-model/filters/filter-config-utils.d.ts +4 -0
  6. package/dist/cjs/dimensional-model/filters/filter-config-utils.js +5 -2
  7. package/dist/cjs/dimensional-model/filters/filter-relations.d.ts +187 -0
  8. package/dist/cjs/dimensional-model/filters/filter-relations.js +532 -0
  9. package/dist/cjs/dimensional-model/filters/helpers.d.ts +112 -0
  10. package/dist/cjs/dimensional-model/filters/helpers.js +178 -0
  11. package/dist/cjs/dimensional-model/filters/index.d.ts +2 -0
  12. package/dist/cjs/dimensional-model/filters/index.js +18 -0
  13. package/dist/cjs/dimensional-model/filters/utils/attribute-measure-util.d.ts +1 -35
  14. package/dist/cjs/dimensional-model/filters/utils/attribute-measure-util.js +37 -101
  15. package/dist/cjs/dimensional-model/interfaces.d.ts +2 -0
  16. package/dist/cjs/dimensional-model/measures/factory.js +1 -32
  17. package/dist/cjs/dimensional-model/measures/measures.d.ts +3 -3
  18. package/dist/cjs/dimensional-model/measures/measures.js +10 -9
  19. package/dist/cjs/index.d.ts +1 -1
  20. package/dist/cjs/index.js +1 -1
  21. package/dist/cjs/interfaces.d.ts +2 -2
  22. package/dist/cjs/utils.d.ts +74 -2
  23. package/dist/cjs/utils.js +138 -3
  24. package/dist/dimensional-model/attributes.d.ts +2 -2
  25. package/dist/dimensional-model/attributes.js +7 -7
  26. package/dist/dimensional-model/base.d.ts +7 -1
  27. package/dist/dimensional-model/base.js +2 -1
  28. package/dist/dimensional-model/filters/filter-config-utils.d.ts +4 -0
  29. package/dist/dimensional-model/filters/filter-config-utils.js +5 -2
  30. package/dist/dimensional-model/filters/filter-relations.d.ts +187 -0
  31. package/dist/dimensional-model/filters/filter-relations.js +507 -0
  32. package/dist/dimensional-model/filters/helpers.d.ts +112 -0
  33. package/dist/dimensional-model/filters/helpers.js +169 -0
  34. package/dist/dimensional-model/filters/index.d.ts +2 -0
  35. package/dist/dimensional-model/filters/index.js +2 -0
  36. package/dist/dimensional-model/filters/utils/attribute-measure-util.d.ts +1 -35
  37. package/dist/dimensional-model/filters/utils/attribute-measure-util.js +36 -74
  38. package/dist/dimensional-model/interfaces.d.ts +2 -0
  39. package/dist/dimensional-model/measures/factory.js +2 -30
  40. package/dist/dimensional-model/measures/measures.d.ts +3 -3
  41. package/dist/dimensional-model/measures/measures.js +10 -9
  42. package/dist/index.d.ts +1 -1
  43. package/dist/index.js +1 -1
  44. package/dist/interfaces.d.ts +2 -2
  45. package/dist/tsconfig.prod.cjs.tsbuildinfo +1 -1
  46. package/dist/utils.d.ts +74 -2
  47. package/dist/utils.js +133 -2
  48. package/package.json +4 -3
  49. package/dist/cjs/dimensional-model/filter-relations.d.ts +0 -9
  50. package/dist/cjs/dimensional-model/filter-relations.js +0 -18
  51. package/dist/dimensional-model/filter-relations.d.ts +0 -9
  52. package/dist/dimensional-model/filter-relations.js +0 -14
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.findFilter = exports.withReplacedFilter = exports.withoutFilters = exports.withoutFilter = exports.withAddedFilters = exports.withAddedFilter = void 0;
4
+ const filter_relations_js_1 = require("./filter-relations.js");
5
+ const index_js_1 = require("../../index.js");
6
+ /**
7
+ * Returns a function that adds a filter to existing filters or filter relations.
8
+ *
9
+ * @param filter - The filter to add.
10
+ * @returns A function that takes existing filters or filter relations and returns updated filters or filter relations with the new filter added.
11
+ * @group Filter Utilities
12
+ * @example
13
+ * ```ts
14
+ * // Using with an array of filters
15
+ * const originalFilters = [filterByAgeRange];
16
+ * const updatedFilters = withAddedFilter(filterByCost)(originalFilters);
17
+ * // [filterByAgeRange, filterByCost]
18
+ *
19
+ * // Using with filter relations
20
+ * const originalFilterRelations = filterFactory.logic.or(filterByAgeRange, filterByRevenue);
21
+ * const updatedFilterRelations = withAddedFilter(filterByCost)(originalFilterRelations);
22
+ * // (filterByAgeRange OR filterByRevenue) AND filterByCost
23
+ * ```
24
+ */
25
+ function withAddedFilter(filter) {
26
+ return (filters) => {
27
+ if ((0, index_js_1.isFilterRelations)(filters)) {
28
+ const { filters: existingFilters, relations } = (0, filter_relations_js_1.splitFiltersAndRelations)(filters);
29
+ const newFilters = [...existingFilters, filter];
30
+ const newRelations = (0, filter_relations_js_1.calculateNewRelations)(existingFilters, relations, newFilters);
31
+ return (0, filter_relations_js_1.combineFiltersAndRelations)(newFilters, newRelations);
32
+ }
33
+ return [...(filters || []), filter];
34
+ };
35
+ }
36
+ exports.withAddedFilter = withAddedFilter;
37
+ /**
38
+ * Returns a function that adds multiple filters to existing filters or filter relations.
39
+ *
40
+ * @param filtersToAdd - An array of filters to add.
41
+ * @returns A function that takes existing filters or filter relations and returns updated filters or filter relations with the new filters added.
42
+ * @group Filter Utilities
43
+ * @example
44
+ * ```ts
45
+ * // Using with an array of filters
46
+ * const originalFilters = [filterByAgeRange];
47
+ * const updatedFilters = withAddedFilters([filterByCost, filterByRevenue])(originalFilters);
48
+ * // [filterByAgeRange, filterByCost, filterByRevenue]
49
+ *
50
+ * // Using with filter relations
51
+ * const originalFilterRelations = filterFactory.logic.or(filterByAgeRange, filterByRevenue);
52
+ * const updatedFilterRelations = withAddedFilters([filterByCost, filterByRevenue])(originalFilterRelations);
53
+ * // (filterByAgeRange OR filterByRevenue) AND filterByCost AND filterByRevenue
54
+ * ```
55
+ */
56
+ function withAddedFilters(filtersToAdd) {
57
+ return (filters) => {
58
+ if ((0, index_js_1.isFilterRelations)(filters)) {
59
+ const { filters: existingFilters, relations } = (0, filter_relations_js_1.splitFiltersAndRelations)(filters);
60
+ const newFilters = [...existingFilters, ...filtersToAdd];
61
+ const newRelations = (0, filter_relations_js_1.calculateNewRelations)(existingFilters, relations, newFilters);
62
+ return (0, filter_relations_js_1.combineFiltersAndRelations)(newFilters, newRelations);
63
+ }
64
+ return [...(filters || []), ...filtersToAdd];
65
+ };
66
+ }
67
+ exports.withAddedFilters = withAddedFilters;
68
+ /**
69
+ * Returns a function that removes a filter from existing filters or filter relations.
70
+ *
71
+ * @param filterToRemove - The filter to remove.
72
+ * @returns A function that takes existing filters or filter relations and returns updated filters or filter relations without the specified filter.
73
+ * @group Filter Utilities
74
+ * @example
75
+ * ```ts
76
+ * // Using with an array of filters
77
+ * const originalFilters = [filterByAgeRange, filterByRevenue, filterByCost];
78
+ * const updatedFilters = withoutFilter(filterByCost)(originalFilters);
79
+ * // [filterByAgeRange, filterByRevenue]
80
+ *
81
+ * // Using with filter relations
82
+ * const originalFilterRelations = filterFactory.logic.or(filterByAgeRange, filterByRevenue);
83
+ * const updatedFiltersRelations = withoutFilter(filterByRevenue)(originalFilterRelations);
84
+ * // filterByAgeRange
85
+ * ```
86
+ */
87
+ function withoutFilter(filterToRemove) {
88
+ return (filters) => {
89
+ if ((0, index_js_1.isFilterRelations)(filters)) {
90
+ const { filters: existingFilters, relations } = (0, filter_relations_js_1.splitFiltersAndRelations)(filters);
91
+ const newFilters = existingFilters.filter((filter) => filter.config.guid !== filterToRemove.config.guid);
92
+ const newRelations = (0, filter_relations_js_1.calculateNewRelations)(existingFilters, relations, newFilters);
93
+ return (0, filter_relations_js_1.combineFiltersAndRelations)(newFilters, newRelations);
94
+ }
95
+ return (filters || []).filter((filter) => filter.config.guid !== filterToRemove.config.guid);
96
+ };
97
+ }
98
+ exports.withoutFilter = withoutFilter;
99
+ /**
100
+ * Returns a function that removes multiple filters from existing filters or filter relations.
101
+ *
102
+ * @param filtersToRemove - An array of filters to remove.
103
+ * @returns A function that takes existing filters or filter relations and returns updated filters or filter relations without the specified filters.
104
+ * @group Filter Utilities
105
+ * @example
106
+ * ```ts
107
+ * // Using with an array of filters
108
+ * const originalFilters = [filterByAgeRange, filterByRevenue, filterByCost];
109
+ * const updatedFilters = withRemovedFilters([filterByRevenue, filterByCost])(originalFilters);
110
+ * // [filterByAgeRange]
111
+ *
112
+ * // Using with filter relations
113
+ * const originalFilterRelations = filterFactory.logic.or(filterByAgeRange, filterByRevenue);
114
+ * const updatedFiltersRelations = withRemovedFilters([filterByRevenue])(originalFilterRelations);
115
+ * // filterByAgeRange
116
+ * ```
117
+ */
118
+ function withoutFilters(filtersToRemove) {
119
+ return (filters) => {
120
+ if ((0, index_js_1.isFilterRelations)(filters)) {
121
+ const { filters: existingFilters, relations } = (0, filter_relations_js_1.splitFiltersAndRelations)(filters);
122
+ const newFilters = existingFilters.filter((filter) => !filtersToRemove.some((filterToRemove) => filter.config.guid === filterToRemove.config.guid));
123
+ const newRelations = (0, filter_relations_js_1.calculateNewRelations)(existingFilters, relations, newFilters);
124
+ return (0, filter_relations_js_1.combineFiltersAndRelations)(newFilters, newRelations);
125
+ }
126
+ return (filters || []).filter((filter) => !filtersToRemove.some((filterToRemove) => filter.config.guid === filterToRemove.config.guid));
127
+ };
128
+ }
129
+ exports.withoutFilters = withoutFilters;
130
+ /**
131
+ * Returns a function that replaces a filter with a new filter in existing filters or filter relations.
132
+ *
133
+ * @param filterToReplace - The filter to replace.
134
+ * @param newFilter - The new filter to use as a replacement.
135
+ * @returns A function that takes existing filters or filter relations and returns updated filters or filter relations with the filter replaced.
136
+ * @group Filter Utilities
137
+ * @example
138
+ * ```ts
139
+ * // Using with an array of filters
140
+ * const originalFilters = [filterByAgeRange, filterByRevenue];
141
+ * const updatedFilters = withReplacedFilter(filterByRevenue, filterByCost)(originalFilters);
142
+ * // [filterByAgeRange, filterByCost]
143
+ *
144
+ * // Using with filter relations
145
+ * const originalFilterRelations = filterFactory.logic.or(filterByAgeRange, filterByRevenue);
146
+ * const updatedFilterRelations = withReplacedFilter(filterByRevenue, filterByCost)(originalFilterRelations);
147
+ * // (filterByAgeRange OR filterByCost)
148
+ * ```
149
+ */
150
+ function withReplacedFilter(filterToReplace, newFilter) {
151
+ return (filters) => {
152
+ if ((0, index_js_1.isFilterRelations)(filters)) {
153
+ const { filters: existingFilters, relations } = (0, filter_relations_js_1.splitFiltersAndRelations)(filters);
154
+ const newFilters = existingFilters.map((filter) => filter.config.guid === filterToReplace.config.guid ? newFilter : filter);
155
+ const newRelations = (0, filter_relations_js_1.getRelationsWithReplacedFilter)(relations, filterToReplace, newFilter);
156
+ return (0, filter_relations_js_1.combineFiltersAndRelations)(newFilters, newRelations);
157
+ }
158
+ return (filters || []).map((filter) => filter.config.guid === filterToReplace.config.guid ? newFilter : filter);
159
+ };
160
+ }
161
+ exports.withReplacedFilter = withReplacedFilter;
162
+ /**
163
+ * Finds a filter in an array of filters or filter relations.
164
+ * Returns the first filter that satisfies the provided search function.
165
+ * @group Filter Utilities
166
+ * @param filters - An array of filters or filter relations to search.
167
+ * @param searchFn - A function that takes a filter and returns a boolean indicating whether the filter satisfies the search criteria.
168
+ * @returns The first filter that satisfies the search function, or `undefined` if no filter is found.
169
+ *
170
+ */
171
+ function findFilter(filters, searchFn) {
172
+ if (!filters) {
173
+ return undefined;
174
+ }
175
+ const filtersArray = (0, index_js_1.isFilterRelations)(filters) ? (0, filter_relations_js_1.getFiltersArray)(filters) : filters;
176
+ return filtersArray.find(searchFn);
177
+ }
178
+ exports.findFilter = findFilter;
@@ -0,0 +1,2 @@
1
+ export * from './filter-relations.js';
2
+ export * from './helpers.js';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./filter-relations.js"), exports);
18
+ __exportStar(require("./helpers.js"), exports);
@@ -1,19 +1,6 @@
1
1
  import { Attribute, BaseMeasure, CalculatedMeasure, LevelAttribute } from '../../interfaces.js';
2
2
  import { FilterJaql } from '../../types.js';
3
- import { CustomFormulaJaql, FilterJaqlInternal, JaqlDataSource, RankingFilterJaql } from './types.js';
4
- /**
5
- * Creates an attribute or level attribute from the provided parameters
6
- *
7
- * @param dim - Dimension expression
8
- * @param table - Table name
9
- * @param column - Column name
10
- * @param level - Date level
11
- * @param dataType - Data type
12
- * @param title - Attribute title
13
- * @param dataSource - Jaql data source
14
- * @returns attribute or level attribute
15
- */
16
- export declare const createAttributeHelper: (dim: string, table: string | undefined, column: string | undefined, level: string | undefined, dataType: string, title?: string, dataSource?: JaqlDataSource) => Attribute | LevelAttribute;
3
+ import { CustomFormulaJaql, FilterJaqlInternal, RankingFilterJaql } from './types.js';
17
4
  /**
18
5
  * Creates an attribute or level attribute from the provided filter JAQL object
19
6
  *
@@ -21,27 +8,6 @@ export declare const createAttributeHelper: (dim: string, table: string | undefi
21
8
  * @returns attribute or level attribute
22
9
  */
23
10
  export declare const createAttributeFromFilterJaql: (jaql: FilterJaql | FilterJaqlInternal) => Attribute | LevelAttribute;
24
- /**
25
- * Creates a measure from the provided parameters
26
- *
27
- * @param dim - Dimension expression
28
- * @param table - Table name
29
- * @param column - Column name
30
- * @param level - Date level
31
- * @param dataType - Data type
32
- * @param agg - Aggregation function
33
- * @param title - Measure title
34
- * @param dataSource - data source provided in JAQL
35
- * @returns measure
36
- */
37
- export declare const createMeasureHelper: (dim: string, table: string | undefined, column: string, level: string | undefined, dataType: string, agg: string, title?: string, dataSource?: JaqlDataSource) => BaseMeasure;
38
- /**
39
- * Creates a calculated measure from the provided filter JAQL object
40
- *
41
- * @param jaql - custom formula jaql
42
- * @returns calculated measure
43
- */
44
- export declare const createCalculatedMeasureFromJaql: (jaql: CustomFormulaJaql) => CalculatedMeasure;
45
11
  /**
46
12
  * Creates a measure from the provided filter JAQL object
47
13
  *
@@ -1,68 +1,7 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
2
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.createMeasureFromRankingFilterJaql = exports.createMeasureFromFilterJaql = exports.createCalculatedMeasureFromJaql = exports.createMeasureHelper = exports.createAttributeFromFilterJaql = exports.createAttributeHelper = void 0;
27
- const attributes_js_1 = require("../../attributes.js");
28
- const simple_column_types_js_1 = require("../../simple-column-types.js");
29
- const types_js_1 = require("../../types.js");
30
- const measureFactory = __importStar(require("../../measures/factory.js"));
31
- const factory_js_1 = require("../../measures/factory.js");
32
- const measures_js_1 = require("../../measures/measures.js");
33
- const DATA_MODEL_MODULE_NAME = 'DM';
34
- /**
35
- * Creates an attribute or level attribute from the provided parameters
36
- *
37
- * @param dim - Dimension expression
38
- * @param table - Table name
39
- * @param column - Column name
40
- * @param level - Date level
41
- * @param dataType - Data type
42
- * @param title - Attribute title
43
- * @param dataSource - Jaql data source
44
- * @returns attribute or level attribute
45
- */
46
- const createAttributeHelper = (dim, table, column, level, dataType, title, dataSource) => {
47
- // if table is undefined, extract it from dim
48
- const dimTable = table !== null && table !== void 0 ? table : dim.slice(1, -1).split('.')[0];
49
- // if column is undefined, extract it from dim
50
- const dimColumn = column !== null && column !== void 0 ? column : dim.slice(1, -1).split('.')[1];
51
- if (level) {
52
- const dateLevel = attributes_js_1.DimensionalLevelAttribute.translateJaqlToGranularity({ level });
53
- const format = attributes_js_1.DimensionalLevelAttribute.getDefaultFormatForGranularity(dateLevel);
54
- const levelAttribute = new attributes_js_1.DimensionalLevelAttribute(title !== null && title !== void 0 ? title : dimColumn, dim, dateLevel, format, undefined, undefined, dataSource);
55
- levelAttribute.composeCode = (0, attributes_js_1.normalizeAttributeName)(dimTable, dimColumn, level, DATA_MODEL_MODULE_NAME);
56
- return levelAttribute;
57
- }
58
- const attributeType = (0, simple_column_types_js_1.isNumber)(dataType)
59
- ? types_js_1.MetadataTypes.NumericAttribute
60
- : types_js_1.MetadataTypes.TextAttribute;
61
- const attribute = new attributes_js_1.DimensionalAttribute(title !== null && title !== void 0 ? title : dimColumn, dim, attributeType, undefined, undefined, dataSource);
62
- attribute.composeCode = (0, attributes_js_1.normalizeAttributeName)(dimTable, dimColumn, undefined, DATA_MODEL_MODULE_NAME);
63
- return attribute;
64
- };
65
- exports.createAttributeHelper = createAttributeHelper;
3
+ exports.createMeasureFromRankingFilterJaql = exports.createMeasureFromFilterJaql = exports.createAttributeFromFilterJaql = void 0;
4
+ const utils_js_1 = require("../../../utils.js");
66
5
  /**
67
6
  * Creates an attribute or level attribute from the provided filter JAQL object
68
7
  *
@@ -71,43 +10,19 @@ exports.createAttributeHelper = createAttributeHelper;
71
10
  */
72
11
  const createAttributeFromFilterJaql = (jaql) => {
73
12
  const { dim, table, column, level, datatype, title, datasource: dataSource } = jaql;
74
- return (0, exports.createAttributeHelper)(dim, table, column, level, datatype, title, dataSource);
13
+ return (0, utils_js_1.createAttributeHelper)({
14
+ dim,
15
+ table,
16
+ column,
17
+ dataType: datatype,
18
+ level,
19
+ format: undefined,
20
+ sort: undefined,
21
+ title,
22
+ dataSource,
23
+ });
75
24
  };
76
25
  exports.createAttributeFromFilterJaql = createAttributeFromFilterJaql;
77
- /**
78
- * Creates a measure from the provided parameters
79
- *
80
- * @param dim - Dimension expression
81
- * @param table - Table name
82
- * @param column - Column name
83
- * @param level - Date level
84
- * @param dataType - Data type
85
- * @param agg - Aggregation function
86
- * @param title - Measure title
87
- * @param dataSource - data source provided in JAQL
88
- * @returns measure
89
- */
90
- const createMeasureHelper = (dim, table, column, level, dataType, agg, title, dataSource) => {
91
- const attribute = (0, exports.createAttributeHelper)(dim, table, column, level, dataType, title, dataSource);
92
- const measure = measureFactory.aggregate(attribute, agg, title);
93
- measure.composeCode = `measureFactory.${agg}(${attribute.composeCode})`;
94
- return measure;
95
- };
96
- exports.createMeasureHelper = createMeasureHelper;
97
- /**
98
- * Creates a calculated measure from the provided filter JAQL object
99
- *
100
- * @param jaql - custom formula jaql
101
- * @returns calculated measure
102
- */
103
- const createCalculatedMeasureFromJaql = (jaql) => {
104
- const measure = (0, factory_js_1.transformCustomFormulaJaql)(jaql);
105
- // TBD (SNS-108945)
106
- // Handle preparation of 'composeCode' for formula
107
- measure.composeCode = `'Formula code to be implemented'`;
108
- return measure;
109
- };
110
- exports.createCalculatedMeasureFromJaql = createCalculatedMeasureFromJaql;
111
26
  /**
112
27
  * Creates a measure from the provided filter JAQL object
113
28
  *
@@ -118,7 +33,18 @@ const createMeasureFromFilterJaql = (jaql) => {
118
33
  const { dim, table, column, title, level, datatype: dataType, agg, datasource: dataSource, } = jaql;
119
34
  if (!agg)
120
35
  return undefined;
121
- return (0, exports.createMeasureHelper)(dim, table, column, level, dataType, measures_js_1.DimensionalBaseMeasure.aggregationFromJAQL(agg), title, dataSource);
36
+ return (0, utils_js_1.createMeasureHelper)({
37
+ dim,
38
+ table,
39
+ column,
40
+ dataType,
41
+ agg,
42
+ level,
43
+ format: undefined,
44
+ sort: undefined,
45
+ title,
46
+ dataSource,
47
+ });
122
48
  };
123
49
  exports.createMeasureFromFilterJaql = createMeasureFromFilterJaql;
124
50
  /**
@@ -129,8 +55,18 @@ exports.createMeasureFromFilterJaql = createMeasureFromFilterJaql;
129
55
  */
130
56
  const createMeasureFromRankingFilterJaql = (jaql, rankingMessage) => {
131
57
  if ('formula' in jaql)
132
- return (0, exports.createCalculatedMeasureFromJaql)(jaql);
58
+ return (0, utils_js_1.createCalculatedMeasureHelper)(jaql);
133
59
  const { dim, table, column, level, datatype: dataType, agg } = jaql;
134
- return (0, exports.createMeasureHelper)(dim, table, column, level, dataType, measures_js_1.DimensionalBaseMeasure.aggregationFromJAQL(agg), rankingMessage);
60
+ return (0, utils_js_1.createMeasureHelper)({
61
+ dim,
62
+ table,
63
+ column,
64
+ level,
65
+ dataType,
66
+ agg,
67
+ format: undefined,
68
+ sort: undefined,
69
+ title: rankingMessage,
70
+ });
135
71
  };
136
72
  exports.createMeasureFromRankingFilterJaql = createMeasureFromRankingFilterJaql;
@@ -438,6 +438,7 @@ export declare type FilterConfig = CompleteBaseFilterConfig | CompleteMembersFil
438
438
  export interface Filter extends Element {
439
439
  /**
440
440
  * Attribute this filter instance is filtering
441
+ *
441
442
  * @internal
442
443
  */
443
444
  readonly attribute: Attribute;
@@ -448,6 +449,7 @@ export interface Filter extends Element {
448
449
  /**
449
450
  * Boolean flag whether the filter is a scope filter
450
451
  * which is on a dimension that isn’t used in the query
452
+ *
451
453
  * @internal
452
454
  */
453
455
  isScope: boolean;
@@ -1,15 +1,9 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.rank = exports.forecast = exports.trend = exports.contribution = exports.pastYear = exports.pastQuarter = exports.pastMonth = exports.pastWeek = exports.pastDay = exports.diffPastYear = exports.diffPastQuarter = exports.diffPastMonth = exports.diffPastWeek = exports.difference = exports.growthPastYear = exports.growthPastQuarter = exports.growthPastMonth = exports.growthPastWeek = exports.growthRate = exports.growth = exports.runningSum = exports.weekToDateSum = exports.monthToDateSum = exports.quarterToDateSum = exports.yearToDateSum = exports.divide = exports.multiply = exports.subtract = exports.add = exports.measuredValue = exports.countDistinct = exports.count = exports.median = exports.max = exports.min = exports.avg = exports.average = exports.sum = exports.constant = exports.aggregate = exports.customFormula = exports.transformCustomFormulaJaql = exports.RankingSortTypes = exports.RankingTypes = void 0;
7
4
  const measures_js_1 = require("./measures.js");
8
5
  const types_js_1 = require("../types.js");
9
6
  const base_js_1 = require("../base.js");
10
- const mapValues_js_1 = __importDefault(require("lodash-es/mapValues.js"));
11
- const attributes_js_1 = require("../attributes.js");
12
- const simple_column_types_js_1 = require("./../simple-column-types.js");
13
7
  const utils_js_1 = require("../../utils.js");
14
8
  const translatable_error_js_1 = require("../../translation/translatable-error.js");
15
9
  /**
@@ -81,28 +75,6 @@ function measureFunction(measure, name, func, options) {
81
75
  builder.push(')');
82
76
  return new measures_js_1.DimensionalCalculatedMeasure(name, builder.join(''), context);
83
77
  }
84
- function transformFormulaJaqlHelper(jaql) {
85
- const isFormulaJaql = 'formula' in jaql;
86
- if (isFormulaJaql) {
87
- return transformCustomFormulaJaql(jaql);
88
- }
89
- const sort = (0, utils_js_1.convertSort)(jaql.sort);
90
- const hasAggregation = !!jaql.agg;
91
- const isDatatypeDatetime = (0, simple_column_types_js_1.isDatetime)(jaql.datatype);
92
- const attributeType = (0, simple_column_types_js_1.isNumber)(jaql.datatype)
93
- ? types_js_1.MetadataTypes.NumericAttribute
94
- : types_js_1.MetadataTypes.TextAttribute;
95
- const attribute = isDatatypeDatetime
96
- ? new attributes_js_1.DimensionalLevelAttribute(jaql.title, jaql.dim, attributes_js_1.DimensionalLevelAttribute.translateJaqlToGranularity(jaql), undefined, undefined, sort)
97
- : new attributes_js_1.DimensionalAttribute(jaql.title, jaql.dim, attributeType, undefined, sort);
98
- if (hasAggregation) {
99
- return new measures_js_1.DimensionalBaseMeasure(jaql.title, attribute, measures_js_1.DimensionalBaseMeasure.aggregationFromJAQL(jaql.agg || ''), undefined, undefined, sort);
100
- }
101
- if ('filter' in jaql) {
102
- return (0, utils_js_1.createFilterFromJaql)(jaql);
103
- }
104
- return attribute;
105
- }
106
78
  /**
107
79
  * Transforms a custom formula jaql into a calculated measure instance.
108
80
  *
@@ -113,14 +85,11 @@ function transformFormulaJaqlHelper(jaql) {
113
85
  * @internal
114
86
  */
115
87
  function transformCustomFormulaJaql(jaql) {
116
- var _a;
117
88
  const isFormulaJaql = 'formula' in jaql;
118
89
  if (!isFormulaJaql) {
119
90
  throw new translatable_error_js_1.TranslatableError('errors.measure.notAFormula');
120
91
  }
121
- const sort = (0, utils_js_1.convertSort)(jaql.sort);
122
- const context = (0, mapValues_js_1.default)((_a = jaql.context) !== null && _a !== void 0 ? _a : {}, (jaqlContextValue) => jaqlContextValue ? transformFormulaJaqlHelper(jaqlContextValue) : {});
123
- return new measures_js_1.DimensionalCalculatedMeasure(jaql.title, jaql.formula, context, undefined, undefined, sort);
92
+ return (0, utils_js_1.createCalculatedMeasureHelper)(jaql);
124
93
  }
125
94
  exports.transformCustomFormulaJaql = transformCustomFormulaJaql;
126
95
  /**
@@ -7,7 +7,7 @@ import { DimensionalElement } from '../base.js';
7
7
  export declare abstract class AbstractMeasure extends DimensionalElement {
8
8
  protected _sort: Sort;
9
9
  protected _format: string | undefined;
10
- constructor(name: string, type: string, format?: string, desc?: string, sort?: Sort);
10
+ constructor(name: string, type: string, format?: string, desc?: string, sort?: Sort, composeCode?: string);
11
11
  /**
12
12
  * gets the element's ID
13
13
  */
@@ -51,7 +51,7 @@ export declare abstract class AbstractMeasure extends DimensionalElement {
51
51
  export declare class DimensionalBaseMeasure extends AbstractMeasure implements BaseMeasure {
52
52
  static aggregationFromJAQL(agg: string): string;
53
53
  static aggregationToJAQL(agg: string): string;
54
- constructor(name: string, attribute: Attribute, agg: string, format?: string, desc?: string, sort?: Sort);
54
+ constructor(name: string, attribute: Attribute, agg: string, format?: string, desc?: string, sort?: Sort, composeCode?: string);
55
55
  /**
56
56
  * Aggregating attribute
57
57
  */
@@ -93,7 +93,7 @@ export declare class DimensionalBaseMeasure extends AbstractMeasure implements B
93
93
  * @internal
94
94
  */
95
95
  export declare class DimensionalCalculatedMeasure extends AbstractMeasure implements CalculatedMeasure {
96
- constructor(name: string, expression: string, context: MeasureContext, format?: string, desc?: string, sort?: Sort);
96
+ constructor(name: string, expression: string, context: MeasureContext, format?: string, desc?: string, sort?: Sort, composeCode?: string);
97
97
  /**
98
98
  * Defines the Calculated measure's expression
99
99
  */
@@ -41,12 +41,13 @@ const translatable_error_js_1 = require("../../translation/translatable-error.js
41
41
  * @internal
42
42
  */
43
43
  class AbstractMeasure extends base_js_1.DimensionalElement {
44
- constructor(name, type, format, desc, sort) {
44
+ constructor(name, type, format, desc, sort, composeCode) {
45
45
  super(name, type, desc);
46
46
  this._sort = types_js_1.Sort.None;
47
47
  this._format = '#,#.00';
48
48
  this._format = format;
49
49
  this._sort = sort || types_js_1.Sort.None;
50
+ this.composeCode = composeCode;
50
51
  }
51
52
  /**
52
53
  * Gets the sort definition of this instance
@@ -85,8 +86,8 @@ exports.AbstractMeasure = AbstractMeasure;
85
86
  * @internal
86
87
  */
87
88
  class DimensionalBaseMeasure extends AbstractMeasure {
88
- constructor(name, attribute, agg, format, desc, sort) {
89
- super(name, types_js_1.MetadataTypes.BaseMeasure, format, desc, sort);
89
+ constructor(name, attribute, agg, format, desc, sort, composeCode) {
90
+ super(name, types_js_1.MetadataTypes.BaseMeasure, format, desc, sort, composeCode);
90
91
  this.attribute = attribute;
91
92
  this.aggregation = agg;
92
93
  }
@@ -143,7 +144,7 @@ class DimensionalBaseMeasure extends AbstractMeasure {
143
144
  * @returns An instance representing the sorted {@link Measure} of this instance
144
145
  */
145
146
  sort(sort) {
146
- return new DimensionalBaseMeasure(this.name, this.attribute, this.aggregation, this._format, this.description, sort);
147
+ return new DimensionalBaseMeasure(this.name, this.attribute, this.aggregation, this._format, this.description, sort, this.composeCode);
147
148
  }
148
149
  /**
149
150
  * Gets a formatted {@link Measure} with the given definition
@@ -154,7 +155,7 @@ class DimensionalBaseMeasure extends AbstractMeasure {
154
155
  * @returns An instance representing the formatted {@link Measure} of this instance
155
156
  */
156
157
  format(format) {
157
- return new DimensionalBaseMeasure(this.name, this.attribute, this.aggregation, format, this.description, this._sort);
158
+ return new DimensionalBaseMeasure(this.name, this.attribute, this.aggregation, format, this.description, this._sort, this.composeCode);
158
159
  }
159
160
  /**
160
161
  * gets the element's ID
@@ -193,8 +194,8 @@ exports.DimensionalBaseMeasure = DimensionalBaseMeasure;
193
194
  * @internal
194
195
  */
195
196
  class DimensionalCalculatedMeasure extends AbstractMeasure {
196
- constructor(name, expression, context, format, desc, sort) {
197
- super(name, types_js_1.MetadataTypes.CalculatedMeasure, format, desc, sort);
197
+ constructor(name, expression, context, format, desc, sort, composeCode) {
198
+ super(name, types_js_1.MetadataTypes.CalculatedMeasure, format, desc, sort, composeCode);
198
199
  this.expression = expression;
199
200
  this.context = context;
200
201
  }
@@ -205,7 +206,7 @@ class DimensionalCalculatedMeasure extends AbstractMeasure {
205
206
  * @returns An instance representing the sorted {@link Measure} of this instance
206
207
  */
207
208
  sort(sort) {
208
- return new DimensionalCalculatedMeasure(this.name, this.expression, this.context, this._format, this.description, sort);
209
+ return new DimensionalCalculatedMeasure(this.name, this.expression, this.context, this._format, this.description, sort, this.composeCode);
209
210
  }
210
211
  /**
211
212
  * Gets a formatted {@link Measure} with the given definition
@@ -216,7 +217,7 @@ class DimensionalCalculatedMeasure extends AbstractMeasure {
216
217
  * @returns An instance representing the formatted {@link Measure} of this instance
217
218
  */
218
219
  format(format) {
219
- return new DimensionalCalculatedMeasure(this.name, this.expression, this.context, format, this.description, this._sort);
220
+ return new DimensionalCalculatedMeasure(this.name, this.expression, this.context, format, this.description, this._sort, this.composeCode);
220
221
  }
221
222
  /**
222
223
  * gets the element's ID
@@ -86,7 +86,6 @@ export * from './dimensional-model/measures/measures.js';
86
86
  */
87
87
  export * as measureFactory from './dimensional-model/measures/factory.js';
88
88
  export * from './dimensional-model/simple-column-types.js';
89
- export * from './dimensional-model/filter-relations.js';
90
89
  /**
91
90
  * Functions to create elements for advanced analytics – for example, attributes and measures for constructing a custom Boxplot chart
92
91
  *
@@ -94,4 +93,5 @@ export * from './dimensional-model/filter-relations.js';
94
93
  */
95
94
  export * as analyticsFactory from './dimensional-model/analytics/factory.js';
96
95
  export * from './utils.js';
96
+ export * from './dimensional-model/filters/index.js';
97
97
  export { type TranslationDictionary, PACKAGE_NAMESPACE as translationNamespace, } from './translation/resources/index.js';
package/dist/cjs/index.js CHANGED
@@ -116,7 +116,6 @@ __exportStar(require("./dimensional-model/measures/measures.js"), exports);
116
116
  */
117
117
  exports.measureFactory = __importStar(require("./dimensional-model/measures/factory.js"));
118
118
  __exportStar(require("./dimensional-model/simple-column-types.js"), exports);
119
- __exportStar(require("./dimensional-model/filter-relations.js"), exports);
120
119
  /**
121
120
  * Functions to create elements for advanced analytics – for example, attributes and measures for constructing a custom Boxplot chart
122
121
  *
@@ -124,5 +123,6 @@ __exportStar(require("./dimensional-model/filter-relations.js"), exports);
124
123
  */
125
124
  exports.analyticsFactory = __importStar(require("./dimensional-model/analytics/factory.js"));
126
125
  __exportStar(require("./utils.js"), exports);
126
+ __exportStar(require("./dimensional-model/filters/index.js"), exports);
127
127
  var index_js_1 = require("./translation/resources/index.js");
128
128
  Object.defineProperty(exports, "translationNamespace", { enumerable: true, get: function () { return index_js_1.PACKAGE_NAMESPACE; } });
@@ -134,11 +134,11 @@ export interface CalculatedMeasureColumn {
134
134
  export declare type DataSourceInfo = {
135
135
  /**
136
136
  * @internal
137
- **/
137
+ */
138
138
  id?: string;
139
139
  /**
140
140
  * @internal
141
- **/
141
+ */
142
142
  address?: string;
143
143
  title: string;
144
144
  type: 'live' | 'elasticube';