@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.
Files changed (118) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/column_format/constants/DURATION_PARTS_LIST.d.ts +1 -0
  3. package/dist/cjs/column_format/constants/DURATION_PARTS_LIST.js +12 -0
  4. package/dist/cjs/column_format/constants/index.d.ts +1 -0
  5. package/dist/cjs/column_format/constants/index.js +1 -0
  6. package/dist/cjs/column_format/helpers/defineXYChartFormat.js +4 -1
  7. package/dist/cjs/columns/interfaces/IColumn.d.ts +0 -1
  8. package/dist/cjs/filters/adapters/FDToFlatUI.js +2 -7
  9. package/dist/cjs/filters/adapters/FDToUI.js +2 -5
  10. package/dist/cjs/filters/adapters/UIToFD.js +0 -1
  11. package/dist/cjs/filters/adapters/UIToFlatUI.js +2 -7
  12. package/dist/cjs/filters/adapters/UIToOldLogic.js +0 -3
  13. package/dist/cjs/filters/adapters/flatUIToFD.js +0 -1
  14. package/dist/cjs/filters/adapters/flatUIToOldLogic.js +0 -2
  15. package/dist/cjs/filters/adapters/flatUIToUI.js +0 -4
  16. package/dist/cjs/filters/adapters/logicToFlatUI.js +10 -14
  17. package/dist/cjs/filters/adapters/transformFilters.js +0 -4
  18. package/dist/cjs/filters/constants/common/FILTER_TOKENS_STRUCTURE_TYPE.d.ts +8 -0
  19. package/dist/cjs/filters/constants/common/FILTER_TOKENS_STRUCTURE_TYPE.js +12 -0
  20. package/dist/cjs/filters/constants/common/index.d.ts +1 -0
  21. package/dist/cjs/filters/constants/common/index.js +1 -0
  22. package/dist/cjs/filters/helpers/OLD_getAggFilters.js +0 -1
  23. package/dist/cjs/filters/helpers/common/excludeFiltersByParams.js +3 -4
  24. package/dist/cjs/filters/helpers/common/mergeFilters.js +0 -1
  25. package/dist/cjs/filters/helpers/common/resolveDatasetConditions.js +0 -4
  26. package/dist/cjs/filters/helpers/common/resolveFilterConditions.js +3 -5
  27. package/dist/cjs/filters/helpers/filtersTokensToString.d.ts +7 -0
  28. package/dist/cjs/filters/helpers/filtersTokensToString.js +20 -0
  29. package/dist/cjs/filters/helpers/getTokensFromFilters.d.ts +10 -0
  30. package/dist/cjs/filters/helpers/getTokensFromFilters.js +111 -0
  31. package/dist/cjs/filters/helpers/getVerboseFilter.d.ts +9 -0
  32. package/dist/cjs/filters/helpers/getVerboseFilter.js +16 -0
  33. package/dist/cjs/filters/helpers/index.d.ts +3 -0
  34. package/dist/cjs/filters/helpers/index.js +3 -0
  35. package/dist/cjs/filters/helpers/ui/getUpdatedUIFilters.js +2 -3
  36. package/dist/cjs/filters/helpers/ui/resolveUIFlatFilterByParams.js +2 -3
  37. package/dist/cjs/filters/interfaces/IFFilterTokens.d.ts +5 -0
  38. package/dist/cjs/filters/interfaces/IFFilterTokens.js +2 -0
  39. package/dist/cjs/filters/interfaces/IFTokensFromFiltersSettings.d.ts +7 -0
  40. package/dist/cjs/filters/interfaces/IFTokensFromFiltersSettings.js +2 -0
  41. package/dist/cjs/filters/interfaces/OLD_IFilterExpression.d.ts +0 -1
  42. package/dist/cjs/filters/interfaces/common/IFSDataset.d.ts +0 -1
  43. package/dist/cjs/filters/interfaces/common/IFSParamsToGetFilter.d.ts +0 -1
  44. package/dist/cjs/filters/interfaces/index.d.ts +2 -0
  45. package/dist/cjs/filters/interfaces/index.js +2 -0
  46. package/dist/cjs/filters/services/UChartApi.js +1 -2
  47. package/dist/cjs/filters/services/UChartPaginationApi.js +1 -1
  48. package/dist/cjs/format/definition.d.ts +2 -1
  49. package/dist/cjs/format/format.js +4 -1
  50. package/dist/cjs/format/localization.js +18 -2
  51. package/dist/cjs/globalization/interfaces/chart_builder/II18nChartBuilderTableStyleOptions.d.ts +4 -0
  52. package/dist/cjs/globalization/labels/chart_builder/I18N_CHART_BUILDER_COMPARISION_OPTIONS.js +1 -1
  53. package/dist/cjs/globalization/labels/chart_builder/I18N_CHART_BUILDER_STYLE_OPTIONS.js +5 -1
  54. package/dist/cjs/globalization/service/i18nextBuilder.d.ts +7 -0
  55. package/dist/cjs/globalization/service/i18nextBuilder.js +25 -14
  56. package/dist/cjs/interfaces/format/IFormatOutputFormat.Interface.d.ts +1 -0
  57. package/dist/cjs/services/adapters/BColumnsToUIColumns.adapter.js +0 -2
  58. package/dist/cjs/services/adapters/BDatasetsToUIDatasets.adapter.js +0 -1
  59. package/dist/cjs/services/helpers/getDefaultQuestionListOptionsAttributes.js +0 -2
  60. package/dist/column_format/constants/DURATION_PARTS_LIST.d.ts +1 -0
  61. package/dist/column_format/constants/DURATION_PARTS_LIST.js +9 -0
  62. package/dist/column_format/constants/index.d.ts +1 -0
  63. package/dist/column_format/constants/index.js +1 -0
  64. package/dist/column_format/helpers/defineXYChartFormat.js +4 -1
  65. package/dist/columns/interfaces/IColumn.d.ts +0 -1
  66. package/dist/filters/adapters/FDToFlatUI.js +2 -7
  67. package/dist/filters/adapters/FDToUI.js +2 -5
  68. package/dist/filters/adapters/UIToFD.js +0 -1
  69. package/dist/filters/adapters/UIToFlatUI.js +2 -7
  70. package/dist/filters/adapters/UIToOldLogic.js +0 -3
  71. package/dist/filters/adapters/flatUIToFD.js +0 -1
  72. package/dist/filters/adapters/flatUIToOldLogic.js +0 -2
  73. package/dist/filters/adapters/flatUIToUI.js +0 -4
  74. package/dist/filters/adapters/logicToFlatUI.js +10 -14
  75. package/dist/filters/adapters/transformFilters.js +0 -4
  76. package/dist/filters/constants/common/FILTER_TOKENS_STRUCTURE_TYPE.d.ts +8 -0
  77. package/dist/filters/constants/common/FILTER_TOKENS_STRUCTURE_TYPE.js +9 -0
  78. package/dist/filters/constants/common/index.d.ts +1 -0
  79. package/dist/filters/constants/common/index.js +1 -0
  80. package/dist/filters/helpers/OLD_getAggFilters.js +0 -1
  81. package/dist/filters/helpers/common/excludeFiltersByParams.js +3 -4
  82. package/dist/filters/helpers/common/mergeFilters.js +0 -1
  83. package/dist/filters/helpers/common/resolveDatasetConditions.js +0 -4
  84. package/dist/filters/helpers/common/resolveFilterConditions.js +3 -5
  85. package/dist/filters/helpers/filtersTokensToString.d.ts +7 -0
  86. package/dist/filters/helpers/filtersTokensToString.js +16 -0
  87. package/dist/filters/helpers/getTokensFromFilters.d.ts +10 -0
  88. package/dist/filters/helpers/getTokensFromFilters.js +107 -0
  89. package/dist/filters/helpers/getVerboseFilter.d.ts +9 -0
  90. package/dist/filters/helpers/getVerboseFilter.js +12 -0
  91. package/dist/filters/helpers/index.d.ts +3 -0
  92. package/dist/filters/helpers/index.js +3 -0
  93. package/dist/filters/helpers/ui/getUpdatedUIFilters.js +2 -3
  94. package/dist/filters/helpers/ui/resolveUIFlatFilterByParams.js +2 -3
  95. package/dist/filters/interfaces/IFFilterTokens.d.ts +5 -0
  96. package/dist/filters/interfaces/IFFilterTokens.js +1 -0
  97. package/dist/filters/interfaces/IFTokensFromFiltersSettings.d.ts +7 -0
  98. package/dist/filters/interfaces/IFTokensFromFiltersSettings.js +1 -0
  99. package/dist/filters/interfaces/OLD_IFilterExpression.d.ts +0 -1
  100. package/dist/filters/interfaces/common/IFSDataset.d.ts +0 -1
  101. package/dist/filters/interfaces/common/IFSParamsToGetFilter.d.ts +0 -1
  102. package/dist/filters/interfaces/index.d.ts +2 -0
  103. package/dist/filters/interfaces/index.js +2 -0
  104. package/dist/filters/services/UChartApi.js +1 -2
  105. package/dist/filters/services/UChartPaginationApi.js +1 -1
  106. package/dist/format/definition.d.ts +2 -1
  107. package/dist/format/format.js +4 -1
  108. package/dist/format/localization.js +18 -2
  109. package/dist/globalization/interfaces/chart_builder/II18nChartBuilderTableStyleOptions.d.ts +4 -0
  110. package/dist/globalization/labels/chart_builder/I18N_CHART_BUILDER_COMPARISION_OPTIONS.js +1 -1
  111. package/dist/globalization/labels/chart_builder/I18N_CHART_BUILDER_STYLE_OPTIONS.js +5 -1
  112. package/dist/globalization/service/i18nextBuilder.d.ts +7 -0
  113. package/dist/globalization/service/i18nextBuilder.js +24 -14
  114. package/dist/interfaces/format/IFormatOutputFormat.Interface.d.ts +1 -0
  115. package/dist/services/adapters/BColumnsToUIColumns.adapter.js +0 -2
  116. package/dist/services/adapters/BDatasetsToUIDatasets.adapter.js +0 -1
  117. package/dist/services/helpers/getDefaultQuestionListOptionsAttributes.js +0 -2
  118. 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, _p, _q, _r;
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
- linkid: (_c = uiExtras.column) === null || _c === void 0 ? void 0 : _c.linkid,
79
- linked: (_d = uiExtras.column) === null || _d === void 0 ? void 0 : _d.linked,
80
- qrveyid: (_e = uiExtras.column) === null || _e === void 0 ? void 0 : _e.qrveyid,
81
- aggregate: ((_g = (_f = uiExtras.column) === null || _f === void 0 ? void 0 : _f.aggregate) === null || _g === void 0 ? void 0 : _g.label) ||
82
- ((_h = uiExtras.column) === null || _h === void 0 ? void 0 : _h.aggregate),
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: (_m = uiExtras.column) === null || _m === void 0 ? void 0 : _m.outputFormat,
89
- type: (_o = uiExtras.column) === null || _o === void 0 ? void 0 : _o.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: (_p = scopeItem.uiExtras) === null || _p === void 0 ? void 0 : _p.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: (_q = uiExtras.column) === null || _q === void 0 ? void 0 : _q.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,8 @@
1
+ export declare enum FILTER_TOKENS_STRUCTURE_TYPE {
2
+ SCOPE = "SCOPE",
3
+ DATABASE_NAME = "DATABASE_NAME",
4
+ COLUMN_NAME = "COLUMN_NAME",
5
+ VALIDATOR = "VALIDATOR",
6
+ VALUE = "VALUE",
7
+ LOGICAL_OPERATOR = "LOGICAL_OPERATOR"
8
+ }
@@ -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 = {}));
@@ -17,3 +17,4 @@ export * from "./FILTER_VALIDATOR_BY_TYPE";
17
17
  export * from "./FILTER_VALIDATOR_INFO";
