@qrvey/utils 1.2.10-6 → 1.2.10-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.
Files changed (56) hide show
  1. package/README.md +5933 -1
  2. package/bitbucket-pipelines.yml +1 -1
  3. package/dist/cjs/filters/helpers/common/getMergeValuesSettings.d.ts +7 -0
  4. package/dist/cjs/filters/helpers/common/getMergeValuesSettings.js +15 -0
  5. package/dist/cjs/filters/helpers/common/index.d.ts +1 -0
  6. package/dist/cjs/filters/helpers/common/index.js +1 -0
  7. package/dist/cjs/filters/helpers/common/mergeFilters.js +4 -58
  8. package/dist/cjs/filters/helpers/common/mergeValues.d.ts +11 -0
  9. package/dist/cjs/filters/helpers/common/mergeValues.js +92 -0
  10. package/dist/cjs/filters/interfaces/functions/IFFiltersMergeFilters.d.ts +2 -2
  11. package/dist/cjs/filters/interfaces/functions/IFFiltersMergeValues.d.ts +3 -0
  12. package/dist/cjs/filters/interfaces/functions/IFFiltersMergeValues.js +2 -0
  13. package/dist/cjs/filters/interfaces/functions/index.d.ts +1 -0
  14. package/dist/cjs/filters/interfaces/functions/index.js +1 -0
  15. package/dist/cjs/format/localization.js +16 -2
  16. package/dist/cjs/globalization/interfaces/dashboard/II18nDashboardToast.d.ts +1 -0
  17. package/dist/cjs/globalization/interfaces/filters/II18nFilterPanel.d.ts +1 -0
  18. package/dist/cjs/globalization/interfaces/filters/II18nValueContainer.d.ts +3 -2
  19. package/dist/cjs/globalization/labels/dashboard/I18N_DASHBOARD.js +1 -0
  20. package/dist/cjs/globalization/labels/filters/I18N_FILTER_PANEL.js +1 -0
  21. package/dist/cjs/globalization/labels/filters/I18N_VALUE_CONTAINER.js +2 -1
  22. package/dist/filters/helpers/common/getMergeValuesSettings.d.ts +7 -0
  23. package/dist/filters/helpers/common/getMergeValuesSettings.js +11 -0
  24. package/dist/filters/helpers/common/index.d.ts +1 -0
  25. package/dist/filters/helpers/common/index.js +1 -0
  26. package/dist/filters/helpers/common/mergeFilters.js +3 -57
  27. package/dist/filters/helpers/common/mergeValues.d.ts +11 -0
  28. package/dist/filters/helpers/common/mergeValues.js +88 -0
  29. package/dist/filters/interfaces/functions/IFFiltersMergeFilters.d.ts +2 -2
  30. package/dist/filters/interfaces/functions/IFFiltersMergeValues.d.ts +3 -0
  31. package/dist/filters/interfaces/functions/IFFiltersMergeValues.js +1 -0
  32. package/dist/filters/interfaces/functions/index.d.ts +1 -0
  33. package/dist/filters/interfaces/functions/index.js +1 -0
  34. package/dist/format/localization.js +16 -2
  35. package/dist/globalization/interfaces/dashboard/II18nDashboardToast.d.ts +1 -0
  36. package/dist/globalization/interfaces/filters/II18nFilterPanel.d.ts +1 -0
  37. package/dist/globalization/interfaces/filters/II18nValueContainer.d.ts +3 -2
  38. package/dist/globalization/labels/dashboard/I18N_DASHBOARD.js +1 -0
  39. package/dist/globalization/labels/filters/I18N_FILTER_PANEL.js +1 -0
  40. package/dist/globalization/labels/filters/I18N_VALUE_CONTAINER.js +2 -1
  41. package/package.json +5 -4
  42. package/publishing.js +10 -2
  43. package/src/filters/helpers/common/getMergeValuesSettings.ts +12 -0
  44. package/src/filters/helpers/common/index.ts +1 -0
  45. package/src/filters/helpers/common/mergeFilters.ts +5 -59
  46. package/src/filters/helpers/common/mergeValues.ts +87 -0
  47. package/src/filters/interfaces/functions/IFFiltersMergeFilters.ts +2 -2
  48. package/src/filters/interfaces/functions/IFFiltersMergeValues.ts +3 -0
  49. package/src/filters/interfaces/functions/index.ts +1 -0
  50. package/src/format/localization.ts +16 -2
  51. package/src/globalization/interfaces/dashboard/II18nDashboardToast.ts +1 -0
  52. package/src/globalization/interfaces/filters/II18nFilterPanel.ts +1 -0
  53. package/src/globalization/interfaces/filters/II18nValueContainer.ts +3 -2
  54. package/src/globalization/labels/dashboard/I18N_DASHBOARD.ts +1 -0
  55. package/src/globalization/labels/filters/I18N_FILTER_PANEL.ts +1 -0
  56. package/src/globalization/labels/filters/I18N_VALUE_CONTAINER.ts +2 -1
