@qrvey/utils 1.11.0-8 → 1.11.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 (46) hide show
  1. package/README.md +2876 -2083
  2. package/dist/cjs/filters/helpers/common/getMergeFiltersSettings.js +7 -4
  3. package/dist/cjs/filters/helpers/common/mergeFilters.d.ts +9 -6
  4. package/dist/cjs/filters/helpers/common/mergeFilters.js +82 -43
  5. package/dist/cjs/filters/helpers/common/resolveScopeConditions.d.ts +2 -2
  6. package/dist/cjs/filters/helpers/common/resolveScopeConditions.js +2 -2
  7. package/dist/cjs/filters/helpers/getTokensFromFilters.js +6 -0
  8. package/dist/cjs/filters/interfaces/IFTokensFromFiltersSettings.d.ts +2 -0
  9. package/dist/cjs/filters/interfaces/functions/IFFiltersMergeFilters.d.ts +21 -2
  10. package/dist/cjs/globalization/interfaces/formula_builder/II18nFormulaBuilderCreateModal.d.ts +1 -0
  11. package/dist/cjs/globalization/interfaces/formula_builder/II18nFormulaBuilderErrorMessage.d.ts +6 -0
  12. package/dist/cjs/globalization/interfaces/formula_builder/II18nFormulaBuilderFunctionAnd.d.ts +9 -0
  13. package/dist/cjs/globalization/interfaces/formula_builder/II18nFormulaBuilderFunctionAnd.js +2 -0
  14. package/dist/cjs/globalization/interfaces/formula_builder/index.d.ts +1 -0
  15. package/dist/cjs/globalization/interfaces/formula_builder/index.js +1 -0
  16. package/dist/cjs/globalization/interfaces/panel/II18nPanelErrors.d.ts +1 -0
  17. package/dist/cjs/globalization/labels/chart_builder/I18N_CHART_BUILDER_GENERAL_OPTIONS.js +1 -1
  18. package/dist/cjs/globalization/labels/formula_builder/I18N_FORMULA_BUILDER.js +79 -1
  19. package/dist/cjs/globalization/labels/formula_builder/I18N_FORMULA_BUILDER_FUNCTION_AND.d.ts +2 -0
  20. package/dist/cjs/globalization/labels/formula_builder/I18N_FORMULA_BUILDER_FUNCTION_AND.js +13 -0
  21. package/dist/cjs/globalization/labels/formula_builder/index.d.ts +1 -0
  22. package/dist/cjs/globalization/labels/formula_builder/index.js +1 -0
  23. package/dist/cjs/globalization/labels/panel/I18N_PANEL.js +1 -0
  24. package/dist/filters/helpers/common/getMergeFiltersSettings.js +7 -4
  25. package/dist/filters/helpers/common/mergeFilters.d.ts +9 -6
  26. package/dist/filters/helpers/common/mergeFilters.js +82 -43
  27. package/dist/filters/helpers/common/resolveScopeConditions.d.ts +2 -2
  28. package/dist/filters/helpers/common/resolveScopeConditions.js +2 -2
  29. package/dist/filters/helpers/getTokensFromFilters.js +6 -0
  30. package/dist/filters/interfaces/IFTokensFromFiltersSettings.d.ts +2 -0
  31. package/dist/filters/interfaces/functions/IFFiltersMergeFilters.d.ts +21 -2
  32. package/dist/globalization/interfaces/formula_builder/II18nFormulaBuilderCreateModal.d.ts +1 -0
  33. package/dist/globalization/interfaces/formula_builder/II18nFormulaBuilderErrorMessage.d.ts +6 -0
  34. package/dist/globalization/interfaces/formula_builder/II18nFormulaBuilderFunctionAnd.d.ts +9 -0
  35. package/dist/globalization/interfaces/formula_builder/II18nFormulaBuilderFunctionAnd.js +1 -0
  36. package/dist/globalization/interfaces/formula_builder/index.d.ts +1 -0
  37. package/dist/globalization/interfaces/formula_builder/index.js +1 -0
  38. package/dist/globalization/interfaces/panel/II18nPanelErrors.d.ts +1 -0
  39. package/dist/globalization/labels/chart_builder/I18N_CHART_BUILDER_GENERAL_OPTIONS.js +1 -1
  40. package/dist/globalization/labels/formula_builder/I18N_FORMULA_BUILDER.js +79 -1
  41. package/dist/globalization/labels/formula_builder/I18N_FORMULA_BUILDER_FUNCTION_AND.d.ts +2 -0
  42. package/dist/globalization/labels/formula_builder/I18N_FORMULA_BUILDER_FUNCTION_AND.js +10 -0
  43. package/dist/globalization/labels/formula_builder/index.d.ts +1 -0
  44. package/dist/globalization/labels/formula_builder/index.js +1 -0
  45. package/dist/globalization/labels/panel/I18N_PANEL.js +1 -0
  46. package/package.json +1 -1
@@ -7,11 +7,14 @@ exports.getMergeFiltersSettings = void 0;
7
7
  * @returns a new MergeFilters settings object.
8
8
  */