18
18
  export * from "./FILTER_VALIDATOR_LABEL";
19
19
  export * from "./FILTER_VALIDATOR";
20
+ export * from "./FILTER_TOKENS_STRUCTURE_TYPE";
@@ -17,3 +17,4 @@ export * from "./FILTER_VALIDATOR_BY_TYPE";
17
17
  export * from "./FILTER_VALIDATOR_INFO";
18
18
  export * from "./FILTER_VALIDATOR_LABEL";
19
19
  export * from "./FILTER_VALIDATOR";
20
+ export * from "./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, _e;
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.linkid) !== filter.column.linkid &&
89
- ((_d = params.column) === null || _d === void 0 ? void 0 : _d.aggregate) !== filter.column.aggregate)) &&
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, _g, _h;
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.linkid)) ||
42
- ((_f = params.column) === null || _f === void 0 ? void 0 : _f.linkid) === filter.column.linkid) &&
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 && dInfo.linkid === dataset.linkid);
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, _d;
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.linkid === ((_c = params.column) === null || _c === void 0 ? void 0 : _c.linkid) &&
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,5 @@
1
+ import { FILTER_TOKENS_STRUCTURE_TYPE } from "../constants/common/FILTER_TOKENS_STRUCTURE_TYPE";
2
+ export interface IFFilterTokens {
3
+ token: string;
4
+ type: FILTER_TOKENS_STRUCTURE_TYPE;
5
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,7 @@
1
+ import { I18nService } from "../../globalization/service/i18nextBuilder";
2
+ export interface IFTokensFromFiltersSettings {
3
+ showScope?: boolean;
4
+ showDatabaseName?: boolean;
5
+ showChartName?: boolean;
6
+ i18nService: I18nService;
7
+ }
@@ -9,7 +9,6 @@ export interface OLD_IFilterExpression {
9
9
  expressions?: OLD_IFilterExpression[];
10
10
  formulaType?: string;
11
11
  groupValue?: IFProperty;
12
- linkid?: string;
13
12
  operator?: IFOperator;
14
13
  property?: IFProperty;
15
14
  qrveyid?: string;
@@ -8,5 +8,4 @@ export interface IFSDataset {
8
8
  displayed: boolean;
9
9
  filters: IFSFilter[];
10
10
  qrveyid: string;
11
- linkid?: string;
12
11
  }
@@ -13,7 +13,6 @@ export interface IFSParamsToGetFilter {
13
13
  dateSection?: IFDateSection;
14
14
  enableds?: IFSParamsToGetFilterEnableds;
15
15
  chart?: IFUChartSettings;
16
- linkid?: string;
17
16
  panelid?: string;
18
17
  property?: IFProperty;
19
18
  qrveyid?: string;
@@ -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(Object.assign({}, uFilter.column), { linkid: undefined }) }),
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(Object.assign({}, uFilter.column), { linkid: undefined }) }),
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",
@@ -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 = lang + JSON.stringify(langOpts);
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
- formatter = new Intl.NumberFormat([lang, LANG_DEFAULT], langOpts);
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;
@@ -22,6 +22,6 @@ export const I18N_CHART_BUILDER_COMPARISION_OPTIONS = {
22
22
  time_period: "Time Period",
23
23
  type_change: "% Change",
24
24
  type_difference: "Difference",
25
- does_not_apply: "N/A"
25
+ does_not_apply: "N/A",
26
26
  },
27
27
  };
@@ -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
- weight_normal: "normal",
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",