@@ -1,4 +1,4 @@
1
- image: node:16.14.1
1
+ image: node:16.14
2
2
 
3
3
  pipelines:
4
4
  default:
@@ -0,0 +1,7 @@
1
+ import { IFFiltersMergeValues } from "../../interfaces/functions/IFFiltersMergeValues";
2
+ /**
3
+ * Transforms the given MergeFilters settings object. Adds the missing properties if they do not exist.
4
+ * @param settings an object to the MergeFilters settings
5
+ * @returns a new MergeFilters settings object.
6
+ */
7
+ export declare function getMergeValuesSettings(settings?: IFFiltersMergeValues): IFFiltersMergeValues;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getMergeValuesSettings = void 0;
4
+ /**
5
+ * Transforms the given MergeFilters settings object. Adds the missing properties if they do not exist.
6
+ * @param settings an object to the MergeFilters settings
7
+ * @returns a new MergeFilters settings object.
8
+ */
9
+ function getMergeValuesSettings(settings) {
10
+ var _a;
11
+ return {
12
+ overwriteValues: (_a = settings === null || settings === void 0 ? void 0 : settings.overwriteValues) !== null && _a !== void 0 ? _a : false,
13
+ };
14
+ }
15
+ exports.getMergeValuesSettings = getMergeValuesSettings;
@@ -22,6 +22,7 @@ export * from './isNullValidator';
22
22
  export * from './isRangeValidator';
23
23
  export * from './isRegularValidator';
24
24
  export * from './mergeFilters';
25
+ export * from './mergeValues';
25
26
  export * from './resolveDatasetConditions';
26
27
  export * from './resolveFilterConditions';
27
28
  export * from './resolveScopeConditions';
@@ -38,6 +38,7 @@ __exportStar(require("./isNullValidator"), exports);
38
38
  __exportStar(require("./isRangeValidator"), exports);
39
39
  __exportStar(require("./isRegularValidator"), exports);
40
40
  __exportStar(require("./mergeFilters"), exports);
41
+ __exportStar(require("./mergeValues"), exports);
41
42
  __exportStar(require("./resolveDatasetConditions"), exports);
42
43
  __exportStar(require("./resolveFilterConditions"), exports);
43
44
  __exportStar(require("./resolveScopeConditions"), exports);
@@ -6,10 +6,7 @@ const cloneDeep_1 = require("../../../general/object/cloneDeep");
6
6
  const FILTER_GROUPED_COLUMN_OPERATOR_1 = require("../../constants/common/FILTER_GROUPED_COLUMN_OPERATOR");
7
7
  const getFilterid_1 = require("./getFilterid");
8
8
  const getMergeFiltersSettings_1 = require("./getMergeFiltersSettings");
9
- const isInValidator_1 = require("./isInValidator");
10
- const isNullValidator_1 = require("./isNullValidator");
11
- const isRangeValidator_1 = require("./isRangeValidator");
12
- const isRegularValidator_1 = require("./isRegularValidator");
9
+ const mergeValues_1 = require("./mergeValues");
13
10
  const resolveDatasetConditions_1 = require("./resolveDatasetConditions");
14
11
  const resolveFilterConditions_1 = require("./resolveFilterConditions");
15
12
  const resolveScopeConditions_1 = require("./resolveScopeConditions");
