@qrvey/utils 1.11.0-7 → 1.11.0-9

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.
@@ -103,7 +103,7 @@ exports.FILTER_SETTINGS_DEFAULT = {
103
103
  color: "#C0C0C0",
104
104
  colorized: true,
105
105
  colorPickerDisplayed: true,
106
- displayed: false,
106
+ displayed: true,
107
107
  enabled: true,
108
108
  icon: "fp-global",
109
109
  iconsDisplayed: true,
@@ -126,7 +126,7 @@ exports.FILTER_SETTINGS_DEFAULT = {
126
126
  color: "#4FA6DA",
127
127
  colorized: true,
128
128
  colorPickerDisplayed: true,
129
- displayed: false,
129
+ displayed: true,
130
130
  enabled: true,
131
131
  icon: "fp-global",
132
132
  iconsDisplayed: true,
@@ -149,7 +149,7 @@ exports.FILTER_SETTINGS_DEFAULT = {
149
149
  color: "#7DC58C",
150
150
  colorized: true,
151
151
  colorPickerDisplayed: true,
152
- displayed: false,
152
+ displayed: true,
153
153
  enabled: true,
154
154
  icon: "fp-page",
155
155
  iconsDisplayed: true,
@@ -172,7 +172,7 @@ exports.FILTER_SETTINGS_DEFAULT = {
172
172
  color: "#E6773D",
173
173
  colorized: true,
174
174
  colorPickerDisplayed: true,
175
- displayed: false,
175
+ displayed: true,
176
176
  enabled: true,
177
177
  icon: "fp-tab",
178
178
  iconsDisplayed: true,
@@ -195,7 +195,7 @@ exports.FILTER_SETTINGS_DEFAULT = {
195
195
  color: "#FFB75D",
196
196
  colorized: true,
197
197
  colorPickerDisplayed: true,
198
- displayed: false,
198
+ displayed: true,
199
199
  enabled: true,
200
200
  icon: "fp-chart",
201
201
  iconsDisplayed: true,
@@ -218,7 +218,7 @@ exports.FILTER_SETTINGS_DEFAULT = {
218
218
  color: "#C0C0C0",
219
219
  colorized: true,
220
220
  colorPickerDisplayed: true,
221
- displayed: false,
221
+ displayed: true,
222
222
  enabled: true,
223
223
  icon: "fp-global",
224
224
  iconsDisplayed: true,
@@ -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) {
@@ -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
  }
@@ -12,6 +12,7 @@ export interface II18nChartBuilderLineStyleOptions {
12
12
  type_straight: string;
13
13
  type_monotone: string;
14
14
  type_cardinal: string;
15
+ type_smooth: string;
15
16
  type_step_before: string;
16
17
  type_step_after: string;
17
18
  fill: string;
@@ -140,6 +140,7 @@ exports.I18N_CHART_BUILDER_STYLE_OPTIONS = {
140
140
  type_straight: "Straight",
141
141
  type_monotone: "Monotone",
142
142
  type_cardinal: "Cardinal",
143
+ type_smooth: "Smooth",
143
144
  type_step_before: "Step Before",
144
145
  type_step_after: "Step After",
145
146
  fill: "Fill",
@@ -100,7 +100,7 @@ export const FILTER_SETTINGS_DEFAULT = {
100
100
  color: "#C0C0C0",
101
101
  colorized: true,
102
102
  colorPickerDisplayed: true,
103
- displayed: false,
103
+ displayed: true,
104
104
  enabled: true,
105
105
  icon: "fp-global",
106
106
  iconsDisplayed: true,
@@ -123,7 +123,7 @@ export const FILTER_SETTINGS_DEFAULT = {
123
123
  color: "#4FA6DA",
124
124
  colorized: true,
125
125
  colorPickerDisplayed: true,
126
- displayed: false,
126
+ displayed: true,
127
127
  enabled: true,
128
128
  icon: "fp-global",
129
129
  iconsDisplayed: true,
@@ -146,7 +146,7 @@ export const FILTER_SETTINGS_DEFAULT = {
146
146
  color: "#7DC58C",
147
147
  colorized: true,
148
148
  colorPickerDisplayed: true,
149
- displayed: false,
149
+ displayed: true,
150
150
  enabled: true,
151
151
  icon: "fp-page",
152
152
  iconsDisplayed: true,
@@ -169,7 +169,7 @@ export const FILTER_SETTINGS_DEFAULT = {
169
169
  color: "#E6773D",
170
170
  colorized: true,
171
171
  colorPickerDisplayed: true,
172
- displayed: false,
172
+ displayed: true,
173
173
  enabled: true,
174
174
  icon: "fp-tab",
175
175
  iconsDisplayed: true,
@@ -192,7 +192,7 @@ export const FILTER_SETTINGS_DEFAULT = {
192
192
  color: "#FFB75D",
193
193
  colorized: true,
194
194
  colorPickerDisplayed: true,
195
- displayed: false,
195
+ displayed: true,
196
196
  enabled: true,
197
197
  icon: "fp-chart",
198
198
  iconsDisplayed: true,
@@ -215,7 +215,7 @@ export const FILTER_SETTINGS_DEFAULT = {
215
215
  color: "#C0C0C0",
216
216
  colorized: true,
217
217
  colorPickerDisplayed: true,
218
- displayed: false,
218
+ displayed: true,
219
219
  enabled: true,
220
220
  icon: "fp-global",
221
221
  iconsDisplayed: true,
@@ -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;
@@ -1,6 +1,6 @@
1
1
  import { isEmpty } from "../../../general/mix/isEmpty";
2
- import { cloneDeep } from "../../../general/object/cloneDeep";
3
- import { FILTER_GROUPED_COLUMN_OPERATOR } from "../../constants/common/FILTER_GROUPED_COLUMN_OPERATOR";
2
+ import { mergeDeep } from "../../../general/object/mergeDeep";
3
+ import { objectCopy } from "../../../general/object/objectCopy";
4
4
  import { getFilterid } from "./getFilterid";
5
5
  import { getMergeFiltersSettings } from "./getMergeFiltersSettings";
6
6
  import { mergeValues } from "./mergeValues";
@@ -8,13 +8,17 @@ import { resolveDatasetConditions } from "./resolveDatasetConditions";
8
8
  import { resolveFilterConditions } from "./resolveFilterConditions";
9
9
  import { resolveScopeConditions } from "./resolveScopeConditions";
10
10
  /**
11
- * Merge filter data structures in a new one. The first Filter Data passed in the argument has the priority
12
- * @param filterData1 The target filter data
13
- * @param filterData2 the filter data to be merged
14
- * @param settings configuration of the mergeFilter
15
- * @returns a new filter data structure
11
+ * Merges the second filter data into the first one; the first Filter Data passed in the argument has the priority.
12
+ * Conditions:
13
+ * - If the info in the second filter data does not exist in the first one, the info will be added
14
+ * - If the info in the second filter data exists in the first one, the info will be merged
15
+ * @param {IFUData} filterData1 The target filter data
16
+ * @param {IFUData} filterData2 the filter data to be merged
17
+ * @param {IFFiltersMergeFilters} settings configuration of the mergeFilters
18
+ * @returns {IFUData} a new filter data structure
16
19
  */
17
20
  export function mergeFilters(filterData1, filterData2, settings) {
21
+ var _a;
18
22
  if (isEmpty(filterData1) || isEmpty(filterData1.scopes)) {
19
23
  if (isEmpty(filterData2) || isEmpty(filterData2.scopes))
20
24
  return;
@@ -22,22 +26,28 @@ export function mergeFilters(filterData1, filterData2, settings) {
22
26
  }
23
27
  if (isEmpty(filterData2) || isEmpty(filterData2.scopes))
24
28
  return filterData1;
25
- const _filterData1 = cloneDeep(filterData1);
26
- const _filterData2 = cloneDeep(filterData2);
29
+ const newFilterData1 = objectCopy(filterData1);
30
+ const newFilterData2 = objectCopy(filterData2);
27
31
  const defaultSettings = getMergeFiltersSettings(settings);
28
- return {
29
- enabled: _filterData1.enabled,
30
- scopes: mergeScopes(_filterData1.scopes, _filterData2.scopes, defaultSettings),
31
- section: _filterData1.section,
32
- version: _filterData1.version,
33
- };
32
+ const scopes = mergeScopes(newFilterData1.scopes, newFilterData2.scopes, defaultSettings);
33
+ if (defaultSettings.mergeFilterDataProps) {
34
+ return {
35
+ enabled: (_a = newFilterData2.enabled) !== null && _a !== void 0 ? _a : newFilterData1.enabled,
36
+ section: newFilterData2.section || newFilterData1.section,
37
+ scopes,
38
+ version: newFilterData2.version || newFilterData1.version,
39
+ };
40
+ }
41
+ return Object.assign(Object.assign({}, newFilterData1), { scopes });
34
42
  }
35
43
  /**
36
- * Gets a new scope structure array by merging two scope structures
37
- * @param scopes1 the target scope structure
38
- * @param scopes2 the scope to be merged
39
- * @param settings configuration of the mergeFilter
40
- * @returns a new scope structure array
44
+ * Gets a new scope array structure by merging both scope structures
45
+ * - If the info in the second scope does not exist in the first one, the scope will be added
46
+ * - If the info in the second scope exists in the first one, the scope will be merged
47
+ * @param {IFUScope[]} scopes1 the target scope structure
48
+ * @param {IFUScope[]} scopes2 the scope to be merged
49
+ * @param {IFFiltersMergeFilters} settings configuration of the mergeFilters
50
+ * @returns {IFUScope[]} a new scope array structure
41
51
  */
42
52
  function mergeScopes(scopes1 = [], scopes2 = [], settings) {
43
53
  let newScopes = scopes1.reduce((scopes, scope1) => {
@@ -47,7 +57,7 @@ function mergeScopes(scopes1 = [], scopes2 = [], settings) {
47
57
  }));
48
58
  let _scope1 = scope1;
49
59
  if (scope2Index > -1) {
50
- _scope1 = Object.assign(Object.assign({}, scopes2[scope2Index]), { datasets: mergeDatasets(scope1.datasets, scopes2[scope2Index].datasets, settings) });
60
+ _scope1 = Object.assign(Object.assign({}, mergeScopeProps(scope1, scopes2[scope2Index], settings)), { datasets: mergeDatasets(scope1.datasets, scopes2[scope2Index].datasets, settings) });
51
61
  scopes2.splice(scope2Index, 1);
52
62
  }
53
63
  scopes.push(_scope1);
@@ -58,11 +68,13 @@ function mergeScopes(scopes1 = [], scopes2 = [], settings) {
58
68
  return newScopes;
59
69
  }
60
70
  /**
61
- * Gets a new dataset structure array by merging two dataset structures
62
- * @param datasets1 the target dataset structure
63
- * @param datasets2 the dataset to be merged
64
- * @param settings configuration of the mergeFilter
65
- * @returns a new dataset structure array
71
+ * Gets a new dataset structure array by merging both dataset structures
72
+ * - If the info in the second dataset does not exist in the first one, the dataset will be added
73
+ * - If the info in the second dataset exists in the first one, the dataset will be merged
74
+ * @param {IFUDataset[]} datasets1 the target dataset structure
75
+ * @param {IFUDataset[]} datasets2 the dataset to be merged
76
+ * @param {IFFiltersMergeFilters} settings configuration of the mergeFilter
77
+ * @returns {IFUDataset[]} a new dataset structure array
66
78
  */
67
79
  function mergeDatasets(datasets1 = [], datasets2 = [], settings) {
68
80
  let newDatasets = datasets1.reduce((datasets, dataset1) => {
@@ -71,7 +83,7 @@ function mergeDatasets(datasets1 = [], datasets2 = [], settings) {
71
83
  }));
72
84
  let _dataset1 = dataset1;
73
85
  if (dataset2Index > -1) {
74
- _dataset1 = Object.assign(Object.assign({}, datasets2[dataset2Index]), { filters: mergeFilterss(dataset1.filters, datasets2[dataset2Index].filters, settings) });
86
+ _dataset1 = Object.assign(Object.assign({}, mergeDatasetProps(dataset1, datasets2[dataset2Index], settings)), { filters: mergeFilterss(dataset1.filters, datasets2[dataset2Index].filters, settings) });
75
87
  datasets2.splice(dataset2Index, 1);
76
88
  }
77
89
  datasets.push(_dataset1);
@@ -83,10 +95,10 @@ function mergeDatasets(datasets1 = [], datasets2 = [], settings) {
83
95
  }
84
96
  /**
85
97
  * Gets a new filter structure array by merging two filter structures
86
- * @param filters1 the target filter structure
87
- * @param filters2 the filter to be merged
88
- * @param settings configuration of the mergeFilter
89
- * @returns a new filter structure array
98
+ * @param {IFUFilter[]} filters1 the target filter structure
99
+ * @param {IFUFilter[]} filters2 the filter to be merged
100
+ * @param {IFFiltersMergeFilters} settings configuration of the mergeFilters
101
+ * @returns {IFUFilter[]} a new filter structure array
90
102
  */
91
103
  function mergeFilterss(filters1 = [], filters2 = [], settings) {
92
104
  let newFilters = filters1.reduce((filters, filter1) => {
@@ -99,14 +111,11 @@ function mergeFilterss(filters1 = [], filters2 = [], settings) {
99
111
  }));
100
112
  let _filter1 = filter1;
101
113
  if (filter2Index > -1) {
102
- _filter1 = Object.assign(Object.assign({}, _filter1), { values: mergeValues(_filter1, filters2[filter2Index], settings) });
103
- _filter1 = mergeFilterProps(_filter1, filters2[filter2Index], settings);
114
+ _filter1 = Object.assign(Object.assign(Object.assign({}, _filter1), mergeFilterProps(_filter1, filters2[filter2Index], settings)), { values: mergeValues(_filter1, filters2[filter2Index], settings) });
104
115
  filters2.splice(filter2Index, 1);
105
116
  }
106
- else {
107
- _filter1 = Object.assign(Object.assign({}, _filter1), { operator: settings.setGroupedColumnOperator
108
- ? FILTER_GROUPED_COLUMN_OPERATOR
109
- : _filter1.operator });
117
+ else if (!isEmpty(settings.setGroupedColumnOperator)) {
118
+ _filter1.operator = settings.setGroupedColumnOperator;
110
119
  }
111
120
  _filter1.filterid = getFilterid(_filter1);
112
121
  filters.push(_filter1);
@@ -117,17 +126,47 @@ function mergeFilterss(filters1 = [], filters2 = [], settings) {
117
126
  return newFilters;
118
127
  }
119
128
  /**
120
- * Gets a new filter structure when the setting is configured
121
- * @param filter1 the target filter structure
122
- * @param filter2 the filter to be used to merge the values
123
- * @param settings configuration of the mergeFilter
129
+ * Gets a new scope structure for the configured settings
130
+ * @param {IFUScope} scope1 the target scope structure
131
+ * @param {IFUScope} scope2 the scope to be used to merge the values
132
+ * @param {IFFiltersMergeFilters} settings configuration of the mergeFilters
133
+ * @returns {IFUScope} a new filter structure with overwritted props
134
+ */
135
+ function mergeScopeProps(scope1, scope2, settings) {
136
+ var _a, _b, _c;
137
+ let _scope1 = scope1;
138
+ if (settings.mergeScopeProps) {
139
+ _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 });
140
+ }
141
+ return _scope1;
142
+ }
143
+ /**
144
+ * Gets a new dataset structure for the configured settings
145
+ * @param {IFUDataset} dataset1 the target dataset structure
146
+ * @param {IFUDataset} dataset2 the dataset to be used to merge the values
147
+ * @param {IFFiltersMergeFilters} settings configuration of the mergeFilters
148
+ * @returns {IFUDataset} a new filter structure with overwritted props
149
+ */
150
+ function mergeDatasetProps(dataset1, dataset2, settings) {
151
+ var _a, _b, _c;
152
+ let _dataset1 = dataset1;
153
+ if (settings.mergeDatasetProps) {
154
+ _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 });
155
+ }
156
+ return _dataset1;
157
+ }
158
+ /**
159
+ * Gets a new filter structure for the configured settings
160
+ * @param {IFUFilter} filter1 the target filter structure
161
+ * @param {IFUFilter} filter2 the filter to be used to merge the values
162
+ * @param {IFFiltersMergeFilters} settings configuration of the mergeFilters
124
163
  * @returns a new filter structure with overwritted props
125
164
  */
126
165
  function mergeFilterProps(filter1, filter2, settings) {
127
166
  var _a, _b, _c;
128
167
  let _filter1 = filter1;
129
- if (settings.overwriteFilterProps) {
130
- _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 });
168
+ if (settings.mergeFilterProps) {
169
+ _filter1 = Object.assign(Object.assign({}, filter1), { collapsed: (_a = filter2.collapsed) !== null && _a !== void 0 ? _a : filter1.collapsed, column: 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 });
131
170
  }
132
171
  return _filter1;
133
172
  }
@@ -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;
@@ -4,8 +4,8 @@ import { _hasProperty } from "../../../general/object/hasProperty";
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 function resolveScopeConditions(scope, params, letPassUndefinedProperties = false, letPassUndefinedParams = true) {
@@ -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
  }
@@ -12,6 +12,7 @@ export interface II18nChartBuilderLineStyleOptions {
12
12
  type_straight: string;
13
13
  type_monotone: string;
14
14
  type_cardinal: string;
15
+ type_smooth: string;
15
16
  type_step_before: string;
16
17
  type_step_after: string;
17
18
  fill: string;
@@ -137,6 +137,7 @@ export const I18N_CHART_BUILDER_STYLE_OPTIONS = {
137
137
  type_straight: "Straight",
138
138
  type_monotone: "Monotone",
139
139
  type_cardinal: "Cardinal",
140
+ type_smooth: "Smooth",
140
141
  type_step_before: "Step Before",
141
142
  type_step_after: "Step After",
142
143
  fill: "Fill",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qrvey/utils",
3
- "version": "1.11.0-7",
3
+ "version": "1.11.0-9",
4
4
  "description": "Helper, Utils for all Qrvey Projects",
5
5
  "homepage": "https://bitbucket.org/qrvey/qrvey_utils/wiki/Home",
6
6
  "main": "dist/index.js",