9
9
  function getMergeFiltersSettings(settings) {
10
- var _a, _b, _c;
10
+ var _a, _b, _c, _d, _e;
11
11
  return {
12
- overwriteFilterProps: (_a = settings === null || settings === void 0 ? void 0 : settings.overwriteFilterProps) !== null && _a !== void 0 ? _a : true,
13
- overwriteValues: (_b = settings === null || settings === void 0 ? void 0 : settings.overwriteValues) !== null && _b !== void 0 ? _b : false,
14
- setGroupedColumnOperator: (_c = settings === null || settings === void 0 ? void 0 : settings.setGroupedColumnOperator) !== null && _c !== void 0 ? _c : true,
12
+ mergeFilterDataProps: (_a = settings === null || settings === void 0 ? void 0 : settings.mergeFilterDataProps) !== null && _a !== void 0 ? _a : true,
13
+ mergeScopeProps: (_b = settings === null || settings === void 0 ? void 0 : settings.mergeScopeProps) !== null && _b !== void 0 ? _b : true,
14
+ mergeDatasetProps: (_c = settings === null || settings === void 0 ? void 0 : settings.mergeDatasetProps) !== null && _c !== void 0 ? _c : true,
15
+ mergeFilterProps: (_d = settings === null || settings === void 0 ? void 0 : settings.mergeFilterProps) !== null && _d !== void 0 ? _d : true,
16
+ overwriteValues: (_e = settings === null || settings === void 0 ? void 0 : settings.overwriteValues) !== null && _e !== void 0 ? _e : false,
17
+ setGroupedColumnOperator: settings === null || settings === void 0 ? void 0 : settings.setGroupedColumnOperator,
15
18
  };
16
19
  }
17
20
  exports.getMergeFiltersSettings = getMergeFiltersSettings;
@@ -2,10 +2,13 @@ import { IFSData } from "../../interfaces/common/IFSData";
2
2
  import { IFFiltersMergeFilters } from "../../interfaces/functions/IFFiltersMergeFilters";
3
3
  import { IFUData } from "../../interfaces/ui/IFUData";
4
4
  /**
5
- * Merge filter data structures in a new one. The first Filter Data passed in the argument has the priority
6
- * @param filterData1 The target filter data
7
- * @param filterData2 the filter data to be merged
8
- * @param settings configuration of the mergeFilter
9
- * @returns a new filter data structure
5
+ * Merges the second filter data into the first one; the first Filter Data passed in the argument has the priority.
6
+ * Conditions:
7
+ * - If the info in the second filter data does not exist in the first one, the info will be added
8
+ * - If the info in the second filter data exists in the first one, the info will be merged
9
+ * @param {IFUData} filterData1 The target filter data
10
+ * @param {IFUData} filterData2 the filter data to be merged
11
+ * @param {IFFiltersMergeFilters} settings configuration of the mergeFilters
12
+ * @returns {IFUData} a new filter data structure
10
13
  */
11
- export declare function mergeFilters(filterData1: IFSData | IFUData, filterData2: IFSData | IFUData, settings?: IFFiltersMergeFilters): IFSData | IFUData;
14
+ export declare function mergeFilters(filterData1: IFUData | IFSData, filterData2: IFUData | IFSData, settings?: IFFiltersMergeFilters): IFUData | IFSData;
@@ -2,8 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.mergeFilters = void 0;
4
4
  const isEmpty_1 = require("../../../general/mix/isEmpty");
5
- const cloneDeep_1 = require("../../../general/object/cloneDeep");
6
- const FILTER_GROUPED_COLUMN_OPERATOR_1 = require("../../constants/common/FILTER_GROUPED_COLUMN_OPERATOR");
5
+ const mergeDeep_1 = require("../../../general/object/mergeDeep");
6
+ const objectCopy_1 = require("../../../general/object/objectCopy");
7
7
  const getFilterid_1 = require("./getFilterid");
8
8
  const getMergeFiltersSettings_1 = require("./getMergeFiltersSettings");
9
9
  const mergeValues_1 = require("./mergeValues");
@@ -11,13 +11,17 @@ const resolveDatasetConditions_1 = require("./resolveDatasetConditions");
11
11
  const resolveFilterConditions_1 = require("./resolveFilterConditions");
12
12
  const resolveScopeConditions_1 = require("./resolveScopeConditions");
13
13
  /**
14
- * Merge filter data structures in a new one. The first Filter Data passed in the argument has the priority
15
- * @param filterData1 The target filter data
16
- * @param filterData2 the filter data to be merged
17
- * @param settings configuration of the mergeFilter
18
- * @returns a new filter data structure
14
+ * Merges the second filter data into the first one; the first Filter Data passed in the argument has the priority.
15
+ * Conditions:
16
+ * - If the info in the second filter data does not exist in the first one, the info will be added
17
+ * - If the info in the second filter data exists in the first one, the info will be merged
18
+ * @param {IFUData} filterData1 The target filter data
19
+ * @param {IFUData} filterData2 the filter data to be merged
20
+ * @param {IFFiltersMergeFilters} settings configuration of the mergeFilters
21
+ * @returns {IFUData} a new filter data structure
19
22
  */