@@ -92,7 +89,7 @@ function mergeFilterss(filters1 = [], filters2 = [], settings) {
92
89
  let newFilters = filters1.reduce((filters, filter1) => {
93
90
  const filter2Index = filters2.findIndex(filter2 => (0, resolveFilterConditions_1.resolveFilterConditions)(filter2, { column: filter1.column, dateSection: filter1.dateSection, panelid: filter1.extras.panelid, property: filter1.property, validator: filter1.validator }));
94
91
  if (filter2Index > -1) {
95
- filter1 = Object.assign(Object.assign({}, filter1), { values: mergeValues(filter1, filters2[filter2Index], settings) });
92
+ filter1 = Object.assign(Object.assign({}, filter1), { values: (0, mergeValues_1.mergeValues)(filter1, filters2[filter2Index], settings) });
96
93
  filter1 = mergeFilterProps(filter1, filters2[filter2Index], settings);
97
94
  filters2.splice(filter2Index, 1);
98
95
  }
@@ -115,60 +112,9 @@ function mergeFilterss(filters1 = [], filters2 = [], settings) {
115
112
  * @returns a new filter structure with overwritted props
116
113
  */
117
114
  function mergeFilterProps(filter1, filter2, settings) {
115
+ var _a, _b, _c;
118
116
  if (settings.overwriteFilterProps) {
119
- filter1 = Object.assign(Object.assign({}, filter1), { extras: filter2.extras, enabled: filter2.enabled || filter1.enabled, filterid: filter2.filterid, lookupDisplayIndex: filter2.lookupDisplayIndex, nullValues: filter2.nullValues, selectAll: filter2.selectAll });
117
+ 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, filterid: filter2.filterid, lookupDisplayIndex: filter2.lookupDisplayIndex, nullValues: filter2.nullValues, selectAll: filter2.selectAll });
120
118
  }
121
119
  return filter1;
122
120
  }
123
- /**
124
- * Gets a new value structure array by merging two value structures
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
128
- * @returns a new value structure array
129
- */
130
- function mergeValues(filter1, filter2, settings) {
131
- if ((0, isEmpty_1.isEmpty)(filter1) && (0, isEmpty_1.isEmpty)(filter2))
132
- return [];
133
- let newValues = [];
134
- let filter1Values = filter1.values || [];
135
- const filter2Values = filter2.values || [];
136
- if (!settings.overwriteValues) {
137
- if ((0, isInValidator_1.isInValidator)(filter1.validator)) {
138
- newValues = filter2Values.reduce((values, value2) => {
139
- const value1Index = filter1Values.findIndex(value1 => value2.anchor === value1.anchor && value2.cursor === value1.cursor && value2.includeCurrent === value1.includeCurrent && value2.isCalendarDate === value1.isCalendarDate && value2.number === value1.number && value2.unit === value1.unit);
140
- if (value1Index === -1) {
141
- values.push(value2);
142
- }
143
- return values;
144
- }, filter1Values);
145
- }
146
- else if ((0, isRangeValidator_1.isRangeValidator)(filter1.validator)) {
147
- newValues = filter2Values.reduce((values, value2) => {
148
- const value1Index = filter1Values.findIndex(value1 => value2.max === value1.max && value2.min === value1.min);
149
- if (value1Index === -1) {
150
- values.push(value2);
151
- }
152
- return values;
153
- }, filter1Values);
154
- }
155
- else if ((0, isRegularValidator_1.isRegularValidator)(filter1.validator) || (0, isNullValidator_1.isNullValidator)(filter1.validator)) {
156
- newValues = filter2Values.reduce((values, value2) => {
157
- const value1Index = filter1Values.findIndex(value1 => value2.imageUrl === value1.imageUrl && value2.value === value1.value);
158
- if (value1Index === -1) {
159
- values.push(value2);
160
- }
161
- return values;
162
- }, filter1Values);
163
- }
164
- else {
165
- filter1Values = filter1Values.concat(filter2Values);
166
- newValues = filter1Values;
167
- }
168
- }
169
- else {
170
- filter1Values = filter2Values;
171
- newValues = filter1Values;
172
- }
173
- return newValues;
174
- }
@@ -0,0 +1,11 @@
1
+ import { IFSFilter } from "../../interfaces/common/IFSFilter";
2
+ import { IFFiltersMergeValues } from "../../interfaces/functions/IFFiltersMergeValues";
3
+ import { IFValue } from "../../interfaces/IFValue";
4
+ /**
5
+ * Gets a new value structure array by merging two value structures
6
+ * @param filter1 the target filter structure
7
+ * @param filter2 the filter to be used to merge the values
8
+ * @param settings configuration of the mergeFilter
9
+ * @returns a new value structure array
10
+ */
11
+ export declare function mergeValues(filter1: IFSFilter, filter2: IFSFilter, settings?: IFFiltersMergeValues): IFValue[];
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mergeValues = void 0;
4
+ const isEmpty_1 = require("../../../general/mix/isEmpty");
5
+ const getMergeValuesSettings_1 = require("./getMergeValuesSettings");
6
+ const isInValidator_1 = require("./isInValidator");
7
+ const isNullValidator_1 = require("./isNullValidator");
8
+ const isRangeValidator_1 = require("./isRangeValidator");
9
+ const isRegularValidator_1 = require("./isRegularValidator");
10
+ /**
11
+ * Gets a new value structure array by merging two value structures
12
+ * @param filter1 the target filter structure
13
+ * @param filter2 the filter to be used to merge the values
14
+ * @param settings configuration of the mergeFilter
15
+ * @returns a new value structure array
16
+ */
17
+ function mergeValues(filter1, filter2, settings) {
18
+ if ((0, isEmpty_1.isEmpty)(filter1) && (0, isEmpty_1.isEmpty)(filter2))
19
+ return [];
20
+ settings = (0, getMergeValuesSettings_1.getMergeValuesSettings)(settings);
21
+ let newValues = [];
22
+ let filter1Values = filter1.values || [];
23
+ const filter2Values = filter2.values || [];
24
+ if (settings.overwriteValues) {
25
+ filter1Values = filter2Values;
26
+ newValues = filter1Values;
27
+ }
28
+ else {
29
+ if ((0, isInValidator_1.isInValidator)(filter1.validator)) {
30
+ newValues = filter2Values.reduce((values, value2) => {
31
+ var _a;
32
+ const value1Index = filter1Values.findIndex(value1 => value2.anchor === value1.anchor && value2.cursor === value1.cursor && value2.includeCurrent === value1.includeCurrent && value2.isCalendarDate === value1.isCalendarDate && value2.number === value1.number && value2.unit === value1.unit);
33
+ if (value1Index === -1) {
34
+ values.push(value2);
35
+ }
36
+ else {
37
+ values[value1Index] = {
38
+ anchor: value2.anchor,
39
+ cursor: value2.cursor,
40
+ enabled: (_a = value2.enabled) !== null && _a !== void 0 ? _a : values[value1Index].enabled,
41
+ includeCurrent: value2.includeCurrent,
42
+ isCalendarDate: value2.isCalendarDate,
43
+ number: value2.number,
44
+ unit: value2.unit,
45
+ };
46
+ }
47
+ return values;
48
+ }, filter1Values);
49
+ }
50
+ else if ((0, isRangeValidator_1.isRangeValidator)(filter1.validator)) {
51
+ newValues = filter2Values.reduce((values, value2) => {
52
+ var _a;
53
+ const value1Index = filter1Values.findIndex(value1 => value2.max === value1.max && value2.min === value1.min);
54
+ if (value1Index === -1) {
55
+ values.push(value2);
56
+ }
57
+ else {
58
+ values[value1Index] = {
59
+ enabled: (_a = value2.enabled) !== null && _a !== void 0 ? _a : values[value1Index].enabled,
60
+ max: value2.max,
61
+ min: value2.min,
62
+ };
63
+ }
64
+ return values;
65
+ }, filter1Values);
66
+ }
67
+ else if ((0, isRegularValidator_1.isRegularValidator)(filter1.validator) || (0, isNullValidator_1.isNullValidator)(filter1.validator)) {
68
+ newValues = filter2Values.reduce((values, value2) => {
69
+ var _a;
70
+ const value1Index = filter1Values.findIndex(value1 => value2.imageUrl === value1.imageUrl && value2.value === value1.value);
71
+ if (value1Index === -1) {
72
+ values.push(value2);
73
+ }
74
+ else {
75
+ values[value1Index] = {
76
+ enabled: (_a = value2.enabled) !== null && _a !== void 0 ? _a : values[value1Index].enabled,
77
+ imageUrl: value2.imageUrl,
78
+ value: value2.value,
79
+ valueid: value2.valueid,
80
+ };
81
+ }
82
+ return values;
83
+ }, filter1Values);
84
+ }
85
+ else {
86
+ filter1Values = filter1Values.concat(filter2Values);
87
+ newValues = filter1Values;
88
+ }
89
+ }
90
+ return newValues;
91
+ }
92
+ exports.mergeValues = mergeValues;
@@ -1,8 +1,8 @@
1
+ import { IFFiltersMergeValues } from "./IFFiltersMergeValues";
1
2
  /**
2
3
  * Structure for MergeFilters property settings
3
4
  */
4
- export interface IFFiltersMergeFilters {
5
+ export interface IFFiltersMergeFilters extends IFFiltersMergeValues {
5
6
  overwriteFilterProps?: boolean;
6
- overwriteValues?: boolean;
7
7
  setGroupedColumnOperator?: boolean;
8
8
  }
@@ -0,0 +1,3 @@
1
+ export interface IFFiltersMergeValues {
2
+ overwriteValues?: boolean;
3
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -2,4 +2,5 @@ export * from './IFFiltersGetData';
2
2
  export * from './IFFiltersGetValuesFromDataset';
3
3
  export * from './IFFiltersGetValuesFromModel';
4
4
  export * from './IFFiltersMergeFilters';
5
+ export * from './IFFiltersMergeValues';
5
6
  export * from './IFFiltersParamsToGetFilter';
@@ -18,4 +18,5 @@ __exportStar(require("./IFFiltersGetData"), exports);
18
18
  __exportStar(require("./IFFiltersGetValuesFromDataset"), exports);
19
19
  __exportStar(require("./IFFiltersGetValuesFromModel"), exports);
20
20
  __exportStar(require("./IFFiltersMergeFilters"), exports);
21
+ __exportStar(require("./IFFiltersMergeValues"), exports);
21
22
  __exportStar(require("./IFFiltersParamsToGetFilter"), exports);
@@ -30,6 +30,7 @@ const formatWithLocale = (value, outputFormat, config = {}) => {
30
30
  }
31
31
  };
32
32
  exports.formatWithLocale = formatWithLocale;
33
+ const DATE_FORMAT_CACHE = [];
33
34
  function formatLocaleDate(value, outputFormat, config) {
34
35
  const { lang = definition_1.LANG_DEFAULT, options } = config;
35
36
  const dateValue = value === null || value === void 0 ? void 0 : value.replace(/Z$/i, '');
@@ -41,18 +42,31 @@ function formatLocaleDate(value, outputFormat, config) {
41
42
  langOpts = definition_1.DATETIME_OPTIONS;
42
43
  }
43
44
  try {
44
- return new Intl.DateTimeFormat([lang, definition_1.LANG_DEFAULT], langOpts).format(dateParam);
45
+ const key = lang + JSON.stringify(langOpts);
46
+ let formatter = DATE_FORMAT_CACHE[key];
47
+ if (!formatter) {
48
+ formatter = new Intl.DateTimeFormat([lang, definition_1.LANG_DEFAULT], langOpts);
49
+ DATE_FORMAT_CACHE[key] = formatter;
50
+ }
51
+ return formatter.format(dateParam);
45
52
  }
46
53
  catch (error) {
47
54
  return (0, isEmpty_1.isEmpty)(dateParam) ? value : new Intl.DateTimeFormat(definition_1.LANG_DEFAULT, langOpts).format(dateParam);
48
55
  }
49
56
  }
57
+ const NUMBER_FORMAT_CACHE = [];
50
58
  function formatLocaleNumber(value, outputFormat, config) {
51
59
  const { lang = definition_1.LANG_DEFAULT, options } = config;
52
60
  const langOpts = options || getLocaleOptions(outputFormat);
53
61
  const valueToFormat = (outputFormat === null || outputFormat === void 0 ? void 0 : outputFormat.format) === "Percentage" /* PERCENTAGE */ ? value / 100 : value;
54
62
  try {
55
- return new Intl.NumberFormat([lang, definition_1.LANG_DEFAULT], langOpts).format(valueToFormat);
63
+ const key = lang + JSON.stringify(langOpts);
64
+ let formatter = NUMBER_FORMAT_CACHE[key];
65
+ if (!formatter) {
66
+ formatter = new Intl.NumberFormat([lang, definition_1.LANG_DEFAULT], langOpts);
67
+ NUMBER_FORMAT_CACHE[key] = formatter;
68
+ }
69
+ return formatter.format(valueToFormat);
56
70
  }
57
71
  catch (e) {
58
72
  return new Intl.NumberFormat(definition_1.LANG_DEFAULT, langOpts).format(valueToFormat);
@@ -3,4 +3,5 @@ export interface II18nDashboardToast {
3
3
  delete_record_message: string;
4
4
  add_record_message: string;
5
5
  data_views_updated_message: string;
6
+ failed_download: string;
6
7
  }
@@ -8,6 +8,7 @@ export interface II18nFilterPanel {
8
8
  aggregated_filters_label: string;
9
9
  aggregated_filters_tooltip: string;
10
10
  card_action: II18nFilterPanelCardAction;
11
+ card_all_except: string;
11
12
  card_all_selected: string;
12
13
  card_none_selected: string;
13
14
  collapsed_title: string;
@@ -1,7 +1,8 @@
1
1
  import { II18nValueContainerSearchInput } from "./II18nValueContainerSearchInput";
2
2
  export interface II18nValueContainer {
3
- search_input: II18nValueContainerSearchInput;
3
+ all_except: string;
4
+ all_selected: string;
4
5
  no_label: string;
5
6
  no_records_message: string;
6
- all_selected: string;
7
+ search_input: II18nValueContainerSearchInput;
7
8
  }
@@ -26,6 +26,7 @@ exports.I18N_DASHBOARD = {
26
26
  data_views_updated_message: 'Data views updated successfully.',
27
27
  delete_record_message: 'Record Successfully Deleted.',
28
28
  refresh_table_message: 'Record Successfully Edited.',
29
+ failed_download: 'The file(s) could not be exported at this time.',
29
30
  },
30
31
  tooltips: {
31
32
  buckets: "Buckets",
@@ -5,6 +5,7 @@ exports.I18N_FILTER_PANEL = {
5
5
  collapsed_title: 'Filters',
6
6
  aggregated_filters_label: 'Aggregated Filters',
7
7
  aggregated_filters_tooltip: 'Logic is not editable for aggregated filters',
8
+ card_all_except: 'All Except:',
8
9
  card_all_selected: 'All Selected',
9
10
  card_none_selected: 'None',
10
11
  empty_state: {
@@ -2,6 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.I18N_VALUE_CONTAINER = void 0;
4
4
  exports.I18N_VALUE_CONTAINER = {
5
+ all_except: 'All Except:',
6
+ all_selected: 'All Selected',
5
7
  no_label: 'No Label',
6
8
  no_records_message: 'No records found',
7
9
  search_input: {
@@ -10,5 +12,4 @@ exports.I18N_VALUE_CONTAINER = {
10
12
  enter_value_third_label: "to Insert",
11
13
  placeholder: 'Search or type values separated by commas. Use {{ for tokens.',
12
14
  },
13
- all_selected: 'All Selected',
14
15
  };
@@ -0,0 +1,7 @@
1
+ import { IFFiltersMergeValues } from "../../interfaces/functions/IFFiltersMergeValues";
2
+ /**
3
+ * Transforms the given MergeFilters settings object. Adds the missing properties if they do not exist.
4
+ * @param settings an object to the MergeFilters settings
5
+ * @returns a new MergeFilters settings object.
6
+ */
7
+ export declare function getMergeValuesSettings(settings?: IFFiltersMergeValues): IFFiltersMergeValues;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Transforms the given MergeFilters settings object. Adds the missing properties if they do not exist.
3
+ * @param settings an object to the MergeFilters settings
4
+ * @returns a new MergeFilters settings object.
5
+ */
6
+ export function getMergeValuesSettings(settings) {
7
+ var _a;
8
+ return {
9
+ overwriteValues: (_a = settings === null || settings === void 0 ? void 0 : settings.overwriteValues) !== null && _a !== void 0 ? _a : false,
10
+ };
11
+ }
@@ -22,6 +22,7 @@ export * from './isNullValidator';
22
22
  export * from './isRangeValidator';
23
23
  export * from './isRegularValidator';
24
24
  export * from './mergeFilters';
25
+ export * from './mergeValues';
25
26
  export * from './resolveDatasetConditions';
26
27
  export * from './resolveFilterConditions';
27
28
  export * from './resolveScopeConditions';
@@ -22,6 +22,7 @@ export * from './isNullValidator';
22
22
  export * from './isRangeValidator';
23
23
  export * from './isRegularValidator';
24
24
  export * from './mergeFilters';
25
+ export * from './mergeValues';
25
26
  export * from './resolveDatasetConditions';
26
27
  export * from './resolveFilterConditions';
27
28
  export * from './resolveScopeConditions';
@@ -3,10 +3,7 @@ import { cloneDeep } from "../../../general/object/cloneDeep";
3
3
  import { FILTER_GROUPED_COLUMN_OPERATOR } from "../../constants/common/FILTER_GROUPED_COLUMN_OPERATOR";
4
4
  import { getFilterid } from "./getFilterid";
5
5
  import { getMergeFiltersSettings } from "./getMergeFiltersSettings";
6
- import { isInValidator } from "./isInValidator";
7
- import { isNullValidator } from "./isNullValidator";
8
- import { isRangeValidator } from "./isRangeValidator";
9
- import { isRegularValidator } from "./isRegularValidator";
6
+ import { mergeValues } from "./mergeValues";
10
7
  import { resolveDatasetConditions } from "./resolveDatasetConditions";
11
8
  import { resolveFilterConditions } from "./resolveFilterConditions";
12
9
  import { resolveScopeConditions } from "./resolveScopeConditions";
@@ -111,60 +108,9 @@ function mergeFilterss(filters1 = [], filters2 = [], settings) {
111
108
  * @returns a new filter structure with overwritted props
112
109
  */
113
110
  function mergeFilterProps(filter1, filter2, settings) {
111
+ var _a, _b, _c;
114
112
  if (settings.overwriteFilterProps) {
115
- filter1 = Object.assign(Object.assign({}, filter1), { extras: filter2.extras, enabled: filter2.enabled || filter1.enabled, filterid: filter2.filterid, lookupDisplayIndex: filter2.lookupDisplayIndex, nullValues: filter2.nullValues, selectAll: filter2.selectAll });
113
+ 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, filterid: filter2.filterid, lookupDisplayIndex: filter2.lookupDisplayIndex, nullValues: filter2.nullValues, selectAll: filter2.selectAll });
116
114
  }
117
115
  return filter1;
118
116
  }
119
- /**
120
- * Gets a new value structure array by merging two value structures
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
124
- * @returns a new value structure array
125
- */
126
- function mergeValues(filter1, filter2, settings) {
127
- if (isEmpty(filter1) && isEmpty(filter2))
128
- return [];
129
- let newValues = [];
130
- let filter1Values = filter1.values || [];
131
- const filter2Values = filter2.values || [];
132
- if (!settings.overwriteValues) {
133
- if (isInValidator(filter1.validator)) {
134
- newValues = filter2Values.reduce((values, value2) => {
135
- const value1Index = filter1Values.findIndex(value1 => value2.anchor === value1.anchor && value2.cursor === value1.cursor && value2.includeCurrent === value1.includeCurrent && value2.isCalendarDate === value1.isCalendarDate && value2.number === value1.number && value2.unit === value1.unit);
136
- if (value1Index === -1) {
137
- values.push(value2);
138
- }
139
- return values;
140
- }, filter1Values);
141
- }
142
- else if (isRangeValidator(filter1.validator)) {
143
- newValues = filter2Values.reduce((values, value2) => {
144
- const value1Index = filter1Values.findIndex(value1 => value2.max === value1.max && value2.min === value1.min);
145
- if (value1Index === -1) {
146
- values.push(value2);
147
- }
148
- return values;
149
- }, filter1Values);
150
- }
151
- else if (isRegularValidator(filter1.validator) || isNullValidator(filter1.validator)) {
152
- newValues = filter2Values.reduce((values, value2) => {
153
- const value1Index = filter1Values.findIndex(value1 => value2.imageUrl === value1.imageUrl && value2.value === value1.value);
154
- if (value1Index === -1) {
155
- values.push(value2);
156
- }
157
- return values;
158
- }, filter1Values);
159
- }
160
- else {
161
- filter1Values = filter1Values.concat(filter2Values);
162
- newValues = filter1Values;
163
- }
164
- }
165
- else {
166
- filter1Values = filter2Values;
167
- newValues = filter1Values;
168
- }
169
- return newValues;
170
- }
@@ -0,0 +1,11 @@
1
+ import { IFSFilter } from "../../interfaces/common/IFSFilter";
2
+ import { IFFiltersMergeValues } from "../../interfaces/functions/IFFiltersMergeValues";
3
+ import { IFValue } from "../../interfaces/IFValue";
4
+ /**
5
+ * Gets a new value structure array by merging two value structures
6
+ * @param filter1 the target filter structure
7
+ * @param filter2 the filter to be used to merge the values
8
+ * @param settings configuration of the mergeFilter
9
+ * @returns a new value structure array
10
+ */
11
+ export declare function mergeValues(filter1: IFSFilter, filter2: IFSFilter, settings?: IFFiltersMergeValues): IFValue[];
@@ -0,0 +1,88 @@
1
+ import { isEmpty } from "../../../general/mix/isEmpty";
2
+ import { getMergeValuesSettings } from "./getMergeValuesSettings";
3
+ import { isInValidator } from "./isInValidator";
4
+ import { isNullValidator } from "./isNullValidator";
5
+ import { isRangeValidator } from "./isRangeValidator";
6
+ import { isRegularValidator } from "./isRegularValidator";
7
+ /**
8
+ * Gets a new value structure array by merging two value structures
9
+ * @param filter1 the target filter structure
10
+ * @param filter2 the filter to be used to merge the values
11
+ * @param settings configuration of the mergeFilter
12
+ * @returns a new value structure array
13
+ */
14
+ export function mergeValues(filter1, filter2, settings) {
15
+ if (isEmpty(filter1) && isEmpty(filter2))
16
+ return [];
17
+ settings = getMergeValuesSettings(settings);
18
+ let newValues = [];
19
+ let filter1Values = filter1.values || [];
20
+ const filter2Values = filter2.values || [];
21
+ if (settings.overwriteValues) {
22
+ filter1Values = filter2Values;
23
+ newValues = filter1Values;
24
+ }
25
+ else {
26
+ if (isInValidator(filter1.validator)) {
27
+ newValues = filter2Values.reduce((values, value2) => {
28
+ var _a;
29
+ const value1Index = filter1Values.findIndex(value1 => value2.anchor === value1.anchor && value2.cursor === value1.cursor && value2.includeCurrent === value1.includeCurrent && value2.isCalendarDate === value1.isCalendarDate && value2.number === value1.number && value2.unit === value1.unit);
30
+ if (value1Index === -1) {
31
+ values.push(value2);
32
+ }
33
+ else {
34
+ values[value1Index] = {
35
+ anchor: value2.anchor,
36
+ cursor: value2.cursor,
37
+ enabled: (_a = value2.enabled) !== null && _a !== void 0 ? _a : values[value1Index].enabled,
38
+ includeCurrent: value2.includeCurrent,
39
+ isCalendarDate: value2.isCalendarDate,
40
+ number: value2.number,
41
+ unit: value2.unit,
42
+ };
43
+ }
44
+ return values;
45
+ }, filter1Values);
46
+ }
47
+ else if (isRangeValidator(filter1.validator)) {
48
+ newValues = filter2Values.reduce((values, value2) => {
49
+ var _a;
50
+ const value1Index = filter1Values.findIndex(value1 => value2.max === value1.max && value2.min === value1.min);
51
+ if (value1Index === -1) {
52
+ values.push(value2);
53
+ }
54
+ else {
55
+ values[value1Index] = {
56
+ enabled: (_a = value2.enabled) !== null && _a !== void 0 ? _a : values[value1Index].enabled,
57
+ max: value2.max,
58
+ min: value2.min,
59
+ };
60
+ }
61
+ return values;
62
+ }, filter1Values);
63
+ }
64
+ else if (isRegularValidator(filter1.validator) || isNullValidator(filter1.validator)) {
65
+ newValues = filter2Values.reduce((values, value2) => {
66
+ var _a;
67
+ const value1Index = filter1Values.findIndex(value1 => value2.imageUrl === value1.imageUrl && value2.value === value1.value);
68
+ if (value1Index === -1) {
69
+ values.push(value2);
70
+ }
71
+ else {
72
+ values[value1Index] = {
73
+ enabled: (_a = value2.enabled) !== null && _a !== void 0 ? _a : values[value1Index].enabled,
74
+ imageUrl: value2.imageUrl,
75
+ value: value2.value,
76
+ valueid: value2.valueid,
77
+ };
78
+ }
79
+ return values;
80
+ }, filter1Values);
81
+ }
82
+ else {
83
+ filter1Values = filter1Values.concat(filter2Values);
84
+ newValues = filter1Values;
85
+ }
86
+ }
87
+ return newValues;
88
+ }
@@ -1,8 +1,8 @@
1
+ import { IFFiltersMergeValues } from "./IFFiltersMergeValues";
1
2
  /**
2
3
  * Structure for MergeFilters property settings
3
4
  */
4
- export interface IFFiltersMergeFilters {
5
+ export interface IFFiltersMergeFilters extends IFFiltersMergeValues {
5
6
  overwriteFilterProps?: boolean;
6
- overwriteValues?: boolean;
7
7
  setGroupedColumnOperator?: boolean;
8
8
  }
@@ -0,0 +1,3 @@
1
+ export interface IFFiltersMergeValues {
2
+ overwriteValues?: boolean;
3
+ }
@@ -2,4 +2,5 @@ export * from './IFFiltersGetData';
2
2
  export * from './IFFiltersGetValuesFromDataset';
3
3
  export * from './IFFiltersGetValuesFromModel';
4
4
  export * from './IFFiltersMergeFilters';
5
+ export * from './IFFiltersMergeValues';
5
6
  export * from './IFFiltersParamsToGetFilter';
@@ -2,4 +2,5 @@ export * from './IFFiltersGetData';
2
2
  export * from './IFFiltersGetValuesFromDataset';
3
3
  export * from './IFFiltersGetValuesFromModel';
4
4
  export * from './IFFiltersMergeFilters';
5
+ export * from './IFFiltersMergeValues';
5
6
  export * from './IFFiltersParamsToGetFilter';