@qrvey/utils 1.2.10-7 → 1.2.10-8
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.
- package/README.md +1 -1
- package/bitbucket-pipelines.yml +1 -1
- package/dist/cjs/filters/helpers/common/getMergeValuesSettings.d.ts +7 -0
- package/dist/cjs/filters/helpers/common/getMergeValuesSettings.js +15 -0
- package/dist/cjs/filters/helpers/common/index.d.ts +1 -0
- package/dist/cjs/filters/helpers/common/index.js +1 -0
- package/dist/cjs/filters/helpers/common/mergeFilters.js +2 -86
- package/dist/cjs/filters/helpers/common/mergeValues.d.ts +11 -0
- package/dist/cjs/filters/helpers/common/mergeValues.js +92 -0
- package/dist/cjs/filters/interfaces/functions/IFFiltersMergeFilters.d.ts +2 -2
- package/dist/cjs/filters/interfaces/functions/IFFiltersMergeValues.d.ts +3 -0
- package/dist/cjs/filters/interfaces/functions/IFFiltersMergeValues.js +2 -0
- package/dist/cjs/filters/interfaces/functions/index.d.ts +1 -0
- package/dist/cjs/filters/interfaces/functions/index.js +1 -0
- package/dist/cjs/format/localization.js +16 -2
- package/dist/cjs/globalization/interfaces/dashboard/II18nDashboardToast.d.ts +1 -0
- package/dist/cjs/globalization/labels/dashboard/I18N_DASHBOARD.js +1 -0
- package/dist/filters/helpers/common/getMergeValuesSettings.d.ts +7 -0
- package/dist/filters/helpers/common/getMergeValuesSettings.js +11 -0
- package/dist/filters/helpers/common/index.d.ts +1 -0
- package/dist/filters/helpers/common/index.js +1 -0
- package/dist/filters/helpers/common/mergeFilters.js +1 -85
- package/dist/filters/helpers/common/mergeValues.d.ts +11 -0
- package/dist/filters/helpers/common/mergeValues.js +88 -0
- package/dist/filters/interfaces/functions/IFFiltersMergeFilters.d.ts +2 -2
- package/dist/filters/interfaces/functions/IFFiltersMergeValues.d.ts +3 -0
- package/dist/filters/interfaces/functions/IFFiltersMergeValues.js +1 -0
- package/dist/filters/interfaces/functions/index.d.ts +1 -0
- package/dist/filters/interfaces/functions/index.js +1 -0
- package/dist/format/localization.js +16 -2
- package/dist/globalization/interfaces/dashboard/II18nDashboardToast.d.ts +1 -0
- package/dist/globalization/labels/dashboard/I18N_DASHBOARD.js +1 -0
- package/package.json +5 -4
- package/publishing.js +9 -1
- package/src/filters/helpers/common/getMergeValuesSettings.ts +12 -0
- package/src/filters/helpers/common/index.ts +1 -0
- package/src/filters/helpers/common/mergeFilters.ts +1 -81
- package/src/filters/helpers/common/mergeValues.ts +87 -0
- package/src/filters/interfaces/functions/IFFiltersMergeFilters.ts +2 -2
- package/src/filters/interfaces/functions/IFFiltersMergeValues.ts +3 -0
- package/src/filters/interfaces/functions/index.ts +1 -0
- package/src/format/localization.ts +16 -2
- package/src/globalization/interfaces/dashboard/II18nDashboardToast.ts +1 -0
- package/src/globalization/labels/dashboard/I18N_DASHBOARD.ts +1 -0
package/README.md
CHANGED
package/bitbucket-pipelines.yml
CHANGED
|
@@ -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
|
|
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
|
}
|
|
@@ -121,84 +118,3 @@ function mergeFilterProps(filter1, filter2, settings) {
|
|
|
121
118
|
}
|
|
122
119
|
return filter1;
|
|
123
120
|
}
|
|
124
|
-
/**
|
|
125
|
-
* Gets a new value structure array by merging two value structures
|
|
126
|
-
* @param filter1 the target filter structure
|
|
127
|
-
* @param filter2 the filter to be used to merge the values
|
|
128
|
-
* @param settings configuration of the mergeFilter
|
|
129
|
-
* @returns a new value structure array
|
|
130
|
-
*/
|
|
131
|
-
function mergeValues(filter1, filter2, settings) {
|
|
132
|
-
if ((0, isEmpty_1.isEmpty)(filter1) && (0, isEmpty_1.isEmpty)(filter2))
|
|
133
|
-
return [];
|
|
134
|
-
let newValues = [];
|
|
135
|
-
let filter1Values = filter1.values || [];
|
|
136
|
-
const filter2Values = filter2.values || [];
|
|
137
|
-
if (settings.overwriteValues) {
|
|
138
|
-
filter1Values = filter2Values;
|
|
139
|
-
newValues = filter1Values;
|
|
140
|
-
}
|
|
141
|
-
else {
|
|
142
|
-
if ((0, isInValidator_1.isInValidator)(filter1.validator)) {
|
|
143
|
-
newValues = filter2Values.reduce((values, value2) => {
|
|
144
|
-
var _a;
|
|
145
|
-
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);
|
|
146
|
-
if (value1Index === -1) {
|
|
147
|
-
values.push(value2);
|
|
148
|
-
}
|
|
149
|
-
else {
|
|
150
|
-
values[value1Index] = {
|
|
151
|
-
anchor: value2.anchor,
|
|
152
|
-
cursor: value2.cursor,
|
|
153
|
-
enabled: (_a = value2.enabled) !== null && _a !== void 0 ? _a : values[value1Index].enabled,
|
|
154
|
-
includeCurrent: value2.includeCurrent,
|
|
155
|
-
isCalendarDate: value2.isCalendarDate,
|
|
156
|
-
number: value2.number,
|
|
157
|
-
unit: value2.unit,
|
|
158
|
-
};
|
|
159
|
-
}
|
|
160
|
-
return values;
|
|
161
|
-
}, filter1Values);
|
|
162
|
-
}
|
|
163
|
-
else if ((0, isRangeValidator_1.isRangeValidator)(filter1.validator)) {
|
|
164
|
-
newValues = filter2Values.reduce((values, value2) => {
|
|
165
|
-
var _a;
|
|
166
|
-
const value1Index = filter1Values.findIndex(value1 => value2.max === value1.max && value2.min === value1.min);
|
|
167
|
-
if (value1Index === -1) {
|
|
168
|
-
values.push(value2);
|
|
169
|
-
}
|
|
170
|
-
else {
|
|
171
|
-
values[value1Index] = {
|
|
172
|
-
enabled: (_a = value2.enabled) !== null && _a !== void 0 ? _a : values[value1Index].enabled,
|
|
173
|
-
max: value2.max,
|
|
174
|
-
min: value2.min,
|
|
175
|
-
};
|
|
176
|
-
}
|
|
177
|
-
return values;
|
|
178
|
-
}, filter1Values);
|
|
179
|
-
}
|
|
180
|
-
else if ((0, isRegularValidator_1.isRegularValidator)(filter1.validator) || (0, isNullValidator_1.isNullValidator)(filter1.validator)) {
|
|
181
|
-
newValues = filter2Values.reduce((values, value2) => {
|
|
182
|
-
var _a;
|
|
183
|
-
const value1Index = filter1Values.findIndex(value1 => value2.imageUrl === value1.imageUrl && value2.value === value1.value);
|
|
184
|
-
if (value1Index === -1) {
|
|
185
|
-
values.push(value2);
|
|
186
|
-
}
|
|
187
|
-
else {
|
|
188
|
-
values[value1Index] = {
|
|
189
|
-
enabled: (_a = value2.enabled) !== null && _a !== void 0 ? _a : values[value1Index].enabled,
|
|
190
|
-
imageUrl: value2.imageUrl,
|
|
191
|
-
value: value2.value,
|
|
192
|
-
valueid: value2.valueid,
|
|
193
|
-
};
|
|
194
|
-
}
|
|
195
|
-
return values;
|
|
196
|
-
}, filter1Values);
|
|
197
|
-
}
|
|
198
|
-
else {
|
|
199
|
-
filter1Values = filter1Values.concat(filter2Values);
|
|
200
|
-
newValues = filter1Values;
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
return newValues;
|
|
204
|
-
}
|
|
@@ -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
|
}
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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);
|
|
@@ -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",
|
|
@@ -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 {
|
|
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";
|
|
@@ -117,84 +114,3 @@ function mergeFilterProps(filter1, filter2, settings) {
|
|
|
117
114
|
}
|
|
118
115
|
return filter1;
|
|
119
116
|
}
|
|
120
|
-
/**
|
|
121
|
-
* Gets a new value structure array by merging two value structures
|
|
122
|
-
* @param filter1 the target filter structure
|
|
123
|
-
* @param filter2 the filter to be used to merge the values
|
|
124
|
-
* @param settings configuration of the mergeFilter
|
|
125
|
-
* @returns a new value structure array
|
|
126
|
-
*/
|
|
127
|
-
function mergeValues(filter1, filter2, settings) {
|
|
128
|
-
if (isEmpty(filter1) && isEmpty(filter2))
|
|
129
|
-
return [];
|
|
130
|
-
let newValues = [];
|
|
131
|
-
let filter1Values = filter1.values || [];
|
|
132
|
-
const filter2Values = filter2.values || [];
|
|
133
|
-
if (settings.overwriteValues) {
|
|
134
|
-
filter1Values = filter2Values;
|
|
135
|
-
newValues = filter1Values;
|
|
136
|
-
}
|
|
137
|
-
else {
|
|
138
|
-
if (isInValidator(filter1.validator)) {
|
|
139
|
-
newValues = filter2Values.reduce((values, value2) => {
|
|
140
|
-
var _a;
|
|
141
|
-
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);
|
|
142
|
-
if (value1Index === -1) {
|
|
143
|
-
values.push(value2);
|
|
144
|
-
}
|
|
145
|
-
else {
|
|
146
|
-
values[value1Index] = {
|
|
147
|
-
anchor: value2.anchor,
|
|
148
|
-
cursor: value2.cursor,
|
|
149
|
-
enabled: (_a = value2.enabled) !== null && _a !== void 0 ? _a : values[value1Index].enabled,
|
|
150
|
-
includeCurrent: value2.includeCurrent,
|
|
151
|
-
isCalendarDate: value2.isCalendarDate,
|
|
152
|
-
number: value2.number,
|
|
153
|
-
unit: value2.unit,
|
|
154
|
-
};
|
|
155
|
-
}
|
|
156
|
-
return values;
|
|
157
|
-
}, filter1Values);
|
|
158
|
-
}
|
|
159
|
-
else if (isRangeValidator(filter1.validator)) {
|
|
160
|
-
newValues = filter2Values.reduce((values, value2) => {
|
|
161
|
-
var _a;
|
|
162
|
-
const value1Index = filter1Values.findIndex(value1 => value2.max === value1.max && value2.min === value1.min);
|
|
163
|
-
if (value1Index === -1) {
|
|
164
|
-
values.push(value2);
|
|
165
|
-
}
|
|
166
|
-
else {
|
|
167
|
-
values[value1Index] = {
|
|
168
|
-
enabled: (_a = value2.enabled) !== null && _a !== void 0 ? _a : values[value1Index].enabled,
|
|
169
|
-
max: value2.max,
|
|
170
|
-
min: value2.min,
|
|
171
|
-
};
|
|
172
|
-
}
|
|
173
|
-
return values;
|
|
174
|
-
}, filter1Values);
|
|
175
|
-
}
|
|
176
|
-
else if (isRegularValidator(filter1.validator) || isNullValidator(filter1.validator)) {
|
|
177
|
-
newValues = filter2Values.reduce((values, value2) => {
|
|
178
|
-
var _a;
|
|
179
|
-
const value1Index = filter1Values.findIndex(value1 => value2.imageUrl === value1.imageUrl && value2.value === value1.value);
|
|
180
|
-
if (value1Index === -1) {
|
|
181
|
-
values.push(value2);
|
|
182
|
-
}
|
|
183
|
-
else {
|
|
184
|
-
values[value1Index] = {
|
|
185
|
-
enabled: (_a = value2.enabled) !== null && _a !== void 0 ? _a : values[value1Index].enabled,
|
|
186
|
-
imageUrl: value2.imageUrl,
|
|
187
|
-
value: value2.value,
|
|
188
|
-
valueid: value2.valueid,
|
|
189
|
-
};
|
|
190
|
-
}
|
|
191
|
-
return values;
|
|
192
|
-
}, filter1Values);
|
|
193
|
-
}
|
|
194
|
-
else {
|
|
195
|
-
filter1Values = filter1Values.concat(filter2Values);
|
|
196
|
-
newValues = filter1Values;
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
return newValues;
|
|
200
|
-
}
|
|
@@ -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 @@
|
|
|
1
|
+
export {};
|
|
@@ -24,6 +24,7 @@ export const formatWithLocale = (value, outputFormat, config = {}) => {
|
|
|
24
24
|
return formatLocaleNumber(value, outputFormat, config);
|
|
25
25
|
}
|
|
26
26
|
};
|
|
27
|
+
const DATE_FORMAT_CACHE = [];
|
|
27
28
|
function formatLocaleDate(value, outputFormat, config) {
|
|
28
29
|
const { lang = LANG_DEFAULT, options } = config;
|
|
29
30
|
const dateValue = value === null || value === void 0 ? void 0 : value.replace(/Z$/i, '');
|
|
@@ -35,18 +36,31 @@ function formatLocaleDate(value, outputFormat, config) {
|
|
|
35
36
|
langOpts = DATETIME_OPTIONS;
|
|
36
37
|
}
|
|
37
38
|
try {
|
|
38
|
-
|
|
39
|
+
const key = lang + JSON.stringify(langOpts);
|
|
40
|
+
let formatter = DATE_FORMAT_CACHE[key];
|
|
41
|
+
if (!formatter) {
|
|
42
|
+
formatter = new Intl.DateTimeFormat([lang, LANG_DEFAULT], langOpts);
|
|
43
|
+
DATE_FORMAT_CACHE[key] = formatter;
|
|
44
|
+
}
|
|
45
|
+
return formatter.format(dateParam);
|
|
39
46
|
}
|
|
40
47
|
catch (error) {
|
|
41
48
|
return isEmpty(dateParam) ? value : new Intl.DateTimeFormat(LANG_DEFAULT, langOpts).format(dateParam);
|
|
42
49
|
}
|
|
43
50
|
}
|
|
51
|
+
const NUMBER_FORMAT_CACHE = [];
|
|
44
52
|
function formatLocaleNumber(value, outputFormat, config) {
|
|
45
53
|
const { lang = LANG_DEFAULT, options } = config;
|
|
46
54
|
const langOpts = options || getLocaleOptions(outputFormat);
|
|
47
55
|
const valueToFormat = (outputFormat === null || outputFormat === void 0 ? void 0 : outputFormat.format) === "Percentage" /* PERCENTAGE */ ? value / 100 : value;
|
|
48
56
|
try {
|
|
49
|
-
|
|
57
|
+
const key = lang + JSON.stringify(langOpts);
|
|
58
|
+
let formatter = NUMBER_FORMAT_CACHE[key];
|
|
59
|
+
if (!formatter) {
|
|
60
|
+
formatter = new Intl.NumberFormat([lang, LANG_DEFAULT], langOpts);
|
|
61
|
+
NUMBER_FORMAT_CACHE[key] = formatter;
|
|
62
|
+
}
|
|
63
|
+
return formatter.format(valueToFormat);
|
|
50
64
|
}
|
|
51
65
|
catch (e) {
|
|
52
66
|
return new Intl.NumberFormat(LANG_DEFAULT, langOpts).format(valueToFormat);
|
|
@@ -23,6 +23,7 @@ export const I18N_DASHBOARD = {
|
|
|
23
23
|
data_views_updated_message: 'Data views updated successfully.',
|
|
24
24
|
delete_record_message: 'Record Successfully Deleted.',
|
|
25
25
|
refresh_table_message: 'Record Successfully Edited.',
|
|
26
|
+
failed_download: 'The file(s) could not be exported at this time.',
|
|
26
27
|
},
|
|
27
28
|
tooltips: {
|
|
28
29
|
buckets: "Buckets",
|
package/package.json
CHANGED
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qrvey/utils",
|
|
3
|
-
"version": "1.2.10-
|
|
3
|
+
"version": "1.2.10-8",
|
|
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",
|
|
7
7
|
"scripts": {
|
|
8
8
|
"build": "tsc && tsc -m commonjs --outDir dist/cjs",
|
|
9
9
|
"docs": "./node_modules/.bin/jsdoc -c ./jsdoc.config.json",
|
|
10
|
+
"doxs": "doxdox './dist/**/*.js' --ignore './dist/cjs/**/*.js' --output README.md --layout markdown --package ./package.json",
|
|
11
|
+
"lint": "eslint src --quiet --exit-on-fatal-error --ext .ts,.js",
|
|
12
|
+
"lint-dev": "eslint src --debug --ext .ts,.tsx",
|
|
10
13
|
"publishing": "node prepareToPublish.js && np",
|
|
11
14
|
"publishing-prerelease": "node prepareToPublish.js && np --any-branch --tag=$npm_config_tag",
|
|
12
15
|
"publishing-v2": "node publishing.js --np-new-version=$npm_config_np_new_version --np-any-branch=$npm_config_np_any_branch --np-tag=$npm_config_np_tag",
|
|
13
16
|
"test": "jest test",
|
|
14
|
-
"test:watch": "jest --watch test"
|
|
15
|
-
"lint": "eslint src --quiet --exit-on-fatal-error --ext .ts,.js",
|
|
16
|
-
"lint-dev": "eslint src --debug --ext .ts,.tsx"
|
|
17
|
+
"test:watch": "jest --watch test"
|
|
17
18
|
},
|
|
18
19
|
"author": "Qrvey Inc",
|
|
19
20
|
"license": "MIT",
|
package/publishing.js
CHANGED
|
@@ -134,6 +134,7 @@ async function startGeneratingDocs(settings) {
|
|
|
134
134
|
console.log('==>>> Starting the Docs generation');
|
|
135
135
|
|
|
136
136
|
await generatingDocument(settings);
|
|
137
|
+
await changingVersion(settings);
|
|
137
138
|
await pushingChanges(settings);
|
|
138
139
|
}
|
|
139
140
|
|
|
@@ -142,6 +143,13 @@ async function generatingDocument(settings) {
|
|
|
142
143
|
await execute(`doxdox './dist/.+\\.js' --output ${settings.docsFileName} --ignore './dist/cjs/.+\\.js' --package ${settings.packagePath}`);
|
|
143
144
|
}
|
|
144
145
|
|
|
146
|
+
async function changingVersion(settings) {
|
|
147
|
+
console.log('==>>> Replacing the old version in the document');
|
|
148
|
+
const doc = await fs.readFileSync(settings.docsPath, 'utf8');
|
|
149
|
+
const replacedDoc = doc.replace(settings.currentVersion, settings.newVersion);
|
|
150
|
+
await fs.writeFileSync(settings.docsPath, replacedDoc, 'utf8');
|
|
151
|
+
}
|
|
152
|
+
|
|
145
153
|
async function pushingChanges(settings) {
|
|
146
154
|
console.log('==>>> Commiting and Pushing Docs changes...');
|
|
147
155
|
|
|
@@ -181,8 +189,8 @@ async function init() {
|
|
|
181
189
|
|
|
182
190
|
await cleaningProject(settings);
|
|
183
191
|
await buildingBundle(settings);
|
|
184
|
-
await startPublishingVersion(settings);
|
|
185
192
|
await startGeneratingDocs(settings);
|
|
193
|
+
await startPublishingVersion(settings);
|
|
186
194
|
console.info('Finished Publishing');
|
|
187
195
|
} catch (err) {
|
|
188
196
|
console.error('Error: ', err);
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { IFFiltersMergeValues } from "../../interfaces/functions/IFFiltersMergeValues";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Transforms the given MergeFilters settings object. Adds the missing properties if they do not exist.
|
|
5
|
+
* @param settings an object to the MergeFilters settings
|
|
6
|
+
* @returns a new MergeFilters settings object.
|
|
7
|
+
*/
|
|
8
|
+
export function getMergeValuesSettings(settings?: IFFiltersMergeValues): IFFiltersMergeValues {
|
|
9
|
+
return {
|
|
10
|
+
overwriteValues: settings?.overwriteValues ?? false,
|
|
11
|
+
};
|
|
12
|
+
}
|
|
@@ -24,6 +24,7 @@ export * from './isNullValidator';
|
|
|
24
24
|
export * from './isRangeValidator';
|
|
25
25
|
export * from './isRegularValidator';
|
|
26
26
|
export * from './mergeFilters';
|
|
27
|
+
export * from './mergeValues';
|
|
27
28
|
export * from './resolveDatasetConditions';
|
|
28
29
|
export * from './resolveFilterConditions';
|
|
29
30
|
export * from './resolveScopeConditions';
|
|
@@ -5,18 +5,11 @@ import { IFSData } from "../../interfaces/common/IFSData";
|
|
|
5
5
|
import { IFSDataset } from "../../interfaces/common/IFSDataset";
|
|
6
6
|
import { IFSFilter } from "../../interfaces/common/IFSFilter";
|
|
7
7
|
import { IFSScope } from "../../interfaces/common/IFSScope";
|
|
8
|
-
import { IFSValue } from "../../interfaces/common/IFSValue";
|
|
9
|
-
import { IFSValueRange } from "../../interfaces/common/IFSValueRange";
|
|
10
|
-
import { IFSValueRelativeDate } from "../../interfaces/common/IFSValueRelativeDate";
|
|
11
8
|
import { IFFiltersMergeFilters } from "../../interfaces/functions/IFFiltersMergeFilters";
|
|
12
|
-
import { IFValue } from "../../interfaces/IFValue";
|
|
13
9
|
import { IFUData } from "../../interfaces/ui/IFUData";
|
|
14
10
|
import { getFilterid } from "./getFilterid";
|
|
15
11
|
import { getMergeFiltersSettings } from "./getMergeFiltersSettings";
|
|
16
|
-
import {
|
|
17
|
-
import { isNullValidator } from "./isNullValidator";
|
|
18
|
-
import { isRangeValidator } from "./isRangeValidator";
|
|
19
|
-
import { isRegularValidator } from "./isRegularValidator";
|
|
12
|
+
import { mergeValues } from "./mergeValues";
|
|
20
13
|
import { resolveDatasetConditions } from "./resolveDatasetConditions";
|
|
21
14
|
import { resolveFilterConditions } from "./resolveFilterConditions";
|
|
22
15
|
import { resolveScopeConditions } from "./resolveScopeConditions";
|
|
@@ -147,76 +140,3 @@ function mergeFilterProps(filter1: IFSFilter, filter2: IFSFilter, settings?: IFF
|
|
|
147
140
|
}
|
|
148
141
|
return filter1;
|
|
149
142
|
}
|
|
150
|
-
|
|
151
|
-
/**
|
|
152
|
-
* Gets a new value structure array by merging two value structures
|
|
153
|
-
* @param filter1 the target filter structure
|
|
154
|
-
* @param filter2 the filter to be used to merge the values
|
|
155
|
-
* @param settings configuration of the mergeFilter
|
|
156
|
-
* @returns a new value structure array
|
|
157
|
-
*/
|
|
158
|
-
function mergeValues(filter1: IFSFilter, filter2: IFSFilter, settings?: IFFiltersMergeFilters): IFValue[] {
|
|
159
|
-
if (isEmpty(filter1) && isEmpty(filter2)) return [];
|
|
160
|
-
|
|
161
|
-
let newValues = [];
|
|
162
|
-
let filter1Values = filter1.values || [];
|
|
163
|
-
const filter2Values = filter2.values || [];
|
|
164
|
-
if (settings.overwriteValues) {
|
|
165
|
-
filter1Values = filter2Values;
|
|
166
|
-
newValues = filter1Values;
|
|
167
|
-
} else {
|
|
168
|
-
if (isInValidator(filter1.validator)) {
|
|
169
|
-
newValues = filter2Values.reduce((values: IFSValueRelativeDate[], value2: IFSValueRelativeDate) => {
|
|
170
|
-
const value1Index = (filter1Values as IFSValueRelativeDate[]).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);
|
|
171
|
-
if (value1Index === -1) {
|
|
172
|
-
values.push(value2);
|
|
173
|
-
} else {
|
|
174
|
-
values[value1Index] = {
|
|
175
|
-
anchor: value2.anchor,
|
|
176
|
-
cursor: value2.cursor,
|
|
177
|
-
enabled: value2.enabled ?? values[value1Index].enabled,
|
|
178
|
-
includeCurrent: value2.includeCurrent,
|
|
179
|
-
isCalendarDate: value2.isCalendarDate,
|
|
180
|
-
number: value2.number,
|
|
181
|
-
unit: value2.unit,
|
|
182
|
-
};
|
|
183
|
-
}
|
|
184
|
-
return values;
|
|
185
|
-
}, filter1Values as IFValue[]);
|
|
186
|
-
} else if (isRangeValidator(filter1.validator)) {
|
|
187
|
-
newValues = filter2Values.reduce((values: IFSValueRange[], value2: IFSValueRange) => {
|
|
188
|
-
const value1Index = (filter1Values as IFSValueRange[]).findIndex(value1 => value2.max === value1.max && value2.min === value1.min);
|
|
189
|
-
if (value1Index === -1) {
|
|
190
|
-
values.push(value2);
|
|
191
|
-
} else {
|
|
192
|
-
values[value1Index] = {
|
|
193
|
-
enabled: value2.enabled ?? values[value1Index].enabled,
|
|
194
|
-
max: value2.max,
|
|
195
|
-
min: value2.min,
|
|
196
|
-
};
|
|
197
|
-
}
|
|
198
|
-
return values;
|
|
199
|
-
}, filter1Values as IFValue[]);
|
|
200
|
-
} else if (isRegularValidator(filter1.validator) || isNullValidator(filter1.validator)) {
|
|
201
|
-
newValues = filter2Values.reduce((values: IFSValue[], value2: IFSValue) => {
|
|
202
|
-
const value1Index = (filter1Values as IFSValue[]).findIndex(value1 => value2.imageUrl === value1.imageUrl && value2.value === value1.value);
|
|
203
|
-
if (value1Index === -1) {
|
|
204
|
-
values.push(value2);
|
|
205
|
-
} else {
|
|
206
|
-
values[value1Index] = {
|
|
207
|
-
enabled: value2.enabled ?? values[value1Index].enabled,
|
|
208
|
-
imageUrl: value2.imageUrl,
|
|
209
|
-
value: value2.value,
|
|
210
|
-
valueid: value2.valueid,
|
|
211
|
-
};
|
|
212
|
-
}
|
|
213
|
-
return values;
|
|
214
|
-
}, filter1Values as IFValue[]);
|
|
215
|
-
} else {
|
|
216
|
-
filter1Values = filter1Values.concat(filter2Values);
|
|
217
|
-
newValues = filter1Values;
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
return newValues;
|
|
222
|
-
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { isEmpty } from "../../../general/mix/isEmpty";
|
|
2
|
+
import { IFSFilter } from "../../interfaces/common/IFSFilter";
|
|
3
|
+
import { IFSValue } from "../../interfaces/common/IFSValue";
|
|
4
|
+
import { IFSValueRange } from "../../interfaces/common/IFSValueRange";
|
|
5
|
+
import { IFSValueRelativeDate } from "../../interfaces/common/IFSValueRelativeDate";
|
|
6
|
+
import { IFFiltersMergeValues } from "../../interfaces/functions/IFFiltersMergeValues";
|
|
7
|
+
import { IFValue } from "../../interfaces/IFValue";
|
|
8
|
+
import { getMergeValuesSettings } from "./getMergeValuesSettings";
|
|
9
|
+
import { isInValidator } from "./isInValidator";
|
|
10
|
+
import { isNullValidator } from "./isNullValidator";
|
|
11
|
+
import { isRangeValidator } from "./isRangeValidator";
|
|
12
|
+
import { isRegularValidator } from "./isRegularValidator";
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Gets a new value structure array by merging two value structures
|
|
16
|
+
* @param filter1 the target filter structure
|
|
17
|
+
* @param filter2 the filter to be used to merge the values
|
|
18
|
+
* @param settings configuration of the mergeFilter
|
|
19
|
+
* @returns a new value structure array
|
|
20
|
+
*/
|
|
21
|
+
export function mergeValues(filter1: IFSFilter, filter2: IFSFilter, settings?: IFFiltersMergeValues): IFValue[] {
|
|
22
|
+
if (isEmpty(filter1) && isEmpty(filter2)) return [];
|
|
23
|
+
|
|
24
|
+
settings = getMergeValuesSettings(settings);
|
|
25
|
+
|
|
26
|
+
let newValues = [];
|
|
27
|
+
let filter1Values = filter1.values || [];
|
|
28
|
+
const filter2Values = filter2.values || [];
|
|
29
|
+
if (settings.overwriteValues) {
|
|
30
|
+
filter1Values = filter2Values;
|
|
31
|
+
newValues = filter1Values;
|
|
32
|
+
} else {
|
|
33
|
+
if (isInValidator(filter1.validator)) {
|
|
34
|
+
newValues = filter2Values.reduce((values: IFSValueRelativeDate[], value2: IFSValueRelativeDate) => {
|
|
35
|
+
const value1Index = (filter1Values as IFSValueRelativeDate[]).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);
|
|
36
|
+
if (value1Index === -1) {
|
|
37
|
+
values.push(value2);
|
|
38
|
+
} else {
|
|
39
|
+
values[value1Index] = {
|
|
40
|
+
anchor: value2.anchor,
|
|
41
|
+
cursor: value2.cursor,
|
|
42
|
+
enabled: value2.enabled ?? values[value1Index].enabled,
|
|
43
|
+
includeCurrent: value2.includeCurrent,
|
|
44
|
+
isCalendarDate: value2.isCalendarDate,
|
|
45
|
+
number: value2.number,
|
|
46
|
+
unit: value2.unit,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
return values;
|
|
50
|
+
}, filter1Values as IFValue[]);
|
|
51
|
+
} else if (isRangeValidator(filter1.validator)) {
|
|
52
|
+
newValues = filter2Values.reduce((values: IFSValueRange[], value2: IFSValueRange) => {
|
|
53
|
+
const value1Index = (filter1Values as IFSValueRange[]).findIndex(value1 => value2.max === value1.max && value2.min === value1.min);
|
|
54
|
+
if (value1Index === -1) {
|
|
55
|
+
values.push(value2);
|
|
56
|
+
} else {
|
|
57
|
+
values[value1Index] = {
|
|
58
|
+
enabled: value2.enabled ?? values[value1Index].enabled,
|
|
59
|
+
max: value2.max,
|
|
60
|
+
min: value2.min,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
return values;
|
|
64
|
+
}, filter1Values as IFValue[]);
|
|
65
|
+
} else if (isRegularValidator(filter1.validator) || isNullValidator(filter1.validator)) {
|
|
66
|
+
newValues = filter2Values.reduce((values: IFSValue[], value2: IFSValue) => {
|
|
67
|
+
const value1Index = (filter1Values as IFSValue[]).findIndex(value1 => value2.imageUrl === value1.imageUrl && value2.value === value1.value);
|
|
68
|
+
if (value1Index === -1) {
|
|
69
|
+
values.push(value2);
|
|
70
|
+
} else {
|
|
71
|
+
values[value1Index] = {
|
|
72
|
+
enabled: value2.enabled ?? values[value1Index].enabled,
|
|
73
|
+
imageUrl: value2.imageUrl,
|
|
74
|
+
value: value2.value,
|
|
75
|
+
valueid: value2.valueid,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
return values;
|
|
79
|
+
}, filter1Values as IFValue[]);
|
|
80
|
+
} else {
|
|
81
|
+
filter1Values = filter1Values.concat(filter2Values);
|
|
82
|
+
newValues = filter1Values;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
return newValues;
|
|
87
|
+
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
import { IFFiltersMergeValues } from "./IFFiltersMergeValues";
|
|
1
2
|
|
|
2
3
|
/**
|
|
3
4
|
* Structure for MergeFilters property settings
|
|
4
5
|
*/
|
|
5
|
-
export interface IFFiltersMergeFilters {
|
|
6
|
+
export interface IFFiltersMergeFilters extends IFFiltersMergeValues{
|
|
6
7
|
overwriteFilterProps?: boolean;
|
|
7
|
-
overwriteValues?: boolean;
|
|
8
8
|
setGroupedColumnOperator?: boolean;
|
|
9
9
|
}
|
|
@@ -27,6 +27,7 @@ export const formatWithLocale = (value: any, outputFormat: IFormatOutputFormat,
|
|
|
27
27
|
}
|
|
28
28
|
};
|
|
29
29
|
|
|
30
|
+
const DATE_FORMAT_CACHE = [];
|
|
30
31
|
function formatLocaleDate(value: any, outputFormat: IFormatOutputFormat, config: IFormatConfig) {
|
|
31
32
|
const { lang = LANG_DEFAULT, options } = config;
|
|
32
33
|
const dateValue = value?.replace(/Z$/i, '');
|
|
@@ -37,18 +38,31 @@ function formatLocaleDate(value: any, outputFormat: IFormatOutputFormat, config:
|
|
|
37
38
|
if (DATETIME_COLUMN_FORMAT.includes(format)) langOpts = DATETIME_OPTIONS;
|
|
38
39
|
}
|
|
39
40
|
try {
|
|
40
|
-
|
|
41
|
+
const key = lang + JSON.stringify(langOpts);
|
|
42
|
+
let formatter = DATE_FORMAT_CACHE[key];
|
|
43
|
+
if (!formatter) {
|
|
44
|
+
formatter = new Intl.DateTimeFormat([lang, LANG_DEFAULT], langOpts);
|
|
45
|
+
DATE_FORMAT_CACHE[key] = formatter;
|
|
46
|
+
}
|
|
47
|
+
return formatter.format(dateParam);
|
|
41
48
|
} catch (error) {
|
|
42
49
|
return isEmpty(dateParam) ? value : new Intl.DateTimeFormat(LANG_DEFAULT, langOpts).format(dateParam);
|
|
43
50
|
}
|
|
44
51
|
}
|
|
45
52
|
|
|
53
|
+
const NUMBER_FORMAT_CACHE = [];
|
|
46
54
|
function formatLocaleNumber(value: any, outputFormat: IFormatOutputFormat, config: IFormatConfig,) {
|
|
47
55
|
const { lang = LANG_DEFAULT, options } = config;
|
|
48
56
|
const langOpts = options || getLocaleOptions(outputFormat);
|
|
49
57
|
const valueToFormat = outputFormat?.format === LOCALE_FORMATS.PERCENTAGE ? value/100 : value;
|
|
50
58
|
try {
|
|
51
|
-
|
|
59
|
+
const key = lang + JSON.stringify(langOpts);
|
|
60
|
+
let formatter = NUMBER_FORMAT_CACHE[key];
|
|
61
|
+
if (!formatter) {
|
|
62
|
+
formatter = new Intl.NumberFormat([lang, LANG_DEFAULT], langOpts);
|
|
63
|
+
NUMBER_FORMAT_CACHE[key] = formatter;
|
|
64
|
+
}
|
|
65
|
+
return formatter.format(valueToFormat);
|
|
52
66
|
} catch (e) {
|
|
53
67
|
return new Intl.NumberFormat(LANG_DEFAULT, langOpts).format(valueToFormat);
|
|
54
68
|
}
|
|
@@ -25,6 +25,7 @@ export const I18N_DASHBOARD: II18nDashboard = {
|
|
|
25
25
|
data_views_updated_message: 'Data views updated successfully.',
|
|
26
26
|
delete_record_message: 'Record Successfully Deleted.',
|
|
27
27
|
refresh_table_message: 'Record Successfully Edited.',
|
|
28
|
+
failed_download: 'The file(s) could not be exported at this time.',
|
|
28
29
|
},
|
|
29
30
|
tooltips: {
|
|
30
31
|
buckets: "Buckets",
|