20
23
  function mergeFilters(filterData1, filterData2, settings) {
24
+ var _a;
21
25
  if ((0, isEmpty_1.isEmpty)(filterData1) || (0, isEmpty_1.isEmpty)(filterData1.scopes)) {
22
26
  if ((0, isEmpty_1.isEmpty)(filterData2) || (0, isEmpty_1.isEmpty)(filterData2.scopes))
23
27
  return;
@@ -25,23 +29,29 @@ function mergeFilters(filterData1, filterData2, settings) {
25
29
  }
26
30
  if ((0, isEmpty_1.isEmpty)(filterData2) || (0, isEmpty_1.isEmpty)(filterData2.scopes))
27
31
  return filterData1;
28
- const _filterData1 = (0, cloneDeep_1.cloneDeep)(filterData1);
29
- const _filterData2 = (0, cloneDeep_1.cloneDeep)(filterData2);
32
+ const newFilterData1 = (0, objectCopy_1.objectCopy)(filterData1);
33
+ const newFilterData2 = (0, objectCopy_1.objectCopy)(filterData2);
30
34
  const defaultSettings = (0, getMergeFiltersSettings_1.getMergeFiltersSettings)(settings);
31
- return {
32
- enabled: _filterData1.enabled,
33
- scopes: mergeScopes(_filterData1.scopes, _filterData2.scopes, defaultSettings),
34
- section: _filterData1.section,
35
- version: _filterData1.version,
36
- };
35
+ const scopes = mergeScopes(newFilterData1.scopes, newFilterData2.scopes, defaultSettings);
36
+ if (defaultSettings.mergeFilterDataProps) {
37
+ return {
38
+ enabled: (_a = newFilterData2.enabled) !== null && _a !== void 0 ? _a : newFilterData1.enabled,
39
+ section: newFilterData2.section || newFilterData1.section,
40
+ scopes,
41
+ version: newFilterData2.version || newFilterData1.version,
42
+ };
43
+ }
44
+ return Object.assign(Object.assign({}, newFilterData1), { scopes });
37
45
  }
38
46
  exports.mergeFilters = mergeFilters;
39
47
  /**
40
- * Gets a new scope structure array by merging two scope structures
41
- * @param scopes1 the target scope structure
42
- * @param scopes2 the scope to be merged
43
- * @param settings configuration of the mergeFilter
44
- * @returns a new scope structure array
48
+ * Gets a new scope array structure by merging both scope structures
49
+ * - If the info in the second scope does not exist in the first one, the scope will be added
50
+ * - If the info in the second scope exists in the first one, the scope will be merged
51
+ * @param {IFUScope[]} scopes1 the target scope structure
52
+ * @param {IFUScope[]} scopes2 the scope to be merged
53
+ * @param {IFFiltersMergeFilters} settings configuration of the mergeFilters
54
+ * @returns {IFUScope[]} a new scope array structure
45
55
  */
46
56
  function mergeScopes(scopes1 = [], scopes2 = [], settings) {
47
57
  let newScopes = scopes1.reduce((scopes, scope1) => {
@@ -51,7 +61,7 @@ function mergeScopes(scopes1 = [], scopes2 = [], settings) {
51
61
  }));
52
62
  let _scope1 = scope1;
53
63
  if (scope2Index > -1) {
54
- _scope1 = Object.assign(Object.assign({}, scopes2[scope2Index]), { datasets: mergeDatasets(scope1.datasets, scopes2[scope2Index].datasets, settings) });
64
+ _scope1 = Object.assign(Object.assign({}, mergeScopeProps(scope1, scopes2[scope2Index], settings)), { datasets: mergeDatasets(scope1.datasets, scopes2[scope2Index].datasets, settings) });
55
65
  scopes2.splice(scope2Index, 1);
56
66
  }
57
67
  scopes.push(_scope1);
@@ -62,11 +72,13 @@ function mergeScopes(scopes1 = [], scopes2 = [], settings) {
62
72
  return newScopes;
63
73
  }
64
74
  /**
65
- * Gets a new dataset structure array by merging two dataset structures
66
- * @param datasets1 the target dataset structure
67
- * @param datasets2 the dataset to be merged
68
- * @param settings configuration of the mergeFilter
69
- * @returns a new dataset structure array
75
+ * Gets a new dataset structure array by merging both dataset structures
76
+ * - If the info in the second dataset does not exist in the first one, the dataset will be added
77
+ * - If the info in the second dataset exists in the first one, the dataset will be merged
78
+ * @param {IFUDataset[]} datasets1 the target dataset structure
79
+ * @param {IFUDataset[]} datasets2 the dataset to be merged
80
+ * @param {IFFiltersMergeFilters} settings configuration of the mergeFilter
81
+ * @returns {IFUDataset[]} a new dataset structure array
70
82
  */
71
83
  function mergeDatasets(datasets1 = [], datasets2 = [], settings) {
72
84
  let newDatasets = datasets1.reduce((datasets, dataset1) => {
@@ -75,7 +87,7 @@ function mergeDatasets(datasets1 = [], datasets2 = [], settings) {
75
87
  }));
76
88
  let _dataset1 = dataset1;
77
89
  if (dataset2Index > -1) {
78
- _dataset1 = Object.assign(Object.assign({}, datasets2[dataset2Index]), { filters: mergeFilterss(dataset1.filters, datasets2[dataset2Index].filters, settings) });
90
+ _dataset1 = Object.assign(Object.assign({}, mergeDatasetProps(dataset1, datasets2[dataset2Index], settings)), { filters: mergeFilterss(dataset1.filters, datasets2[dataset2Index].filters, settings) });
79
91
  datasets2.splice(dataset2Index, 1);
80
92
  }
81
93
  datasets.push(_dataset1);
@@ -87,10 +99,10 @@ function mergeDatasets(datasets1 = [], datasets2 = [], settings) {
87
99
  }
88
100
  /**
89
101
  * Gets a new filter structure array by merging two filter structures
90
- * @param filters1 the target filter structure
91
- * @param filters2 the filter to be merged
92
- * @param settings configuration of the mergeFilter
93
- * @returns a new filter structure array
102
+ * @param {IFUFilter[]} filters1 the target filter structure
103
+ * @param {IFUFilter[]} filters2 the filter to be merged
104
+ * @param {IFFiltersMergeFilters} settings configuration of the mergeFilters
105
+ * @returns {IFUFilter[]} a new filter structure array
94
106
  */
95
107
  function mergeFilterss(filters1 = [], filters2 = [], settings) {
96
108
  let newFilters = filters1.reduce((filters, filter1) => {
@@ -103,14 +115,11 @@ function mergeFilterss(filters1 = [], filters2 = [], settings) {
103
115
  }));
104
116
  let _filter1 = filter1;
105
117
  if (filter2Index > -1) {
106
- _filter1 = Object.assign(Object.assign({}, _filter1), { values: (0, mergeValues_1.mergeValues)(_filter1, filters2[filter2Index], settings) });
107
- _filter1 = mergeFilterProps(_filter1, filters2[filter2Index], settings);
118
+ _filter1 = Object.assign(Object.assign(Object.assign({}, _filter1), mergeFilterProps(_filter1, filters2[filter2Index], settings)), { values: (0, mergeValues_1.mergeValues)(_filter1, filters2[filter2Index], settings) });
108
119
  filters2.splice(filter2Index, 1);
109
120
  }
110
- else {
111
- _filter1 = Object.assign(Object.assign({}, _filter1), { operator: settings.setGroupedColumnOperator
112
- ? FILTER_GROUPED_COLUMN_OPERATOR_1.FILTER_GROUPED_COLUMN_OPERATOR
113
- : _filter1.operator });
121
+ else if (!(0, isEmpty_1.isEmpty)(settings.setGroupedColumnOperator)) {
122
+ _filter1.operator = settings.setGroupedColumnOperator;
114
123
  }
115
124
  _filter1.filterid = (0, getFilterid_1.getFilterid)(_filter1);
116
125
  filters.push(_filter1);
@@ -121,17 +130,47 @@ function mergeFilterss(filters1 = [], filters2 = [], settings) {
121
130
  return newFilters;
122
131
  }
123
132
  /**
124
- * Gets a new filter structure when the setting is configured
125
- * @param filter1 the target filter structure
126
- * @param filter2 the filter to be used to merge the values
127
- * @param settings configuration of the mergeFilter
133
+ * Gets a new scope structure for the configured settings
134
+ * @param {IFUScope} scope1 the target scope structure
135
+ * @param {IFUScope} scope2 the scope to be used to merge the values
136
+ * @param {IFFiltersMergeFilters} settings configuration of the mergeFilters
137
+ * @returns {IFUScope} a new filter structure with overwritted props
138
+ */
139
+ function mergeScopeProps(scope1, scope2, settings) {
140
+ var _a, _b, _c;
141
+ let _scope1 = scope1;
142
+ if (settings.mergeScopeProps) {
143
+ _scope1 = Object.assign(Object.assign({}, scope1), { collapsed: (_a = scope2.collapsed) !== null && _a !== void 0 ? _a : scope1.collapsed, displayed: (_b = scope2.displayed) !== null && _b !== void 0 ? _b : scope1.displayed, enabled: (_c = scope2.enabled) !== null && _c !== void 0 ? _c : scope1.enabled, label: scope2.label || scope1.label, scope: scope2.scope || scope1.scope, scopeid: scope2.scopeid || scope1.scopeid });
144
+ }
145
+ return _scope1;
146
+ }
147
+ /**
148
+ * Gets a new dataset structure for the configured settings
149
+ * @param {IFUDataset} dataset1 the target dataset structure
150
+ * @param {IFUDataset} dataset2 the dataset to be used to merge the values
151
+ * @param {IFFiltersMergeFilters} settings configuration of the mergeFilters
152
+ * @returns {IFUDataset} a new filter structure with overwritted props
153
+ */
154
+ function mergeDatasetProps(dataset1, dataset2, settings) {
155
+ var _a, _b, _c;
156
+ let _dataset1 = dataset1;
157
+ if (settings.mergeDatasetProps) {
158
+ _dataset1 = Object.assign(Object.assign({}, dataset1), { collapsed: (_a = dataset2.collapsed) !== null && _a !== void 0 ? _a : dataset1.collapsed, displayed: (_b = dataset2.displayed) !== null && _b !== void 0 ? _b : dataset1.displayed, enabled: (_c = dataset2.enabled) !== null && _c !== void 0 ? _c : dataset1.enabled, label: dataset2.label || dataset1.label, qrveyid: dataset2.qrveyid || dataset1.qrveyid });
159
+ }
160
+ return _dataset1;
161
+ }
162
+ /**
163
+ * Gets a new filter structure for the configured settings
164
+ * @param {IFUFilter} filter1 the target filter structure
165
+ * @param {IFUFilter} filter2 the filter to be used to merge the values
166
+ * @param {IFFiltersMergeFilters} settings configuration of the mergeFilters
128
167
  * @returns a new filter structure with overwritted props
129
168
  */
130
169
  function mergeFilterProps(filter1, filter2, settings) {
131
170
  var _a, _b, _c;
132
171
  let _filter1 = filter1;
133
- if (settings.overwriteFilterProps) {
134
- _filter1 = Object.assign(Object.assign({}, filter1), { collapsed: (_a = filter2.collapsed) !== null && _a !== void 0 ? _a : filter1.collapsed, displayed: (_b = filter2.displayed) !== null && _b !== void 0 ? _b : filter1.displayed, dateSection: filter2.dateSection, extras: filter2.extras, enabled: (_c = filter2.enabled) !== null && _c !== void 0 ? _c : filter1.enabled, operator: filter2.operator || filter1.operator, filterid: filter2.filterid, lookupDisplayIndex: filter2.lookupDisplayIndex, nullValues: filter2.nullValues, selectAll: filter2.selectAll });
172
+ if (settings.mergeFilterProps) {
173
+ _filter1 = Object.assign(Object.assign({}, filter1), { collapsed: (_a = filter2.collapsed) !== null && _a !== void 0 ? _a : filter1.collapsed, column: (0, mergeDeep_1.mergeDeep)(filter2.column, filter1.column), displayed: (_b = filter2.displayed) !== null && _b !== void 0 ? _b : filter1.displayed, dateSection: filter2.dateSection, extras: filter2.extras, enabled: (_c = filter2.enabled) !== null && _c !== void 0 ? _c : filter1.enabled, lookupDisplayIndex: filter2.lookupDisplayIndex, nullValues: filter2.nullValues, property: filter2.property || filter1.property, operator: filter2.operator || filter1.operator, selectAll: filter2.selectAll, validator: filter2.validator || filter1.validator });
135
174
  }
136
175
  return _filter1;
137
176
  }
@@ -4,8 +4,8 @@ import { IFSScope } from "../../interfaces/common/IFSScope";
4
4
  * Resolves the conditions by given params
5
5
  * @param filter The filter scope structure
6
6
  * @param params given parameters to validate the filter
7
- * @param letPassUndefinedProperties Flag to avoid applying the condition when the filter properties are undefined
8
- * @param letPassUndefinedParams Flag to avoid applying the condition when the param properties are explicit undefined.
7
+ * @param letPassUndefinedProperties Flag to avoid applying the condition when the properties of the properties are undefined
8
+ * @param letPassUndefinedParams Flag to avoid applying the condition when the properties of the params are explicit undefined.
9
9
  * @returns true: the condition is satisfied
10
10
  */
11
11
  export declare function resolveScopeConditions(scope: IFSScope, params: IFSParamsToGetFilter, letPassUndefinedProperties?: boolean, letPassUndefinedParams?: boolean): boolean;
@@ -7,8 +7,8 @@ const hasProperty_1 = require("../../../general/object/hasProperty");
7
7
  * Resolves the conditions by given params
8
8
  * @param filter The filter scope structure
9
9
  * @param params given parameters to validate the filter
10
- * @param letPassUndefinedProperties Flag to avoid applying the condition when the filter properties are undefined
11
- * @param letPassUndefinedParams Flag to avoid applying the condition when the param properties are explicit undefined.
10
+ * @param letPassUndefinedProperties Flag to avoid applying the condition when the properties of the properties are undefined
11
+ * @param letPassUndefinedParams Flag to avoid applying the condition when the properties of the params are explicit undefined.
12
12
  * @returns true: the condition is satisfied
13
13
  */
14
14
  function resolveScopeConditions(scope, params, letPassUndefinedProperties = false, letPassUndefinedParams = true) {
@@ -6,6 +6,7 @@ const getFilterPropertyLabel_1 = require("./ui/getFilterPropertyLabel");
6
6
  const FILTER_TOKENS_STRUCTURE_TYPE_1 = require("../constants/common/FILTER_TOKENS_STRUCTURE_TYPE");
7
7
  const isEmpty_1 = require("../../general/mix/isEmpty");
8
8
  const constants_1 = require("../constants");
9
+ const transformFilterValues_1 = require("./ui/transformFilterValues");
9
10
  /**
10
11
  * It takes a filter object and returns an array of tokens that represent the filter
11
12
  * @param {IFUData} filters - The filters object.
@@ -20,6 +21,10 @@ function getTokensFromFilters(filters, options) {
20
21
  translate: i18nService.translate.bind(i18nService),
21
22
  addEnableds: true,
22
23
  };
24
+ const settingsTransform = {
25
+ i18n: options === null || options === void 0 ? void 0 : options.i18n,
26
+ translate: i18nService.translate.bind(i18nService),
27
+ };
23
28
  const getValue = (valueItem) => {
24
29
  var _a, _b;
25
30
  if (valueItem.value) {
@@ -59,6 +64,7 @@ function getTokensFromFilters(filters, options) {
59
64
  }
60
65
  continue;
61
66
  }
67
+ filter.values = (0, transformFilterValues_1.transformFilterValues)(filter, settingsTransform);
62
68
  const values = (0, getUIValues_1.getUIValues)(filter, settings);
63
69
  if (!thereIsFiltersWithValues)
64
70
  thereIsFiltersWithValues = true;
@@ -1,7 +1,9 @@
1
+ import { II18nConfig } from "../../globalization";
1
2
  import { I18nService } from "../../globalization/service/i18nextBuilder";
2
3
  export interface IFTokensFromFiltersSettings {
3
4
  showScope?: boolean;
4
5
  showDatabaseName?: boolean;
5
6
  showChartName?: boolean;
6
7
  i18nService: I18nService;
8
+ i18n?: II18nConfig;
7
9
  }
@@ -1,8 +1,27 @@
1
+ import { IFOperator } from "../IFOperator";
1
2
  import { IFFiltersMergeValues } from "./IFFiltersMergeValues";
2
3
  /**
3
4
  * Structure for MergeFilters property settings
4
5
  */
5
6
  export interface IFFiltersMergeFilters extends IFFiltersMergeValues {
6
- overwriteFilterProps?: boolean;
7
- setGroupedColumnOperator?: boolean;
7
+ /**
8
+ * Flag to merge second filter data props to first one
9
+ */
10
+ mergeFilterDataProps?: boolean;
11
+ /**
12
+ * Flag to merge second scope props to first one
13
+ */
14
+ mergeScopeProps?: boolean;
15
+ /**
16
+ * Flag to merge second dataset props to first one
17
+ */
18
+ mergeDatasetProps?: boolean;
19
+ /**
20
+ * Flag to merge second filter props to first one
21
+ */
22
+ mergeFilterProps?: boolean;
23
+ /**
24
+ * Whet setting, the operator is overwritten on new added filters
25
+ */
26
+ setGroupedColumnOperator?: IFOperator;
8
27
  }
@@ -54,6 +54,7 @@ export interface II18nFormulaBuilderCreateModal {
54
54
  output: string;
55
55
  output_result: string;
56
56
  output_case: string;
57
+ output_invalid_column: string;
57
58
  randomize_data: string;
58
59
  randomize_data_tooltip: string;
59
60
  console_output_title: string;
@@ -13,6 +13,7 @@ export interface II18nFormulaBuilderErrorMessage {
13
13
  UNKNOWN: string;
14
14
  TOO_MANY_ARGUMENTS: string;
15
15
  DATE_DIF_UNIT_PARAM: string;
16
+ INVALID_ALLOW_VALUE: string;
16
17
  UNKNOWN_EXPRESSION: string;
17
18
  NOT_ALLOWED_EXPRESSION: string;
18
19
  OUT_OF_RANGE: string;
@@ -23,4 +24,9 @@ export interface II18nFormulaBuilderErrorMessage {
23
24
  MISSING_COLUMN_EXPRESSION: string;
24
25
  NO_COLUMN_EXPRESSION: string;
25
26
  ARGUMENTS_DATATYPE_ERROR: string;
27
+ FUNCTION_ARGUMENTS_MISMATCH: string;
28
+ NOT_ALLOWED_OPERATION: string;
29
+ NOT_ALLOWED_OPERATION_DIFFERENT_TYPES: string;
30
+ NOT_ALLOWED_OPERATION_MISSING_OPERATOR: string;
31
+ GREATER_THAN: string;
26
32
  }
@@ -0,0 +1,9 @@
1
+ import { II18nFormulaBuilderFunction } from "./II18nFormulaBuilderFunction";
2
+ export interface II18nFormulaBuilderFunctionAnd extends II18nFormulaBuilderFunction {
3
+ param_logicalTest1_name: string;
4
+ param_logicalTest1_description: string;
5
+ param_logicalTest2_name: string;
6
+ param_logicalTest2_description: string;
7
+ param_logicalTestn_name: string;
8
+ param_logicalTestn_description: string;
9
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -57,3 +57,4 @@ export * from "./II18nFormulaBuilderFunctionAggMax";
57
57
  export * from "./II18nFormulaBuilderFunctionAggDistinctcount";
58
58
  export * from "./II18nFormulaBuilderFunctionAggCount";
59
59
  export * from "./II18nFormulaBuilderErrorMessage";
60
+ export * from "./II18nFormulaBuilderFunctionAnd";
@@ -73,3 +73,4 @@ __exportStar(require("./II18nFormulaBuilderFunctionAggMax"), exports);
73
73
  __exportStar(require("./II18nFormulaBuilderFunctionAggDistinctcount"), exports);
74
74
  __exportStar(require("./II18nFormulaBuilderFunctionAggCount"), exports);
75
75
  __exportStar(require("./II18nFormulaBuilderErrorMessage"), exports);
76
+ __exportStar(require("./II18nFormulaBuilderFunctionAnd"), exports);
@@ -5,6 +5,7 @@ export interface II18nPanelErrors {
5
5
  continuous_time_limit: string;
6
6
  drilldown_unavailable: string;
7
7
  invalid_data_for_chart: string;
8
+ invalid_data_log_scale: string;
8
9
  longer_available_panel: string;
9
10
  long_text: string;
10
11
  missing_column: string;
@@ -35,7 +35,7 @@ exports.I18N_CHART_BUILDER_GENERAL_OPTIONS = {
35
35
  select_column_placeholder: "Select column",
36
36
  display_values: "Display Values As",
37
37
  display_values_placeholder: "Select aggregate",
38
- display_values_multiples: "When multiples values display",
38
+ display_values_multiples: "When multiple values display",
39
39
  display_values_multiples_placeholder: "Select display Type",
40
40
  values_format: "Values Format",
41
41
  remove: "Remove",
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.I18N_FORMULA_BUILDER = void 0;
4
+ const I18N_FORMULA_BUILDER_FUNCTION_AND_1 = require("./I18N_FORMULA_BUILDER_FUNCTION_AND");
4
5
  exports.I18N_FORMULA_BUILDER = {
5
6
  list_modal: {
6
7
  create_button: "Create Formula",
@@ -82,6 +83,7 @@ exports.I18N_FORMULA_BUILDER = {
82
83
  output: "Output",
83
84
  output_case: "Test Case",
84
85
  output_result: "Result",
86
+ output_invalid_column: "Invalid column name.",
85
87
  randomize_data: "Randomize data",
86
88
  randomize_data_tooltip: "Refresh the testing data with random data from the dataset.",
87
89
  console_output_title: "Console Output",
@@ -180,6 +182,76 @@ exports.I18N_FORMULA_BUILDER = {
180
182
  param_replacement_name: "replacement",
181
183
  param_replacement_description: "The value that will replace the null value. It must have the same data type as the column.",
182
184
  },
185
+ dateadd: {
186
+ description: "Adds a specific date part value to a given date.",
187
+ function_placeholder: 'DATEADD(date_value1, "date_part", interval_value)',
188
+ param_date_value1_name: "date_value1",
189
+ param_date_value1_description: 'Date value for which you will get the weekday. It can be a column or a datetime value entered with a format of either "MM/DD/YYYY" or "MM/DD/YYYY HH:MM:SS".',
190
+ param_date_part_name: "date_part",
191
+ param_date_part_description: 'Date part allows: "Y" for years, "M" for months, "D" for days, "H" for hours, "MI" for minutes and "S" for seconds.',
192
+ param_interval_value_name: "interval_value",
193
+ param_interval_value_description: "Number of units of the selected date part that you want to add to the given date.",
194
+ },
195
+ dayofweek: {
196
+ description: "Returns a number or string representative of the weekday for a given date.",
197
+ function_placeholder: "DAYOFWEEK(date_value1, day_name)",
198
+ param_date_value1_name: "date_value1",
199
+ param_date_value1_description: 'Date value to which you will add the date part value. It can be a column or a datetime value entered with a format of either "MM/DD/YYYY" or "MM/DD/YYYY HH:MM:SS".',
200
+ param_day_name_name: "day_name",
201
+ param_day_name_description: 'If set equal to "Day" it will return the name of the day of the week, if set to "D" it will return a number from 1 to 7; if not set, it will also return a number from 1 to 7. 1=Sunday, 2=Monday, 3=Tuesday, 4=Wednesday, 5=Thursday, 6=Friday, 7=Saturday.',
202
+ },
203
+ trim: {
204
+ description: "Removes all leading and trailing spaces from text.",
205
+ function_placeholder: "TRIM(string1)",
206
+ param_string1_name: "string1",
207
+ param_string1_description: "Text to trim.",
208
+ },
209
+ concatenate: {
210
+ description: "Joins two or more strings into one string.",
211
+ function_placeholder: "CONCATENATE(string1,string2,...stringn)",
212
+ param_string1_name: "string1 (required)",
213
+ param_string1_description: "The first text to join.",
214
+ param_string2_name: "string2 (required)",
215
+ param_string2_description: "The second text to join.",
216
+ param_stringn_name: "stringn (optional)",
217
+ param_stringn_description: "Additional text items to join.",
218
+ },
219
+ left: {
220
+ description: "Returns the first character or characters in a text string, based on the number of characters you specify.",
221
+ function_placeholder: "LEFT(string1, num_chars)",
222
+ param_string1_name: "string1 (required)",
223
+ param_string1_description: "The text with characters to extract.",
224
+ param_num_chars_name: "num_chars (optional)",
225
+ param_num_chars_description: "Number of characters you want to extract. It has to be an integer greater than or equal to zero. If not defined, LEFT will return one character.",
226
+ },
227
+ right: {
228
+ description: "Returns the last character or characters in a text string, based on the number of characters you specify.",
229
+ function_placeholder: "RIGHT(string1, num_chars)",
230
+ param_string1_name: "string1 (required)",
231
+ param_string1_description: "The text with characters to extract.",
232
+ param_num_chars_name: "num_chars (optional)",
233
+ param_num_chars_description: "Number of characters you want to extract. It has to be an integer greater than or equal to zero. If not defined, RIGHT will return one character.",
234
+ },
235
+ upper: {
236
+ description: "Converts all the characters in a string to uppercase.",
237
+ function_placeholder: "UPPER(string1)",
238
+ param_string1_name: "string1",
239
+ param_string1_description: "The text you want converted to uppercase.",
240
+ },
241
+ lower: {
242
+ description: "Converts all the characters in a string to lowercase.",
243
+ function_placeholder: "LOWER(string1)",
244
+ param_string1_name: "string1",
245
+ param_string1_description: "The text you want converted to lowercase.",
246
+ },
247
+ proper: {
248
+ description: "Capitalizes the first letter in a string and any other letters in the text placed next to any character other than a letter or number. Converts the rest of the letters to lowercase.",
249
+ function_placeholder: "PROPER(string1)",
250
+ param_string1_name: "string1",
251
+ param_string1_description: "The text you want converted.",
252
+ },
253
+ and: Object.assign({}, I18N_FORMULA_BUILDER_FUNCTION_AND_1.I18N_FORMULA_BUILDER_FUNCTION_AND),
254
+ or: Object.assign(Object.assign({}, I18N_FORMULA_BUILDER_FUNCTION_AND_1.I18N_FORMULA_BUILDER_FUNCTION_AND), { description: "Evaluates different logical tests and returns false if all logical tests are false and true if at least one of the logical tests returns true.", function_placeholder: "OR(logicalTest1,logicalTest2,...logicalTestn)" }),
183
255
  },
184
256
  editor: {
185
257
  error_messages: {
@@ -196,7 +268,7 @@ exports.I18N_FORMULA_BUILDER = {
196
268
  UNKNOWN_FUNCTION: "Unknown function",
197
269
  UNKNOWN: "Unknown error",
198
270
  TOO_MANY_ARGUMENTS: "Too many arguments",
199
- DATE_DIF_UNIT_PARAM: 'Unit param have to be equal to: "Y", "M", "D"',
271
+ DATE_DIF_UNIT_PARAM: "Argument {{i18n.function.argument.position}} has to be {{i18n.function.argument.datedif_unit}}",
200
272
  UNKNOWN_EXPRESSION: "Unknown expression",
201
273
  NOT_ALLOWED_EXPRESSION: "Expression not allowed",
202
274
  OUT_OF_RANGE: "Expression out of range",
@@ -207,6 +279,12 @@ exports.I18N_FORMULA_BUILDER = {
207
279
  MISSING_COLUMN_EXPRESSION: "Argument should be a column.",
208
280
  NO_COLUMN_EXPRESSION: "Argument cannot be a column.",
209
281
  ARGUMENTS_DATATYPE_ERROR: "Arguments should have the same data type.",
282
+ FUNCTION_ARGUMENTS_MISMATCH: "{{i18n.function.name}} function is expecting {{i18n.function.input}} and is receiving {{i18n.function.received}}",
283
+ NOT_ALLOWED_OPERATION: "Expression not allowed. Allowed operators between {{i18n.function.expression.types}}: {{i18n.function.expression.operators}}",
284
+ NOT_ALLOWED_OPERATION_DIFFERENT_TYPES: "Expression not allowed {{i18n.function.expression.value}}",
285
+ NOT_ALLOWED_OPERATION_MISSING_OPERATOR: "Expression not allowed. Missing operator",
286
+ GREATER_THAN: "Argument {{i18n.function.argument.position}} has to be greater or equal than {{i18n.function.argument.greater_than}}",
287
+ INVALID_ALLOW_VALUE: "Argument {{i18n.function.argument.position}} has to be {{i18n.function.argument.allow_value}}",
210
288
  },
211
289
  },
212
290
  },
@@ -0,0 +1,2 @@
1
+ import { II18nFormulaBuilderFunctionAnd } from "../../interfaces";
2
+ export declare const I18N_FORMULA_BUILDER_FUNCTION_AND: II18nFormulaBuilderFunctionAnd;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.I18N_FORMULA_BUILDER_FUNCTION_AND = void 0;
4
+ exports.I18N_FORMULA_BUILDER_FUNCTION_AND = {
5
+ description: "Evaluates different logical tests and returns true if all logical tests are true and false if at least one of the logical tests returns false. ",
6
+ function_placeholder: "AND(logicalTest1,logicalTest2,...logicalTestn)",
7
+ param_logicalTest1_name: "logicalTest1 (required)",
8
+ param_logicalTest1_description: "Logical test between two values, it should include logical operators such as =, >, <, >=, <= or <>. This argument can also be anything that returns a boolean value.",
9
+ param_logicalTest2_name: "logicalTest2 (required)",
10
+ param_logicalTest2_description: "Logical test between two values, it should include logical operators such as =, >, <, >=, <= or <>. This argument can also be anything that returns a boolean value.",
11
+ param_logicalTestn_name: "logicalTestn (optional)",
12
+ param_logicalTestn_description: "Logical test between two values, it should include logical operators such as =, >, <, >=, <= or <>. This argument can also be anything that returns a boolean value.",
13
+ };
@@ -1 +1,2 @@
1
1
  export * from "./I18N_FORMULA_BUILDER";
2
+ export * from "./I18N_FORMULA_BUILDER_FUNCTION_AND";
@@ -15,3 +15,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./I18N_FORMULA_BUILDER"), exports);
18
+ __exportStar(require("./I18N_FORMULA_BUILDER_FUNCTION_AND"), exports);
@@ -16,6 +16,7 @@ exports.I18N_PANEL = {
16
16
  continuous_time_limit: "The combination of data used in this chart exceeds the maximum number of data points that the system can return.<br><br>We recommend you try:<br>• Using a <i>Time Grouping</i> that returns less data<br>• Using another chart visualization<br>• Switching to Discrete Values",
17
17
  drilldown_unavailable: "No data found with drilldown.",
18
18
  invalid_data_for_chart: "No valid data for this chart.",
19
+ invalid_data_log_scale: "The data contains 0 or negative values and cannot be plotted in logarithmic scale.",
19
20
  longer_available_panel: "This panel is no longer available.",
20
21
  long_text: "long-text",
21
22
  max_buckets_limit: "The combination of data used in this chart exceeds the maximum number of aggregation buckets allowed in a single response.<br><br>To fix this issue, try the following:<br>• <i>Filter</i> your data<br>• Apply a <i>Date Grouping</i> that returns less data<br>• Use another chart visualization",
@@ -4,10 +4,13 @@
4
4
  * @returns a new MergeFilters settings object.
5
5
  */
6
6
  export function getMergeFiltersSettings(settings) {
7
- var _a, _b, _c;
7
+ var _a, _b, _c, _d, _e;
8
8
  return {
9
- overwriteFilterProps: (_a = settings === null || settings === void 0 ? void 0 : settings.overwriteFilterProps) !== null && _a !== void 0 ? _a : true,
10
- overwriteValues: (_b = settings === null || settings === void 0 ? void 0 : settings.overwriteValues) !== null && _b !== void 0 ? _b : false,
11
- setGroupedColumnOperator: (_c = settings === null || settings === void 0 ? void 0 : settings.setGroupedColumnOperator) !== null && _c !== void 0 ? _c : true,
9
+ mergeFilterDataProps: (_a = settings === null || settings === void 0 ? void 0 : settings.mergeFilterDataProps) !== null && _a !== void 0 ? _a : true,
10
+ mergeScopeProps: (_b = settings === null || settings === void 0 ? void 0 : settings.mergeScopeProps) !== null && _b !== void 0 ? _b : true,
11
+ mergeDatasetProps: (_c = settings === null || settings === void 0 ? void 0 : settings.mergeDatasetProps) !== null && _c !== void 0 ? _c : true,
12
+ mergeFilterProps: (_d = settings === null || settings === void 0 ? void 0 : settings.mergeFilterProps) !== null && _d !== void 0 ? _d : true,
13
+ overwriteValues: (_e = settings === null || settings === void 0 ? void 0 : settings.overwriteValues) !== null && _e !== void 0 ? _e : false,
14
+ setGroupedColumnOperator: settings === null || settings === void 0 ? void 0 : settings.setGroupedColumnOperator,
12
15
  };
13
16
  }
@@ -2,10 +2,13 @@ import { IFSData } from "../../interfaces/common/IFSData";
2
2
  import { IFFiltersMergeFilters } from "../../interfaces/functions/IFFiltersMergeFilters";
3
3
  import { IFUData } from "../../interfaces/ui/IFUData";
4
4
  /**
5
- * Merge filter data structures in a new one. The first Filter Data passed in the argument has the priority
6
- * @param filterData1 The target filter data
7
- * @param filterData2 the filter data to be merged
8
- * @param settings configuration of the mergeFilter
9
- * @returns a new filter data structure
5
+ * Merges the second filter data into the first one; the first Filter Data passed in the argument has the priority.
6
+ * Conditions:
7
+ * - If the info in the second filter data does not exist in the first one, the info will be added
8
+ * - If the info in the second filter data exists in the first one, the info will be merged
9
+ * @param {IFUData} filterData1 The target filter data
10
+ * @param {IFUData} filterData2 the filter data to be merged
11
+ * @param {IFFiltersMergeFilters} settings configuration of the mergeFilters
12
+ * @returns {IFUData} a new filter data structure
10
13
  */
11
- export declare function mergeFilters(filterData1: IFSData | IFUData, filterData2: IFSData | IFUData, settings?: IFFiltersMergeFilters): IFSData | IFUData;
14
+ export declare function mergeFilters(filterData1: IFUData | IFSData, filterData2: IFUData | IFSData, settings?: IFFiltersMergeFilters): IFUData | IFSData;