@qrvey/utils 1.4.4 → 1.5.0-1
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/dist/cjs/column_format/constants/DURATION_PARTS_LIST.d.ts +1 -0
- package/dist/cjs/column_format/constants/DURATION_PARTS_LIST.js +12 -0
- package/dist/cjs/column_format/constants/index.d.ts +1 -0
- package/dist/cjs/column_format/constants/index.js +1 -0
- package/dist/cjs/column_format/helpers/defineXYChartFormat.js +4 -1
- package/dist/cjs/columns/interfaces/IColumn.d.ts +0 -1
- package/dist/cjs/filters/adapters/FDToFlatUI.js +2 -7
- package/dist/cjs/filters/adapters/FDToUI.js +2 -5
- package/dist/cjs/filters/adapters/UIToFD.js +0 -1
- package/dist/cjs/filters/adapters/UIToFlatUI.js +2 -7
- package/dist/cjs/filters/adapters/UIToOldLogic.js +0 -3
- package/dist/cjs/filters/adapters/flatUIToFD.js +0 -1
- package/dist/cjs/filters/adapters/flatUIToOldLogic.js +0 -2
- package/dist/cjs/filters/adapters/flatUIToUI.js +0 -4
- package/dist/cjs/filters/adapters/logicToFlatUI.js +10 -14
- package/dist/cjs/filters/adapters/transformFilters.js +0 -4
- package/dist/cjs/filters/constants/common/FILTER_TOKENS_STRUCTURE_TYPE.d.ts +8 -0
- package/dist/cjs/filters/constants/common/FILTER_TOKENS_STRUCTURE_TYPE.js +12 -0
- package/dist/cjs/filters/constants/common/index.d.ts +1 -0
- package/dist/cjs/filters/constants/common/index.js +1 -0
- package/dist/cjs/filters/helpers/OLD_getAggFilters.js +0 -1
- package/dist/cjs/filters/helpers/common/excludeFiltersByParams.js +3 -4
- package/dist/cjs/filters/helpers/common/mergeFilters.js +0 -1
- package/dist/cjs/filters/helpers/common/resolveDatasetConditions.js +0 -4
- package/dist/cjs/filters/helpers/common/resolveFilterConditions.js +3 -5
- package/dist/cjs/filters/helpers/filtersTokensToString.d.ts +7 -0
- package/dist/cjs/filters/helpers/filtersTokensToString.js +20 -0
- package/dist/cjs/filters/helpers/getTokensFromFilters.d.ts +10 -0
- package/dist/cjs/filters/helpers/getTokensFromFilters.js +111 -0
- package/dist/cjs/filters/helpers/getVerboseFilter.d.ts +9 -0
- package/dist/cjs/filters/helpers/getVerboseFilter.js +16 -0
- package/dist/cjs/filters/helpers/index.d.ts +3 -0
- package/dist/cjs/filters/helpers/index.js +3 -0
- package/dist/cjs/filters/helpers/ui/getUpdatedUIFilters.js +2 -3
- package/dist/cjs/filters/helpers/ui/resolveUIFlatFilterByParams.js +2 -3
- package/dist/cjs/filters/interfaces/IFFilterTokens.d.ts +5 -0
- package/dist/cjs/filters/interfaces/IFFilterTokens.js +2 -0
- package/dist/cjs/filters/interfaces/IFTokensFromFiltersSettings.d.ts +7 -0
- package/dist/cjs/filters/interfaces/IFTokensFromFiltersSettings.js +2 -0
- package/dist/cjs/filters/interfaces/OLD_IFilterExpression.d.ts +0 -1
- package/dist/cjs/filters/interfaces/common/IFSDataset.d.ts +0 -1
- package/dist/cjs/filters/interfaces/common/IFSParamsToGetFilter.d.ts +0 -1
- package/dist/cjs/filters/interfaces/index.d.ts +2 -0
- package/dist/cjs/filters/interfaces/index.js +2 -0
- package/dist/cjs/filters/services/UChartApi.js +1 -2
- package/dist/cjs/filters/services/UChartPaginationApi.js +1 -1
- package/dist/cjs/format/definition.d.ts +2 -1
- package/dist/cjs/format/format.js +4 -1
- package/dist/cjs/format/localization.js +18 -2
- package/dist/cjs/globalization/interfaces/chart_builder/II18nChartBuilderTableStyleOptions.d.ts +4 -0
- package/dist/cjs/globalization/labels/chart_builder/I18N_CHART_BUILDER_COMPARISION_OPTIONS.js +1 -1
- package/dist/cjs/globalization/labels/chart_builder/I18N_CHART_BUILDER_STYLE_OPTIONS.js +5 -1
- package/dist/cjs/globalization/service/i18nextBuilder.d.ts +7 -0
- package/dist/cjs/globalization/service/i18nextBuilder.js +25 -14
- package/dist/cjs/interfaces/format/IFormatOutputFormat.Interface.d.ts +1 -0
- package/dist/cjs/services/adapters/BColumnsToUIColumns.adapter.js +0 -2
- package/dist/cjs/services/adapters/BDatasetsToUIDatasets.adapter.js +0 -1
- package/dist/cjs/services/helpers/getDefaultQuestionListOptionsAttributes.js +0 -2
- package/dist/column_format/constants/DURATION_PARTS_LIST.d.ts +1 -0
- package/dist/column_format/constants/DURATION_PARTS_LIST.js +9 -0
- package/dist/column_format/constants/index.d.ts +1 -0
- package/dist/column_format/constants/index.js +1 -0
- package/dist/column_format/helpers/defineXYChartFormat.js +4 -1
- package/dist/columns/interfaces/IColumn.d.ts +0 -1
- package/dist/filters/adapters/FDToFlatUI.js +2 -7
- package/dist/filters/adapters/FDToUI.js +2 -5
- package/dist/filters/adapters/UIToFD.js +0 -1
- package/dist/filters/adapters/UIToFlatUI.js +2 -7
- package/dist/filters/adapters/UIToOldLogic.js +0 -3
- package/dist/filters/adapters/flatUIToFD.js +0 -1
- package/dist/filters/adapters/flatUIToOldLogic.js +0 -2
- package/dist/filters/adapters/flatUIToUI.js +0 -4
- package/dist/filters/adapters/logicToFlatUI.js +10 -14
- package/dist/filters/adapters/transformFilters.js +0 -4
- package/dist/filters/constants/common/FILTER_TOKENS_STRUCTURE_TYPE.d.ts +8 -0
- package/dist/filters/constants/common/FILTER_TOKENS_STRUCTURE_TYPE.js +9 -0
- package/dist/filters/constants/common/index.d.ts +1 -0
- package/dist/filters/constants/common/index.js +1 -0
- package/dist/filters/helpers/OLD_getAggFilters.js +0 -1
- package/dist/filters/helpers/common/excludeFiltersByParams.js +3 -4
- package/dist/filters/helpers/common/mergeFilters.js +0 -1
- package/dist/filters/helpers/common/resolveDatasetConditions.js +0 -4
- package/dist/filters/helpers/common/resolveFilterConditions.js +3 -5
- package/dist/filters/helpers/filtersTokensToString.d.ts +7 -0
- package/dist/filters/helpers/filtersTokensToString.js +16 -0
- package/dist/filters/helpers/getTokensFromFilters.d.ts +10 -0
- package/dist/filters/helpers/getTokensFromFilters.js +107 -0
- package/dist/filters/helpers/getVerboseFilter.d.ts +9 -0
- package/dist/filters/helpers/getVerboseFilter.js +12 -0
- package/dist/filters/helpers/index.d.ts +3 -0
- package/dist/filters/helpers/index.js +3 -0
- package/dist/filters/helpers/ui/getUpdatedUIFilters.js +2 -3
- package/dist/filters/helpers/ui/resolveUIFlatFilterByParams.js +2 -3
- package/dist/filters/interfaces/IFFilterTokens.d.ts +5 -0
- package/dist/filters/interfaces/IFFilterTokens.js +1 -0
- package/dist/filters/interfaces/IFTokensFromFiltersSettings.d.ts +7 -0
- package/dist/filters/interfaces/IFTokensFromFiltersSettings.js +1 -0
- package/dist/filters/interfaces/OLD_IFilterExpression.d.ts +0 -1
- package/dist/filters/interfaces/common/IFSDataset.d.ts +0 -1
- package/dist/filters/interfaces/common/IFSParamsToGetFilter.d.ts +0 -1
- package/dist/filters/interfaces/index.d.ts +2 -0
- package/dist/filters/interfaces/index.js +2 -0
- package/dist/filters/services/UChartApi.js +1 -2
- package/dist/filters/services/UChartPaginationApi.js +1 -1
- package/dist/format/definition.d.ts +2 -1
- package/dist/format/format.js +4 -1
- package/dist/format/localization.js +18 -2
- package/dist/globalization/interfaces/chart_builder/II18nChartBuilderTableStyleOptions.d.ts +4 -0
- package/dist/globalization/labels/chart_builder/I18N_CHART_BUILDER_COMPARISION_OPTIONS.js +1 -1
- package/dist/globalization/labels/chart_builder/I18N_CHART_BUILDER_STYLE_OPTIONS.js +5 -1
- package/dist/globalization/service/i18nextBuilder.d.ts +7 -0
- package/dist/globalization/service/i18nextBuilder.js +24 -14
- package/dist/interfaces/format/IFormatOutputFormat.Interface.d.ts +1 -0
- package/dist/services/adapters/BColumnsToUIColumns.adapter.js +0 -2
- package/dist/services/adapters/BDatasetsToUIDatasets.adapter.js +0 -1
- package/dist/services/helpers/getDefaultQuestionListOptionsAttributes.js +0 -2
- package/package.json +1 -1
|
@@ -61,7 +61,7 @@ function buildFilterByExpression(expression, scopeItem, uFilters) {
|
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
function getFilterByExpression(expression, scopeItem) {
|
|
64
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o
|
|
64
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
|
|
65
65
|
const uiExtras = expression.uiExtras;
|
|
66
66
|
const scopeid = scopeItem.scope !== FILTER_SCOPE.GLOBAL
|
|
67
67
|
? _get(scopeItem, "uiExtras.scopeid")
|
|
@@ -75,25 +75,23 @@ function getFilterByExpression(expression, scopeItem) {
|
|
|
75
75
|
column: {
|
|
76
76
|
id: (_a = uiExtras.column) === null || _a === void 0 ? void 0 : _a.id,
|
|
77
77
|
formulaType: (_b = uiExtras.column) === null || _b === void 0 ? void 0 : _b.formulaType,
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
((
|
|
83
|
-
calculation: ((_k = (_j = uiExtras.column) === null || _j === void 0 ? void 0 : _j.calculation) === null || _k === void 0 ? void 0 : _k.value) ||
|
|
84
|
-
((_l = uiExtras.column) === null || _l === void 0 ? void 0 : _l.calculation),
|
|
78
|
+
qrveyid: (_c = uiExtras.column) === null || _c === void 0 ? void 0 : _c.qrveyid,
|
|
79
|
+
aggregate: ((_e = (_d = uiExtras.column) === null || _d === void 0 ? void 0 : _d.aggregate) === null || _e === void 0 ? void 0 : _e.label) ||
|
|
80
|
+
((_f = uiExtras.column) === null || _f === void 0 ? void 0 : _f.aggregate),
|
|
81
|
+
calculation: ((_h = (_g = uiExtras.column) === null || _g === void 0 ? void 0 : _g.calculation) === null || _h === void 0 ? void 0 : _h.value) ||
|
|
82
|
+
((_j = uiExtras.column) === null || _j === void 0 ? void 0 : _j.calculation),
|
|
85
83
|
label: _get(uiExtras.column, "text") || _get(uiExtras.column, "label"),
|
|
86
84
|
property: uiExtras.column.property,
|
|
87
85
|
sorting: uiExtras.column.sorting,
|
|
88
|
-
outputFormat: (
|
|
89
|
-
type: (
|
|
86
|
+
outputFormat: (_k = uiExtras.column) === null || _k === void 0 ? void 0 : _k.outputFormat,
|
|
87
|
+
type: (_l = uiExtras.column) === null || _l === void 0 ? void 0 : _l.type,
|
|
90
88
|
},
|
|
91
89
|
dateSection: uiExtras.dateSection,
|
|
92
90
|
displayed: true,
|
|
93
91
|
enabled: uiExtras.enabled,
|
|
94
92
|
extras: Object.assign(Object.assign({}, uiExtras.extras), { panelid: uiExtras.panelid, filterLabel: uiExtras.panelName, info,
|
|
95
93
|
scopeid, scope: scopeItem.scope, section: uiExtras.section, scopeInfo: {
|
|
96
|
-
collapsed: (
|
|
94
|
+
collapsed: (_m = scopeItem.uiExtras) === null || _m === void 0 ? void 0 : _m.collapsed,
|
|
97
95
|
enabled: scopeItem.enabled,
|
|
98
96
|
displayed: true,
|
|
99
97
|
scope: scopeItem.scope,
|
|
@@ -102,10 +100,9 @@ function getFilterByExpression(expression, scopeItem) {
|
|
|
102
100
|
collapsed: false,
|
|
103
101
|
enabled: true,
|
|
104
102
|
displayed: true,
|
|
105
|
-
qrveyid: (
|
|
103
|
+
qrveyid: (_o = uiExtras.column) === null || _o === void 0 ? void 0 : _o.qrveyid,
|
|
106
104
|
label: _get(uiExtras.column, "dataset.name") ||
|
|
107
105
|
_get(uiExtras.column, "label"),
|
|
108
|
-
linkid: (_r = uiExtras.column) === null || _r === void 0 ? void 0 : _r.linkid,
|
|
109
106
|
} }),
|
|
110
107
|
filterid: undefined,
|
|
111
108
|
lookupDisplayIndex: uiExtras.lookupDisplayIndex,
|
|
@@ -145,7 +142,6 @@ function getFilter(filters, filter, getIndex = false) {
|
|
|
145
142
|
const validator = (f) => f.validator === filter.validator &&
|
|
146
143
|
f.column.id === filter.column.id &&
|
|
147
144
|
f.column.qrveyid === filter.column.qrveyid &&
|
|
148
|
-
f.column.linkid === filter.column.linkid &&
|
|
149
145
|
_get(f.column, "aggregate.label") ===
|
|
150
146
|
_get(filter.column, "aggregate.label") &&
|
|
151
147
|
f.extras.scope === filter.scope &&
|
|
@@ -388,7 +388,6 @@ function getExpressions(oldFiltersItem, validations, scopeLabel, scopeid, sectio
|
|
|
388
388
|
const expressionItem = {
|
|
389
389
|
enabled: oldFiltersItem.enabled,
|
|
390
390
|
property: property,
|
|
391
|
-
linkid: oldFiltersItem.dataset.linkid,
|
|
392
391
|
qrveyid: oldFiltersItem.dataset.qrveyid,
|
|
393
392
|
questionid: oldFiltersItem.qid,
|
|
394
393
|
formulaType: formulaType,
|
|
@@ -398,14 +397,11 @@ function getExpressions(oldFiltersItem, validations, scopeLabel, scopeid, sectio
|
|
|
398
397
|
uiExtras: {
|
|
399
398
|
column: {
|
|
400
399
|
dataset: {
|
|
401
|
-
linkid: oldFiltersItem.dataset.linkid,
|
|
402
400
|
qrveyid: oldFiltersItem.dataset.qrveyid,
|
|
403
401
|
name: oldFiltersItem.dataset.name,
|
|
404
402
|
},
|
|
405
403
|
formulaType: formulaType,
|
|
406
404
|
id: oldFiltersItem.qid,
|
|
407
|
-
linked: oldFiltersItem.linked,
|
|
408
|
-
linkid: oldFiltersItem.dataset.linkid,
|
|
409
405
|
qrveyid: oldFiltersItem.dataset.qrveyid,
|
|
410
406
|
text: oldFiltersItem.text,
|
|
411
407
|
type: questionType,
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export var FILTER_TOKENS_STRUCTURE_TYPE;
|
|
2
|
+
(function (FILTER_TOKENS_STRUCTURE_TYPE) {
|
|
3
|
+
FILTER_TOKENS_STRUCTURE_TYPE["SCOPE"] = "SCOPE";
|
|
4
|
+
FILTER_TOKENS_STRUCTURE_TYPE["DATABASE_NAME"] = "DATABASE_NAME";
|
|
5
|
+
FILTER_TOKENS_STRUCTURE_TYPE["COLUMN_NAME"] = "COLUMN_NAME";
|
|
6
|
+
FILTER_TOKENS_STRUCTURE_TYPE["VALIDATOR"] = "VALIDATOR";
|
|
7
|
+
FILTER_TOKENS_STRUCTURE_TYPE["VALUE"] = "VALUE";
|
|
8
|
+
FILTER_TOKENS_STRUCTURE_TYPE["LOGICAL_OPERATOR"] = "LOGICAL_OPERATOR";
|
|
9
|
+
})(FILTER_TOKENS_STRUCTURE_TYPE || (FILTER_TOKENS_STRUCTURE_TYPE = {}));
|
|
@@ -21,7 +21,6 @@ export function getAggFilters(logics = [], summaries = []) {
|
|
|
21
21
|
.map((expression) => {
|
|
22
22
|
const summaryIndex = summaries.findIndex((summary) => expression.questionid === summary.questionid &&
|
|
23
23
|
expression.qrveyid === summary.qrveyid &&
|
|
24
|
-
expression.linkid === summary.linkid &&
|
|
25
24
|
_get(expression.uiExtras.column, "aggregate") ===
|
|
26
25
|
summary.aggregate);
|
|
27
26
|
if (summaryIndex > -1 ||
|
|
@@ -75,7 +75,7 @@ function resolveDatasetConditions(dataset, params) {
|
|
|
75
75
|
dataset.filters.length > 0);
|
|
76
76
|
}
|
|
77
77
|
function resolveFilterConditions(filter, params) {
|
|
78
|
-
var _a, _b, _c, _d
|
|
78
|
+
var _a, _b, _c, _d;
|
|
79
79
|
return ((params.enableds == null || params.enableds !== filter.enabled) &&
|
|
80
80
|
(isEmpty(params.dateSection) ||
|
|
81
81
|
params.dateSection !== filter.dateSection) &&
|
|
@@ -85,7 +85,6 @@ function resolveFilterConditions(filter, params) {
|
|
|
85
85
|
(isEmpty(params.column) ||
|
|
86
86
|
(((_a = params.column) === null || _a === void 0 ? void 0 : _a.id) !== filter.column.id &&
|
|
87
87
|
((_b = params.column) === null || _b === void 0 ? void 0 : _b.qrveyid) !== filter.column.qrveyid &&
|
|
88
|
-
((_c = params.column) === null || _c === void 0 ? void 0 : _c.
|
|
89
|
-
|
|
90
|
-
((_e = filter.values) === null || _e === void 0 ? void 0 : _e.length) > 0);
|
|
88
|
+
((_c = params.column) === null || _c === void 0 ? void 0 : _c.aggregate) !== filter.column.aggregate)) &&
|
|
89
|
+
((_d = filter.values) === null || _d === void 0 ? void 0 : _d.length) > 0);
|
|
91
90
|
}
|
|
@@ -67,7 +67,6 @@ function mergeDatasets(datasets1 = [], datasets2 = [], settings) {
|
|
|
67
67
|
let newDatasets = datasets1.reduce((datasets, dataset1) => {
|
|
68
68
|
const dataset2Index = datasets2.findIndex((dataset2) => resolveDatasetConditions(dataset2, {
|
|
69
69
|
qrveyid: dataset1.qrveyid,
|
|
70
|
-
linkid: dataset1.linkid,
|
|
71
70
|
}));
|
|
72
71
|
if (dataset2Index > -1) {
|
|
73
72
|
dataset1 = Object.assign(Object.assign({}, datasets2[dataset2Index]), { filters: mergeFilterss(dataset1.filters, datasets2[dataset2Index].filters, settings) });
|
|
@@ -18,9 +18,5 @@ export function resolveDatasetConditions(dataset, params, letPassUndefinedProper
|
|
|
18
18
|
(letPassUndefinedProperties && dataset.qrveyid == null) ||
|
|
19
19
|
(letPassUndefinedParams && isEmpty(params.qrveyid)) ||
|
|
20
20
|
params.qrveyid === dataset.qrveyid) &&
|
|
21
|
-
(!_hasProperty(params, "linkid") ||
|
|
22
|
-
(letPassUndefinedProperties && dataset.linkid == null) ||
|
|
23
|
-
(letPassUndefinedParams && isEmpty(params.linkid)) ||
|
|
24
|
-
params.linkid === dataset.linkid) &&
|
|
25
21
|
dataset.filters.length > 0);
|
|
26
22
|
}
|
|
@@ -9,7 +9,7 @@ import { _hasProperty } from "../../../general/object/hasProperty";
|
|
|
9
9
|
* @returns true: the condition is satisfied
|
|
10
10
|
*/
|
|
11
11
|
export function resolveFilterConditions(filter, params, letPassUndefinedProperties = false, letPassUndefinedParams = true) {
|
|
12
|
-
var _a, _b, _c, _d, _e, _f
|
|
12
|
+
var _a, _b, _c, _d, _e, _f;
|
|
13
13
|
return ((!_hasProperty(params, "enableds") ||
|
|
14
14
|
!_hasProperty(params.enableds, "filters") ||
|
|
15
15
|
(letPassUndefinedProperties && filter.enabled == null) ||
|
|
@@ -38,8 +38,6 @@ export function resolveFilterConditions(filter, params, letPassUndefinedProperti
|
|
|
38
38
|
((_b = params.column) === null || _b === void 0 ? void 0 : _b.id) === filter.column.id) &&
|
|
39
39
|
((letPassUndefinedParams && isEmpty((_c = params.column) === null || _c === void 0 ? void 0 : _c.qrveyid)) ||
|
|
40
40
|
((_d = params.column) === null || _d === void 0 ? void 0 : _d.qrveyid) === filter.column.qrveyid) &&
|
|
41
|
-
((letPassUndefinedParams && isEmpty((_e = params.column) === null || _e === void 0 ? void 0 : _e.
|
|
42
|
-
((_f = params.column) === null || _f === void 0 ? void 0 : _f.
|
|
43
|
-
((letPassUndefinedParams && isEmpty((_g = params.column) === null || _g === void 0 ? void 0 : _g.aggregate)) ||
|
|
44
|
-
((_h = params.column) === null || _h === void 0 ? void 0 : _h.aggregate) === filter.column.aggregate))));
|
|
41
|
+
((letPassUndefinedParams && isEmpty((_e = params.column) === null || _e === void 0 ? void 0 : _e.aggregate)) ||
|
|
42
|
+
((_f = params.column) === null || _f === void 0 ? void 0 : _f.aggregate) === filter.column.aggregate))));
|
|
45
43
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { IFFilterTokens } from "../interfaces/IFFilterTokens";
|
|
2
|
+
/**
|
|
3
|
+
* It takes an array of tokens and returns a string
|
|
4
|
+
* @param {IFFilterTokens[]} tokens - IFFilterTokens[] - the tokens to convert to a string
|
|
5
|
+
* @returns A string
|
|
6
|
+
*/
|
|
7
|
+
export declare function filtersTokensToString(tokens: IFFilterTokens[]): string;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { FILTER_TOKENS_STRUCTURE_TYPE } from "../constants/common/FILTER_TOKENS_STRUCTURE_TYPE";
|
|
2
|
+
/**
|
|
3
|
+
* It takes an array of tokens and returns a string
|
|
4
|
+
* @param {IFFilterTokens[]} tokens - IFFilterTokens[] - the tokens to convert to a string
|
|
5
|
+
* @returns A string
|
|
6
|
+
*/
|
|
7
|
+
export function filtersTokensToString(tokens) {
|
|
8
|
+
let str = "";
|
|
9
|
+
for (const token of tokens) {
|
|
10
|
+
if (token.type === FILTER_TOKENS_STRUCTURE_TYPE.SCOPE) {
|
|
11
|
+
str += `\n`;
|
|
12
|
+
}
|
|
13
|
+
str += `${token.token} `;
|
|
14
|
+
}
|
|
15
|
+
return str.trim();
|
|
16
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { IFUData } from "../interfaces/ui/IFUData";
|
|
2
|
+
import { IFTokensFromFiltersSettings } from "../interfaces/IFTokensFromFiltersSettings";
|
|
3
|
+
import { IFFilterTokens } from "../interfaces/IFFilterTokens";
|
|
4
|
+
/**
|
|
5
|
+
* It takes a filter object and returns an array of tokens that represent the filter
|
|
6
|
+
* @param {IFUData} filters - The filters object.
|
|
7
|
+
* @param {IFTokensFromFiltersSettings} options - IFTokensFromFiltersSettings
|
|
8
|
+
* @returns {IFFilterTokens[]} An array of tokens that represents the filters object
|
|
9
|
+
*/
|
|
10
|
+
export declare function getTokensFromFilters(filters: IFUData, options: IFTokensFromFiltersSettings): IFFilterTokens[];
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { getUIValues } from "./ui/getUIValues";
|
|
2
|
+
import { getFilterPropertyLabel } from "./ui/getFilterPropertyLabel";
|
|
3
|
+
import { FILTER_TOKENS_STRUCTURE_TYPE } from "../constants/common/FILTER_TOKENS_STRUCTURE_TYPE";
|
|
4
|
+
import { isEmpty } from "../../general/mix/isEmpty";
|
|
5
|
+
/**
|
|
6
|
+
* It takes a filter object and returns an array of tokens that represent the filter
|
|
7
|
+
* @param {IFUData} filters - The filters object.
|
|
8
|
+
* @param {IFTokensFromFiltersSettings} options - IFTokensFromFiltersSettings
|
|
9
|
+
* @returns {IFFilterTokens[]} An array of tokens that represents the filters object
|
|
10
|
+
*/
|
|
11
|
+
export function getTokensFromFilters(filters, options) {
|
|
12
|
+
var _a, _b;
|
|
13
|
+
const tokens = [];
|
|
14
|
+
const i18nService = options.i18nService;
|
|
15
|
+
const settings = {
|
|
16
|
+
translate: i18nService.translate.bind(i18nService),
|
|
17
|
+
};
|
|
18
|
+
const getValue = (valueItem) => {
|
|
19
|
+
var _a;
|
|
20
|
+
if (valueItem.value) {
|
|
21
|
+
return ((_a = valueItem.displayed) !== null && _a !== void 0 ? _a : true) ? valueItem.value : "";
|
|
22
|
+
}
|
|
23
|
+
else if (valueItem.imageUrl) {
|
|
24
|
+
return `(${i18nService.translate("filter.value_container.no_label")})`;
|
|
25
|
+
}
|
|
26
|
+
return "";
|
|
27
|
+
};
|
|
28
|
+
for (const scope of filters.scopes) {
|
|
29
|
+
if (scope.datasets.length === 0)
|
|
30
|
+
continue;
|
|
31
|
+
if (options.showScope) {
|
|
32
|
+
tokens.push({
|
|
33
|
+
token: i18nService.translate(`filter.scope_title.${scope.scope.toLowerCase()}`) + ":",
|
|
34
|
+
type: FILTER_TOKENS_STRUCTURE_TYPE.SCOPE,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
let thereIsFiltersWithValues = false;
|
|
38
|
+
for (const database of scope.datasets) {
|
|
39
|
+
if (database.filters.length === 0)
|
|
40
|
+
continue;
|
|
41
|
+
if (options.showDatabaseName) {
|
|
42
|
+
tokens.push({
|
|
43
|
+
token: database.label + ":",
|
|
44
|
+
type: FILTER_TOKENS_STRUCTURE_TYPE.DATABASE_NAME,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
for (const [index, filter] of Object.entries(database.filters)) {
|
|
48
|
+
if (!(filter === null || filter === void 0 ? void 0 : filter.enabled))
|
|
49
|
+
continue;
|
|
50
|
+
const values = getUIValues(filter, settings);
|
|
51
|
+
if (!thereIsFiltersWithValues)
|
|
52
|
+
thereIsFiltersWithValues = true;
|
|
53
|
+
let columnLabel = filter.column.label;
|
|
54
|
+
if ((_a = filter === null || filter === void 0 ? void 0 : filter.column) === null || _a === void 0 ? void 0 : _a.aggregate) {
|
|
55
|
+
columnLabel +=
|
|
56
|
+
" (" +
|
|
57
|
+
i18nService.translate(`common.aggregate_labels.${(_b = filter === null || filter === void 0 ? void 0 : filter.column) === null || _b === void 0 ? void 0 : _b.aggregate.toLowerCase()}`) +
|
|
58
|
+
")";
|
|
59
|
+
}
|
|
60
|
+
tokens.push({
|
|
61
|
+
token: columnLabel + ":",
|
|
62
|
+
type: FILTER_TOKENS_STRUCTURE_TYPE.COLUMN_NAME,
|
|
63
|
+
});
|
|
64
|
+
const property = getFilterPropertyLabel(filter, settings.translate);
|
|
65
|
+
tokens.push({
|
|
66
|
+
token: i18nService.translate(`filter.validators.${filter.validator.toLowerCase()}_label`) + (property ? ` (${property})` : ""),
|
|
67
|
+
type: FILTER_TOKENS_STRUCTURE_TYPE.VALIDATOR,
|
|
68
|
+
});
|
|
69
|
+
let uiValue = values
|
|
70
|
+
.map(getValue)
|
|
71
|
+
.filter((value) => !isEmpty(value))
|
|
72
|
+
.join(", ");
|
|
73
|
+
if (filter.selectAll) {
|
|
74
|
+
if (isEmpty(uiValue)) {
|
|
75
|
+
uiValue = i18nService.translate("filter_panel.card_all_selected");
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
uiValue = `${i18nService.translate("filter_panel.card_all_except")} ${uiValue}`;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
if (isEmpty(uiValue)) {
|
|
83
|
+
uiValue = i18nService.translate("filter_panel.card_none_selected");
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
tokens.push({
|
|
87
|
+
token: uiValue,
|
|
88
|
+
type: FILTER_TOKENS_STRUCTURE_TYPE.VALUE,
|
|
89
|
+
});
|
|
90
|
+
if (index === (database.filters.length - 1).toString(10)) {
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
tokens.push({
|
|
94
|
+
token: i18nService.translate(`filter.operators.${filter.operator.toLowerCase()}`),
|
|
95
|
+
type: FILTER_TOKENS_STRUCTURE_TYPE.LOGICAL_OPERATOR,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
if (!thereIsFiltersWithValues && options.showDatabaseName) {
|
|
99
|
+
tokens.pop();
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
if (!thereIsFiltersWithValues && options.showScope) {
|
|
103
|
+
tokens.pop();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return tokens;
|
|
107
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { IFUData } from "../interfaces/ui/IFUData";
|
|
2
|
+
import { IFTokensFromFiltersSettings } from "../interfaces/IFTokensFromFiltersSettings";
|
|
3
|
+
/**
|
|
4
|
+
* It takes a set of filters and returns a string that describes the filters
|
|
5
|
+
* @param {IFUData} filters - The filters object that you want to convert to a string.
|
|
6
|
+
* @param {IFTokensFromFiltersSettings} options - IFTokensFromFiltersSettings
|
|
7
|
+
* @returns A string
|
|
8
|
+
*/
|
|
9
|
+
export declare function getVerboseFilter(filters: IFUData, options: IFTokensFromFiltersSettings): string;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { getTokensFromFilters } from "./getTokensFromFilters";
|
|
2
|
+
import { filtersTokensToString } from "./filtersTokensToString";
|
|
3
|
+
/**
|
|
4
|
+
* It takes a set of filters and returns a string that describes the filters
|
|
5
|
+
* @param {IFUData} filters - The filters object that you want to convert to a string.
|
|
6
|
+
* @param {IFTokensFromFiltersSettings} options - IFTokensFromFiltersSettings
|
|
7
|
+
* @returns A string
|
|
8
|
+
*/
|
|
9
|
+
export function getVerboseFilter(filters, options) {
|
|
10
|
+
const tokensFromFilters = getTokensFromFilters(filters, options);
|
|
11
|
+
return filtersTokensToString(tokensFromFilters);
|
|
12
|
+
}
|
|
@@ -6,4 +6,7 @@ export * from "./applyHierarchyForAggFilters";
|
|
|
6
6
|
export * from "./getAvailableScopes";
|
|
7
7
|
export * from "./getAvailableScopesIDsByConfig";
|
|
8
8
|
export * from "./getScopesByHierarchy";
|
|
9
|
+
export * from "./getTokensFromFilters";
|
|
10
|
+
export * from "./filtersTokensToString";
|
|
11
|
+
export * from "./getVerboseFilter";
|
|
9
12
|
export * from "./OLD_getAggFilters";
|
|
@@ -6,4 +6,7 @@ export * from "./applyHierarchyForAggFilters";
|
|
|
6
6
|
export * from "./getAvailableScopes";
|
|
7
7
|
export * from "./getAvailableScopesIDsByConfig";
|
|
8
8
|
export * from "./getScopesByHierarchy";
|
|
9
|
+
export * from "./getTokensFromFilters";
|
|
10
|
+
export * from "./filtersTokensToString";
|
|
11
|
+
export * from "./getVerboseFilter";
|
|
9
12
|
export * from "./OLD_getAggFilters";
|
|
@@ -11,15 +11,14 @@ export function getUpdatedUIFilters(data, datasets = []) {
|
|
|
11
11
|
return data;
|
|
12
12
|
let updatedScopes = data.scopes.map((scopes) => {
|
|
13
13
|
scopes.datasets = scopes.datasets.map((dataset) => {
|
|
14
|
-
const datasetInfo = datasets.find((dInfo) => dInfo.qrveyid === dataset.qrveyid
|
|
14
|
+
const datasetInfo = datasets.find((dInfo) => dInfo.qrveyid === dataset.qrveyid);
|
|
15
15
|
if (!isEmpty(datasetInfo))
|
|
16
16
|
dataset.label = datasetInfo.label;
|
|
17
17
|
dataset.filters = dataset.filters.map((filter) => {
|
|
18
18
|
let columnInfo;
|
|
19
19
|
if (!isEmpty(datasetInfo))
|
|
20
20
|
columnInfo = datasetInfo.options.find((cInfo) => cInfo.id === filter.column.id &&
|
|
21
|
-
cInfo.qrveyid === filter.column.qrveyid
|
|
22
|
-
cInfo.linkid === filter.column.linkid);
|
|
21
|
+
cInfo.qrveyid === filter.column.qrveyid);
|
|
23
22
|
if (!isEmpty(columnInfo)) {
|
|
24
23
|
filter.column.formulaType = columnInfo.formulaType;
|
|
25
24
|
filter.column.geogroup = columnInfo.geogroup;
|
|
@@ -6,12 +6,11 @@ import { isEmpty } from "../../../general/mix/isEmpty";
|
|
|
6
6
|
* @returns true: the conditions are satisfied.
|
|
7
7
|
*/
|
|
8
8
|
export function resolveUIFlatFilterByParams(filter, params) {
|
|
9
|
-
var _a, _b, _c
|
|
9
|
+
var _a, _b, _c;
|
|
10
10
|
return ((isEmpty(params.column) ||
|
|
11
11
|
(filter.column.id === ((_a = params.column) === null || _a === void 0 ? void 0 : _a.id) &&
|
|
12
12
|
filter.column.qrveyid === ((_b = params.column) === null || _b === void 0 ? void 0 : _b.qrveyid) &&
|
|
13
|
-
filter.column.
|
|
14
|
-
filter.column.aggregate === ((_d = params.column) === null || _d === void 0 ? void 0 : _d.aggregate))) &&
|
|
13
|
+
filter.column.aggregate === ((_c = params.column) === null || _c === void 0 ? void 0 : _c.aggregate))) &&
|
|
15
14
|
(isEmpty(params.scope) || filter.extras.scope === params.scope) &&
|
|
16
15
|
(isEmpty(params.scopeid) || filter.extras.scopeid === params.scopeid) &&
|
|
17
16
|
(isEmpty(params.panelid) || filter.extras.panelid === params.panelid) &&
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -30,6 +30,8 @@ export * from "./IFStructureType";
|
|
|
30
30
|
export * from "./IFValidator";
|
|
31
31
|
export * from "./IFValidatorInfo";
|
|
32
32
|
export * from "./IFValue";
|
|
33
|
+
export * from "./IFTokensFromFiltersSettings";
|
|
34
|
+
export * from "./IFFilterTokens";
|
|
33
35
|
export * from "./OLD_IFilterData";
|
|
34
36
|
export * from "./OLD_IFilterDetail";
|
|
35
37
|
export * from "./OLD_IFilterExpression";
|
|
@@ -30,6 +30,8 @@ export * from "./IFStructureType";
|
|
|
30
30
|
export * from "./IFValidator";
|
|
31
31
|
export * from "./IFValidatorInfo";
|
|
32
32
|
export * from "./IFValue";
|
|
33
|
+
export * from "./IFTokensFromFiltersSettings";
|
|
34
|
+
export * from "./IFFilterTokens";
|
|
33
35
|
export * from "./OLD_IFilterData";
|
|
34
36
|
export * from "./OLD_IFilterDetail";
|
|
35
37
|
export * from "./OLD_IFilterExpression";
|
|
@@ -83,7 +83,6 @@ export default class UChartApi {
|
|
|
83
83
|
{
|
|
84
84
|
questionid: column.id,
|
|
85
85
|
qrveyid: column.qrveyid,
|
|
86
|
-
// linkid: column.linkid,
|
|
87
86
|
maxDataPoints: this._getMaxDataPoints(column, chartSettings),
|
|
88
87
|
type: column.type,
|
|
89
88
|
formulaType: column.type === "FORMULA" ? column.formulaType : undefined,
|
|
@@ -261,7 +260,7 @@ export default class UChartApi {
|
|
|
261
260
|
let searchLogic;
|
|
262
261
|
if (!isEmpty(uFilter.values)) {
|
|
263
262
|
searchLogic = flatUIToOldLogic([
|
|
264
|
-
Object.assign(Object.assign({}, uFilter), { validator: this._getValidationType(uFilter.column, uFilter.validator), column: Object.assign(
|
|
263
|
+
Object.assign(Object.assign({}, uFilter), { validator: this._getValidationType(uFilter.column, uFilter.validator), column: Object.assign({}, uFilter.column) }),
|
|
265
264
|
]);
|
|
266
265
|
}
|
|
267
266
|
return searchLogic;
|
|
@@ -301,7 +301,7 @@ export default class UChartPaginationApi {
|
|
|
301
301
|
let searchLogic;
|
|
302
302
|
if (!isEmpty(uFilter.values)) {
|
|
303
303
|
searchLogic = flatUIToOldLogic([
|
|
304
|
-
Object.assign(Object.assign({}, uFilter), { validator: this._getValidationType(uFilter.column, uFilter.validator), column: Object.assign(
|
|
304
|
+
Object.assign(Object.assign({}, uFilter), { validator: this._getValidationType(uFilter.column, uFilter.validator), column: Object.assign({}, uFilter.column) }),
|
|
305
305
|
]);
|
|
306
306
|
}
|
|
307
307
|
return searchLogic;
|
|
@@ -18,7 +18,8 @@ export declare const enum LOCALE_FORMATS {
|
|
|
18
18
|
CURRENCY = "Currency",
|
|
19
19
|
PERCENTAGE = "Percentage",
|
|
20
20
|
SCIENTIFIC = "Scientific",
|
|
21
|
-
ABBREVIATED = "Abbreviated"
|
|
21
|
+
ABBREVIATED = "Abbreviated",
|
|
22
|
+
DURATION = "Duration"
|
|
22
23
|
}
|
|
23
24
|
export declare const enum LOCALE_STYLES {
|
|
24
25
|
DECIMAL = "decimal",
|
package/dist/format/format.js
CHANGED
|
@@ -8,6 +8,7 @@ import { COLUMN } from "../columns/constants/COLUMN";
|
|
|
8
8
|
import { FORMULA } from "../formulas/constants/FORMULA";
|
|
9
9
|
import { formatWithLocale } from "./localization";
|
|
10
10
|
import { isObject } from "../general/object/isObject";
|
|
11
|
+
import { DURATION_PARTS_LIST } from "../column_format/constants/DURATION_PARTS_LIST";
|
|
11
12
|
dayjs.extend(advancedFormat); // Add support to advanced formats https://day.js.org/docs/en/plugin/advanced-format
|
|
12
13
|
/**
|
|
13
14
|
* Apply to the given date format to a date value
|
|
@@ -105,7 +106,9 @@ export const addFormat = (value, outputFormat = "None", config) => {
|
|
|
105
106
|
: outputFormat === null || outputFormat === void 0 ? void 0 : outputFormat.format);
|
|
106
107
|
case "NUMERIC": {
|
|
107
108
|
const parse = parseFloat(value);
|
|
108
|
-
const withLocale = outputFormat !== "None" && (config === null || config === void 0 ? void 0 : config.lang)
|
|
109
|
+
const withLocale = (outputFormat !== "None" && (config === null || config === void 0 ? void 0 : config.lang)) ||
|
|
110
|
+
(outputFormat === null || outputFormat === void 0 ? void 0 : outputFormat.format) === "Duration" ||
|
|
111
|
+
DURATION_PARTS_LIST.includes[outputFormat === null || outputFormat === void 0 ? void 0 : outputFormat.format];
|
|
109
112
|
return isNaN(parse)
|
|
110
113
|
? value
|
|
111
114
|
: withLocale
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { DATETIME_COLUMN_FORMAT } from "../dates/constants/DATETIME_COLUMN_FORMAT";
|
|
2
2
|
import { isEmpty } from "../general/mix/isEmpty";
|
|
3
3
|
import { currencyISO, LANG_DEFAULT, CURRENCY_DEFAULT, DATETIME_OPTIONS, } from "./definition";
|
|
4
|
+
import { DurationFormatter } from "./duration/durationFormatter";
|
|
4
5
|
export const getLang = (locale) => {
|
|
5
6
|
if (!locale)
|
|
6
7
|
return;
|
|
@@ -55,10 +56,20 @@ function formatLocaleNumber(value, outputFormat, config) {
|
|
|
55
56
|
const langOpts = options || getLocaleOptions(outputFormat);
|
|
56
57
|
const valueToFormat = (outputFormat === null || outputFormat === void 0 ? void 0 : outputFormat.format) === "Percentage" /* LOCALE_FORMATS.PERCENTAGE */ ? value / 100 : value;
|
|
57
58
|
try {
|
|
58
|
-
const key =
|
|
59
|
+
const key = (outputFormat === null || outputFormat === void 0 ? void 0 : outputFormat.format) +
|
|
60
|
+
lang +
|
|
61
|
+
JSON.stringify(langOpts) +
|
|
62
|
+
((outputFormat === null || outputFormat === void 0 ? void 0 : outputFormat.template) ? outputFormat.template : "");
|
|
59
63
|
let formatter = NUMBER_FORMAT_CACHE[key];
|
|
60
64
|
if (!formatter) {
|
|
61
|
-
|
|
65
|
+
const intlNumberFormat = new Intl.NumberFormat([lang, LANG_DEFAULT], langOpts);
|
|
66
|
+
formatter =
|
|
67
|
+
(outputFormat === null || outputFormat === void 0 ? void 0 : outputFormat.format) === "Duration" /* LOCALE_FORMATS.DURATION */
|
|
68
|
+
? new DurationFormatter({
|
|
69
|
+
template: outputFormat === null || outputFormat === void 0 ? void 0 : outputFormat.template,
|
|
70
|
+
intlNumberFormat,
|
|
71
|
+
})
|
|
72
|
+
: intlNumberFormat;
|
|
62
73
|
NUMBER_FORMAT_CACHE[key] = formatter;
|
|
63
74
|
}
|
|
64
75
|
return formatter.format(valueToFormat);
|
|
@@ -107,6 +118,11 @@ function getLocaleOptions(outputFormat) {
|
|
|
107
118
|
maximumFractionDigits: decimals,
|
|
108
119
|
minimumFractionDigits: decimals,
|
|
109
120
|
};
|
|
121
|
+
case "Duration" /* LOCALE_FORMATS.DURATION */:
|
|
122
|
+
return {
|
|
123
|
+
maximumFractionDigits: 0,
|
|
124
|
+
minimumFractionDigits: 0,
|
|
125
|
+
};
|
|
110
126
|
default:
|
|
111
127
|
return {
|
|
112
128
|
style: "decimal" /* LOCALE_STYLES.DECIMAL */,
|
|
@@ -8,7 +8,11 @@ export interface II18nChartBuilderTableStyleOptions {
|
|
|
8
8
|
typeface: string;
|
|
9
9
|
weight: string;
|
|
10
10
|
weight_bold: string;
|
|
11
|
+
weight_black: string;
|
|
12
|
+
weight_light: string;
|
|
13
|
+
weight_medium: string;
|
|
11
14
|
weight_normal: string;
|
|
15
|
+
weight_thin: string;
|
|
12
16
|
size: string;
|
|
13
17
|
font_color: string;
|
|
14
18
|
bg_color: string;
|
|
@@ -200,7 +200,11 @@ export const I18N_CHART_BUILDER_STYLE_OPTIONS = {
|
|
|
200
200
|
typeface: "Typeface",
|
|
201
201
|
weight: "Weight",
|
|
202
202
|
weight_bold: "Bold",
|
|
203
|
-
|
|
203
|
+
weight_black: "Black",
|
|
204
|
+
weight_light: "Light",
|
|
205
|
+
weight_medium: "Medium",
|
|
206
|
+
weight_normal: "Normal",
|
|
207
|
+
weight_thin: "Thin",
|
|
204
208
|
size: "Size",
|
|
205
209
|
font_color: "Font Color",
|
|
206
210
|
bg_color: "BG Color",
|