@qrvey/utils 1.2.10-0 → 1.2.10-3

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 (186) hide show
  1. package/README.md +1 -5850
  2. package/dist/cjs/charts/constants/index.js +5 -1
  3. package/dist/cjs/charts/helpers/index.js +5 -1
  4. package/dist/cjs/charts/index.js +5 -1
  5. package/dist/cjs/charts/interfaces/index.js +5 -1
  6. package/dist/cjs/columns/constants/index.js +5 -1
  7. package/dist/cjs/columns/helpers/getModelColumn.js +1 -1
  8. package/dist/cjs/columns/helpers/index.js +5 -1
  9. package/dist/cjs/columns/index.js +5 -1
  10. package/dist/cjs/columns/interfaces/index.js +5 -1
  11. package/dist/cjs/constants/index.js +5 -1
  12. package/dist/cjs/dates/adapters/index.js +5 -1
  13. package/dist/cjs/dates/constants/index.js +5 -1
  14. package/dist/cjs/dates/helpers/index.js +5 -1
  15. package/dist/cjs/dates/index.js +5 -1
  16. package/dist/cjs/dates/interfaces/index.js +5 -1
  17. package/dist/cjs/dates/range/index.js +5 -1
  18. package/dist/cjs/dates/relative/constants/index.js +5 -1
  19. package/dist/cjs/dates/relative/constants/ui/index.js +5 -1
  20. package/dist/cjs/dates/relative/helpers/dayjs-module.js +5 -1
  21. package/dist/cjs/dates/relative/helpers/index.js +5 -1
  22. package/dist/cjs/dates/relative/index.js +5 -1
  23. package/dist/cjs/dates/relative/interfaces/index.js +5 -1
  24. package/dist/cjs/dates/relative/interfaces/ui/index.js +5 -1
  25. package/dist/cjs/filters/adapters/UIToFD.js +2 -1
  26. package/dist/cjs/filters/adapters/adaptDateGroupingProperty.d.ts +2 -2
  27. package/dist/cjs/filters/adapters/adaptDateGroupingProperty.js +2 -2
  28. package/dist/cjs/filters/adapters/index.js +5 -1
  29. package/dist/cjs/filters/classes/index.js +5 -1
  30. package/dist/cjs/filters/constants/backend/index.js +5 -1
  31. package/dist/cjs/filters/constants/builder/index.js +5 -1
  32. package/dist/cjs/filters/constants/common/index.js +5 -1
  33. package/dist/cjs/filters/constants/index.js +5 -1
  34. package/dist/cjs/filters/constants/panel/index.js +5 -1
  35. package/dist/cjs/filters/helpers/applyHierarchyForAggFilters.d.ts +3 -3
  36. package/dist/cjs/filters/helpers/applyHierarchyForAggFilters.js +3 -3
  37. package/dist/cjs/filters/helpers/backend/getAggFiltersBySummaryIndex.d.ts +5 -3
  38. package/dist/cjs/filters/helpers/backend/getAggFiltersBySummaryIndex.js +5 -3
  39. package/dist/cjs/filters/helpers/backend/getBackendValues.js +3 -1
  40. package/dist/cjs/filters/helpers/backend/index.js +5 -1
  41. package/dist/cjs/filters/helpers/builder/index.js +5 -1
  42. package/dist/cjs/filters/helpers/common/getMergeFiltersSettings.js +4 -3
  43. package/dist/cjs/filters/helpers/common/index.js +5 -1
  44. package/dist/cjs/filters/helpers/common/mergeFilters.d.ts +1 -1
  45. package/dist/cjs/filters/helpers/common/mergeFilters.js +25 -9
  46. package/dist/cjs/filters/helpers/getAggFiltersFromFilterData.d.ts +5 -4
  47. package/dist/cjs/filters/helpers/getAggFiltersFromFilterData.js +5 -5
  48. package/dist/cjs/filters/helpers/index.js +5 -1
  49. package/dist/cjs/filters/helpers/ui/getUIValues.d.ts +4 -5
  50. package/dist/cjs/filters/helpers/ui/getUIValues.js +4 -5
  51. package/dist/cjs/filters/helpers/ui/index.js +5 -1
  52. package/dist/cjs/filters/index.js +5 -1
  53. package/dist/cjs/filters/interfaces/backend/index.js +5 -1
  54. package/dist/cjs/filters/interfaces/builder/index.js +5 -1
  55. package/dist/cjs/filters/interfaces/common/index.js +5 -1
  56. package/dist/cjs/filters/interfaces/functions/IFFiltersMergeFilters.d.ts +1 -0
  57. package/dist/cjs/filters/interfaces/functions/index.js +5 -1
  58. package/dist/cjs/filters/interfaces/index.js +5 -1
  59. package/dist/cjs/filters/interfaces/panel/index.js +5 -1
  60. package/dist/cjs/filters/interfaces/ui/index.js +5 -1
  61. package/dist/cjs/filters/services/index.js +5 -1
  62. package/dist/cjs/format/index.js +5 -1
  63. package/dist/cjs/format/localization.js +4 -3
  64. package/dist/cjs/formulas/constants/index.js +5 -1
  65. package/dist/cjs/formulas/index.js +5 -1
  66. package/dist/cjs/formulas/interfaces/index.js +5 -1
  67. package/dist/cjs/general/array/index.js +5 -1
  68. package/dist/cjs/general/function/index.js +5 -1
  69. package/dist/cjs/general/index.js +5 -1
  70. package/dist/cjs/general/mix/index.js +5 -1
  71. package/dist/cjs/general/object/get.d.ts +0 -20
  72. package/dist/cjs/general/object/get.js +0 -20
  73. package/dist/cjs/general/object/index.js +5 -1
  74. package/dist/cjs/general/string/index.js +5 -1
  75. package/dist/cjs/globalization/helpers/index.js +5 -1
  76. package/dist/cjs/globalization/index.js +5 -1
  77. package/dist/cjs/globalization/interfaces/bucket_builder/index.js +5 -1
  78. package/dist/cjs/globalization/interfaces/calendar/index.js +5 -1
  79. package/dist/cjs/globalization/interfaces/chart_builder/II18nChartBuilderConditionalFormatting.d.ts +2 -0
  80. package/dist/cjs/globalization/interfaces/chart_builder/index.js +5 -1
  81. package/dist/cjs/globalization/interfaces/columns/index.js +5 -1
  82. package/dist/cjs/globalization/interfaces/common/index.js +5 -1
  83. package/dist/cjs/globalization/interfaces/cross_tabs/index.js +5 -1
  84. package/dist/cjs/globalization/interfaces/dashboard/index.js +5 -1
  85. package/dist/cjs/globalization/interfaces/filters/index.js +5 -1
  86. package/dist/cjs/globalization/interfaces/formula_builder/index.js +5 -1
  87. package/dist/cjs/globalization/interfaces/index.js +5 -1
  88. package/dist/cjs/globalization/interfaces/panel/index.js +5 -1
  89. package/dist/cjs/globalization/interfaces/style_themes/index.js +5 -1
  90. package/dist/cjs/globalization/interfaces/table_charts/index.js +5 -1
  91. package/dist/cjs/globalization/labels/bucket_builder/index.js +5 -1
  92. package/dist/cjs/globalization/labels/calendar/index.js +5 -1
  93. package/dist/cjs/globalization/labels/chart_builder/I18N_CHART_BUILDER_FORMAT_OPTIONS.js +2 -0
  94. package/dist/cjs/globalization/labels/chart_builder/index.js +5 -1
  95. package/dist/cjs/globalization/labels/columns/index.js +5 -1
  96. package/dist/cjs/globalization/labels/common/index.js +5 -1
  97. package/dist/cjs/globalization/labels/cross_tabs/index.js +5 -1
  98. package/dist/cjs/globalization/labels/dashboard/index.js +5 -1
  99. package/dist/cjs/globalization/labels/filters/index.js +5 -1
  100. package/dist/cjs/globalization/labels/formula_builder/index.js +5 -1
  101. package/dist/cjs/globalization/labels/index.js +5 -1
  102. package/dist/cjs/globalization/labels/panel/index.js +5 -1
  103. package/dist/cjs/globalization/labels/style_themes/index.js +5 -1
  104. package/dist/cjs/globalization/labels/table_charts/index.js +5 -1
  105. package/dist/cjs/globalization/service/index.js +5 -1
  106. package/dist/cjs/index.js +5 -1
  107. package/dist/cjs/interfaces/format/index.js +5 -1
  108. package/dist/cjs/interfaces/general/index.d.ts +0 -1
  109. package/dist/cjs/interfaces/general/index.js +5 -2
  110. package/dist/cjs/interfaces/index.js +5 -1
  111. package/dist/cjs/qrvey/constants/index.js +5 -1
  112. package/dist/cjs/qrvey/helpers/getLookupAnswers.js +1 -2
  113. package/dist/cjs/qrvey/helpers/index.js +5 -1
  114. package/dist/cjs/qrvey/index.js +5 -1
  115. package/dist/cjs/qrvey/interfaces/index.js +5 -1
  116. package/dist/cjs/services/adapters/index.js +5 -1
  117. package/dist/cjs/services/api/getAllDatasets.api.d.ts +2 -2
  118. package/dist/cjs/services/api/getDatasetColumns.api.d.ts +2 -2
  119. package/dist/cjs/services/api/getDatasetsByIds.api.d.ts +2 -2
  120. package/dist/cjs/services/api/index.js +5 -1
  121. package/dist/cjs/services/constants/index.js +5 -1
  122. package/dist/cjs/services/helpers/index.js +5 -1
  123. package/dist/cjs/services/index.js +5 -1
  124. package/dist/cjs/services/interfaces/index.js +5 -1
  125. package/dist/cjs/stencil/decorators/index.js +5 -1
  126. package/dist/cjs/stencil/index.js +5 -1
  127. package/dist/cjs/stencil/util/index.js +5 -1
  128. package/dist/cjs/tokens/index.js +5 -1
  129. package/dist/cjs/typescript/decorators/index.js +5 -1
  130. package/dist/cjs/typescript/index.js +5 -1
  131. package/dist/columns/helpers/getModelColumn.js +1 -1
  132. package/dist/filters/adapters/UIToFD.js +2 -1
  133. package/dist/filters/adapters/adaptDateGroupingProperty.d.ts +2 -2
  134. package/dist/filters/adapters/adaptDateGroupingProperty.js +2 -2
  135. package/dist/filters/helpers/applyHierarchyForAggFilters.d.ts +3 -3
  136. package/dist/filters/helpers/applyHierarchyForAggFilters.js +3 -3
  137. package/dist/filters/helpers/backend/getAggFiltersBySummaryIndex.d.ts +5 -3
  138. package/dist/filters/helpers/backend/getAggFiltersBySummaryIndex.js +5 -3
  139. package/dist/filters/helpers/backend/getBackendValues.js +3 -1
  140. package/dist/filters/helpers/common/getMergeFiltersSettings.js +4 -3
  141. package/dist/filters/helpers/common/mergeFilters.d.ts +1 -1
  142. package/dist/filters/helpers/common/mergeFilters.js +25 -9
  143. package/dist/filters/helpers/getAggFiltersFromFilterData.d.ts +5 -4
  144. package/dist/filters/helpers/getAggFiltersFromFilterData.js +5 -5
  145. package/dist/filters/helpers/ui/getUIValues.d.ts +4 -5
  146. package/dist/filters/helpers/ui/getUIValues.js +4 -5
  147. package/dist/filters/interfaces/functions/IFFiltersMergeFilters.d.ts +1 -0
  148. package/dist/format/localization.js +4 -3
  149. package/dist/general/object/get.d.ts +0 -20
  150. package/dist/general/object/get.js +0 -20
  151. package/dist/globalization/interfaces/chart_builder/II18nChartBuilderConditionalFormatting.d.ts +2 -0
  152. package/dist/globalization/labels/chart_builder/I18N_CHART_BUILDER_FORMAT_OPTIONS.js +2 -0
  153. package/dist/interfaces/general/index.d.ts +0 -1
  154. package/dist/interfaces/general/index.js +0 -1
  155. package/dist/qrvey/helpers/getLookupAnswers.js +1 -2
  156. package/dist/services/api/getAllDatasets.api.d.ts +2 -2
  157. package/dist/services/api/getDatasetColumns.api.d.ts +2 -2
  158. package/dist/services/api/getDatasetsByIds.api.d.ts +2 -2
  159. package/jsdoc.config.json +14 -0
  160. package/package.json +13 -11
  161. package/prepareToPublish.js +2 -1
  162. package/publishing.js +180 -0
  163. package/src/columns/helpers/getModelColumn.ts +1 -1
  164. package/src/filters/adapters/UIToFD.ts +2 -1
  165. package/src/filters/adapters/adaptDateGroupingProperty.ts +2 -2
  166. package/src/filters/helpers/applyHierarchyForAggFilters.ts +3 -3
  167. package/src/filters/helpers/backend/getAggFiltersBySummaryIndex.ts +5 -3
  168. package/src/filters/helpers/backend/getBackendValues.ts +3 -1
  169. package/src/filters/helpers/common/getMergeFiltersSettings.ts +1 -0
  170. package/src/filters/helpers/common/mergeFilters.ts +34 -9
  171. package/src/filters/helpers/getAggFiltersFromFilterData.ts +5 -5
  172. package/src/filters/helpers/ui/getUIValues.ts +4 -5
  173. package/src/filters/interfaces/functions/IFFiltersMergeFilters.ts +1 -0
  174. package/src/format/localization.ts +2 -1
  175. package/src/general/object/get.ts +0 -22
  176. package/src/globalization/interfaces/chart_builder/II18nChartBuilderConditionalFormatting.ts +2 -0
  177. package/src/globalization/labels/chart_builder/I18N_CHART_BUILDER_FORMAT_OPTIONS.ts +2 -0
  178. package/src/interfaces/general/index.ts +0 -1
  179. package/src/services/api/getAllDatasets.api.ts +2 -2
  180. package/src/services/api/getDatasetColumns.api.ts +2 -2
  181. package/src/services/api/getDatasetsByIds.api.ts +2 -2
  182. package/dist/cjs/interfaces/general/IGeneralWidgetConfig.d.ts +0 -12
  183. package/dist/cjs/interfaces/general/IGeneralWidgetConfig.js +0 -2
  184. package/dist/interfaces/general/IGeneralWidgetConfig.d.ts +0 -12
  185. package/dist/interfaces/general/IGeneralWidgetConfig.js +0 -1
  186. package/src/interfaces/general/IGeneralWidgetConfig.ts +0 -12
package/publishing.js ADDED
@@ -0,0 +1,180 @@
1
+ // IN DEVELOPMENT
2
+
3
+
4
+ const fs = require('fs');
5
+ const util = require('util');
6
+ const childProcess = require('child_process');
7
+ const exec = util.promisify(childProcess.exec);
8
+ const spawn = childProcess.spawn;
9
+ const proc = require('process');
10
+ const readline = require("readline");
11
+ const rl = readline.createInterface({
12
+ input: proc.stdin,
13
+ output: proc.stdout
14
+ });
15
+ const question = util.promisify(rl.question).bind(rl);
16
+
17
+
18
+ async function execute(command) {
19
+ console.log(command);
20
+ const response = await exec(command);
21
+ console.log('response', response);
22
+ if (response.error != null) {
23
+ throw new Error(response.error);
24
+ }
25
+ if (response.stderr != null && response.stderr !== '') {
26
+ console.error(response.stderr);
27
+ }
28
+ if (response.stdout != null && response.stdout !== '') {
29
+ console.log(response.stdout);
30
+ }
31
+ return response;
32
+ }
33
+
34
+ //todo: fix the spawning function to wait for the second process to finish and then continue the next code
35
+ async function spawning(command, sArguments) {
36
+ const newProcess = await new Promise(function (resolve, reject) {
37
+ spawn(command, sArguments, { shell: true });
38
+ newProcess.stdout.on("data", data => {
39
+ console.log(`stdout: ${data}`);
40
+ });
41
+
42
+ newProcess.stderr.on("data", data => {
43
+ console.log(`stderr: ${data}`);
44
+ });
45
+
46
+ newProcess.on('error', (error) => {
47
+ reject();
48
+ throw new Error(error.message);
49
+ });
50
+
51
+ newProcess.on("close", code => {
52
+ if (code == '1') {
53
+ reject();
54
+ throw new Error(`child process exited with code ${code}`);
55
+ }
56
+ resolve();
57
+ });
58
+ });
59
+ }
60
+
61
+ async function openingPackageJson(settings) {
62
+ console.log('>>> Opening package.json file...');
63
+ const packageJson = await fs.readFileSync(settings.packagePath, 'utf8');
64
+ const packageObject = JSON.parse(packageJson);
65
+ if (packageObject != null) {
66
+ console.log(`The current version is ${packageObject.version}`);
67
+ return packageObject.version;
68
+ }
69
+ return '';
70
+ }
71
+
72
+ async function cleaningProject(settings) {
73
+ console.log('>>> Cleaning project...');
74
+ await execute(`rm -f ${settings.packageLockPath}`);
75
+ await execute(`rm -f -R ${settings.nodeModulesPath}`);
76
+ await execute(`rm -f -R ${settings.distPath}`);
77
+ }
78
+
79
+ async function buildingBundle(_settings) {
80
+ console.log('>>> Installing Dependencies...');
81
+ await execute('npm install');
82
+
83
+ console.log('>>> Generating Build...');
84
+ await execute('npm run build');
85
+ }
86
+
87
+ async function generatingDocument(settings) {
88
+ console.log('>>> Generating Document...');
89
+ await execute(`doxdox './dist/.+\\.js' --output ${settings.docsFileName} --ignore './dist/cjs/.+\\.js' --package ${settings.packagePath}`);
90
+ }
91
+
92
+ async function pushingChanges(settings) {
93
+ console.log('>>> Commiting and Pushing Docs changes...');
94
+
95
+ const stdout = await execute('git rev-parse --abbrev-ref HEAD');
96
+ await execute(`git add ${settings.docsPath}`);
97
+ await execute(`git commit -m "📝 docs: Updated docs${settings.packageVersion !== '' ? ' for ' + settings.packageVersion : ''}"`);
98
+ await execute(`git push -u origin ${stdout}`);
99
+ }
100
+
101
+ async function revertChanges(settings) {
102
+ console.log('>>> Checking for modifications...');
103
+ console.warn(`>>> Unstaging posible changes from ${settings.docsFileName} file`);
104
+ await execute(`git restore --staged ${settings.docsPath}`);
105
+ console.warn(`>>> Discarting posible changes of ${settings.docsFileName} file`);
106
+ await execute(`git checkout -- ${settings.docsPath}`);
107
+ }
108
+
109
+ async function startPublishingVersion(settings) {
110
+ await callingPublisher(settings);
111
+ }
112
+
113
+ async function callingPublisher(settings) {
114
+ console.log('>>> Calling Publisher');
115
+ let anyBranch = '', tag = '';
116
+ const anyBranchIndex = proc.argv.findIndex(function (argv) { return argv.includes('--np-any-branch='); });
117
+ const tagIndex = proc.argv.findIndex(function (argv) { return argv.includes('--np-tag='); });
118
+ if (anyBranchIndex > -1) {
119
+ const anyBranchArg = proc.argv[anyBranchIndex].split('--np-any-branch=');
120
+ anyBranch = anyBranchArg[1] == null || anyBranchArg[1] === '' ? '' : '--any-branch';
121
+ }
122
+ if (tagIndex > -1) {
123
+ const tagArg = proc.argv[tagIndex].split('--np-tag=');
124
+ tag = tagArg[1] == null || tagArg[1] === '' ? '' : proc.argv[tagIndex].replace('--np-tag=', '--tag=');
125
+ }
126
+ // await execute(`np ${settings.newVersion} ${anyBranch} ${tag}`);
127
+ await spawning(`np ${settings.newVersion}`, [anyBranch, tag]);
128
+ }
129
+
130
+ async function startGeneratingDocs(settings) {
131
+ console.log('>>> Starting of the Docs generation.');
132
+
133
+ await generatingDocument(settings);
134
+ await pushingChanges(settings);
135
+ }
136
+
137
+ async function getNewVersion() {
138
+ let newVersion;
139
+ const versionIndex = proc.argv.findIndex(function (argv) { return argv.includes('--np-new-version='); });
140
+ if (versionIndex > -1) {
141
+ const versionArg = proc.argv[versionIndex].split('--np-new-version=');
142
+ newVersion = versionArg[1] == null || versionArg[1] === '' ? undefined : versionArg[1];
143
+ }
144
+ if (newVersion == null) {
145
+ newVersion = question('No version provided. Type the new version: ');
146
+ }
147
+ return newVersion;
148
+ }
149
+
150
+ async function init() {
151
+ let settings = {
152
+ distPath: './dist',
153
+ docsPath: './README.md',
154
+ docsFileName: 'README.md',
155
+ newVersion: undefined,
156
+ nodeModulesPath: './node_modules',
157
+ packageLockPath: './package-lock.json',
158
+ packagePath: './package.json',
159
+ packageVersion: '',
160
+ };
161
+
162
+ console.log('Welcome. The publishing operationg will begin.');
163
+ try {
164
+ settings["packageVersion"] = await openingPackageJson(settings);
165
+ settings["newVersion"] = await getNewVersion();
166
+
167
+ await cleaningProject(settings);
168
+ await buildingBundle(settings);
169
+ await startPublishingVersion(settings);
170
+ await startGeneratingDocs(settings);
171
+ console.info('Finished Publishing');
172
+ } catch (err) {
173
+ console.error('Error: ', err);
174
+ await revertChanges(settings);
175
+ } finally {
176
+ console.log('Execution finished');
177
+ }
178
+ }
179
+
180
+ init();
@@ -24,6 +24,6 @@ export function getModelColumn(column: Partial<IColumn>, model: IModel): IColumn
24
24
  * @returns the question data array from model object
25
25
  */
26
26
  function getQuestionData(model: IModel): IColumn[] {
27
- debugger
27
+ // debugger
28
28
  return _get(model, 'questions.data', []);
29
29
  }
@@ -27,9 +27,10 @@ import { IFUScope } from "../interfaces/ui/IFUScope";
27
27
 
28
28
  /**
29
29
  * Builds the Fitler Data structure from UI filter data
30
+ * @private
30
31
  * @param uFilterData The UI filter Data object
31
32
  * @param version the version of the structure
32
- * @returns
33
+ * @returns a Filter Data structure
33
34
  */
34
35
  function UI21ToFD(uFilterData: IFUData, version): IFSData {
35
36
  return {
@@ -5,8 +5,8 @@ import { DATE_DISTINCT_TIME_PROPERTY } from "../../dates/constants/DATE_DISTINCT
5
5
  /**
6
6
  * [TODO: For 2022, eliminate this adapter]
7
7
  * Get the new property base on the old date grouping properties
8
- * @param property
9
- * @returns
8
+ * @param property the property to be adapted
9
+ * @returns a adapted property
10
10
  */
11
11
  export function adaptDateGroupingProperty(property: IFProperty | any): IFProperty {
12
12
  return property === 'p&quarter' ? DATE_DISTINCT_PROPERTY.YEAR_QUARTER :
@@ -9,9 +9,9 @@ import { getScopesByHierarchy } from "./getScopesByHierarchy";
9
9
  /**
10
10
  * [TODO: Make a proper description for this function]
11
11
  * @param chartSettings Chart Settings for the Filter Builder
12
- * @param scopes
13
- * @param currentScope
14
- * @returns
12
+ * @param scopes the pair id/label scopes
13
+ * @param currentScope the scope to be validated
14
+ * @returns the chart settings
15
15
  */
16
16
  export function applyHierarchyForAggFilters(chartSettings: IFUChartSettings, scopes: IFSScopeID[] = [], currentScope: IFScope = FILTER_SCOPE.GLOBAL): IFUChartSettings {
17
17
  if (isEmpty(chartSettings)) return;
@@ -2,10 +2,12 @@ import { filterNestedTree } from "../../../general/array/filterNestedTree";
2
2
  import { IFBFilterAggregate } from "../../interfaces/backend/IFBFilterAggregate";
3
3
 
4
4
  /**
5
+ * @todo Make a proper description for this function
5
6
  *
6
- * @param aggFilters
7
- * @param summaryIndex
8
- * @returns
7
+ * Gets the aggFilters structure by an index
8
+ * @param aggFilters The aggFilter Structure
9
+ * @param summaryIndex an index
10
+ * @returns a new aggFilters structure
9
11
  */
10
12
  export function getAggFiltersBySummaryIndex(aggFilters: IFBFilterAggregate, summaryIndex: number): IFBFilterAggregate {
11
13
  if (!aggFilters) return undefined;
@@ -75,9 +75,10 @@ export function getBackendValues(filter: IFSFilter): IFBackendExpressionValue[]
75
75
 
76
76
  /**
77
77
  * Gets the expression values. Depending on the column type
78
+ * @private
78
79
  * @param values a collection of filter values
79
80
  * @param filter The filter structure
80
- * @returns
81
+ * @returns Expression values
81
82
  */
82
83
  function getResultValues(values: IFSValue[], filter: IFSFilter): IFBExpressionValue[] {
83
84
  return (values || []).map((value: IFSValue) => {
@@ -93,6 +94,7 @@ function getResultValues(values: IFSValue[], filter: IFSFilter): IFBExpressionVa
93
94
 
94
95
  /**
95
96
  * Gets the Ranking values.
97
+ * @private
96
98
  * @param values a collection of filter values in the ranking structure
97
99
  * @param rankingGroupIndex determine the value by this index to build and return it
98
100
  * @returns Expression values for ranking
@@ -7,6 +7,7 @@ import { IFFiltersMergeFilters } from "../../interfaces/functions/IFFiltersMerge
7
7
  */
8
8
  export function getMergeFiltersSettings(settings?: IFFiltersMergeFilters): IFFiltersMergeFilters {
9
9
  return {
10
+ overwriteFilterProps: settings?.overwriteFilterProps ?? true,
10
11
  overwriteValues: settings?.overwriteValues ?? false,
11
12
  setGroupedColumnOperator: settings?.setGroupedColumnOperator ?? true
12
13
  };
@@ -11,6 +11,7 @@ import { IFSValueRelativeDate } from "../../interfaces/common/IFSValueRelativeDa
11
11
  import { IFFiltersMergeFilters } from "../../interfaces/functions/IFFiltersMergeFilters";
12
12
  import { IFValue } from "../../interfaces/IFValue";
13
13
  import { IFUData } from "../../interfaces/ui/IFUData";
14
+ import { getFilterid } from "./getFilterid";
14
15
  import { getMergeFiltersSettings } from "./getMergeFiltersSettings";
15
16
  import { isInValidator } from "./isInValidator";
16
17
  import { isNullValidator } from "./isNullValidator";
@@ -24,7 +25,7 @@ import { resolveScopeConditions } from "./resolveScopeConditions";
24
25
  * Merge filter data structures in a new one. The first Filter Data passed in the argument has the priority
25
26
  * @param filterData1 The target filter data
26
27
  * @param filterData2 the filter data to be merged
27
- * @param overwriteValues Flag to overwrite or not the filter values
28
+ * @param settings configuration of the mergeFilter
28
29
  * @returns a new filter data structure
29
30
  */
30
31
  export function mergeFilters(filterData1: IFSData | IFUData, filterData2: IFSData | IFUData, settings?: IFFiltersMergeFilters): IFSData | IFUData {
@@ -50,7 +51,7 @@ export function mergeFilters(filterData1: IFSData | IFUData, filterData2: IFSDat
50
51
  * Gets a new scope structure array by merging two scope structures
51
52
  * @param scopes1 the target scope structure
52
53
  * @param scopes2 the scope to be merged
53
- * @param overwriteValues Flag to overwrite or not the filter values
54
+ * @param settings configuration of the mergeFilter
54
55
  * @returns a new scope structure array
55
56
  */
56
57
  function mergeScopes(scopes1: IFSScope[] = [], scopes2: IFSScope[] = [], settings?: IFFiltersMergeFilters): IFSScope[] {
@@ -75,7 +76,7 @@ function mergeScopes(scopes1: IFSScope[] = [], scopes2: IFSScope[] = [], setting
75
76
  * Gets a new dataset structure array by merging two dataset structures
76
77
  * @param datasets1 the target dataset structure
77
78
  * @param datasets2 the dataset to be merged
78
- * @param overwriteValues Flag to overwrite or not the filter values
79
+ * @param settings configuration of the mergeFilter
79
80
  * @returns a new dataset structure array
80
81
  */
81
82
  function mergeDatasets(datasets1: IFSDataset[] = [], datasets2: IFSDataset[] = [], settings?: IFFiltersMergeFilters): IFSDataset[] {
@@ -100,18 +101,20 @@ function mergeDatasets(datasets1: IFSDataset[] = [], datasets2: IFSDataset[] = [
100
101
  * Gets a new filter structure array by merging two filter structures
101
102
  * @param filters1 the target filter structure
102
103
  * @param filters2 the filter to be merged
103
- * @param overwriteValues Flag to overwrite or not the filter values
104
+ * @param settings configuration of the mergeFilter
104
105
  * @returns a new filter structure array
105
106
  */
106
107
  function mergeFilterss(filters1: IFSFilter[] = [], filters2: IFSFilter[] = [], settings?: IFFiltersMergeFilters): IFSFilter[] {
107
108
  let newFilters = filters1.reduce((filters: IFSFilter[], filter1: IFSFilter) => {
108
109
  const filter2Index = filters2.findIndex(filter2 => resolveFilterConditions(filter2, { column: filter1.column, dateSection: filter1.dateSection, panelid: filter1.extras.panelid, property: filter1.property, validator: filter1.validator }));
109
110
  if (filter2Index > -1) {
110
- filter1 = { ...filter1, values: mergeValues(filter1, filters2[filter2Index], settings.overwriteValues) };
111
+ filter1 = { ...filter1, values: mergeValues(filter1, filters2[filter2Index], settings) };
112
+ filter1 = mergeFilterProps(filter1, filters2[filter2Index], settings);
111
113
  filters2.splice(filter2Index, 1);
112
114
  } else {
113
115
  filter1 = { ...filter1, operator: settings.setGroupedColumnOperator ? FILTER_GROUPED_COLUMN_OPERATOR : filter1.operator };
114
116
  }
117
+ filter1.filterid = getFilterid(filter1);
115
118
  filters.push(filter1);
116
119
  return filters;
117
120
  }, [] as IFSFilter[]);
@@ -120,20 +123,42 @@ function mergeFilterss(filters1: IFSFilter[] = [], filters2: IFSFilter[] = [], s
120
123
  return newFilters;
121
124
  }
122
125
 
126
+ /**
127
+ * Gets a new filter structure when the setting is configured
128
+ * @param filter1 the target filter structure
129
+ * @param filter2 the filter to be used to merge the values
130
+ * @param settings configuration of the mergeFilter
131
+ * @returns a new filter structure with overwritted props
132
+ */
133
+ function mergeFilterProps(filter1: IFSFilter, filter2: IFSFilter, settings?: IFFiltersMergeFilters) {
134
+ if (settings.overwriteFilterProps) {
135
+ filter1 = {
136
+ ...filter1,
137
+ extras: filter2.extras,
138
+ enabled: filter2.enabled || filter1.enabled,
139
+ filterid: filter2.filterid,
140
+ lookupDisplayIndex: filter2.lookupDisplayIndex,
141
+ nullValues: filter2.nullValues,
142
+ selectAll: filter2.selectAll,
143
+ };
144
+ }
145
+ return filter1;
146
+ }
147
+
123
148
  /**
124
149
  * Gets a new value structure array by merging two value structures
125
150
  * @param filter1 the target filter structure
126
151
  * @param filter2 the filter to be used to merge the values
127
- * @param overwrite Flag to overwrite or not the filter values
152
+ * @param settings configuration of the mergeFilter
128
153
  * @returns a new value structure array
129
154
  */
130
- function mergeValues(filter1: IFSFilter, filter2: IFSFilter, overwrite = false): IFValue[] {
155
+ function mergeValues(filter1: IFSFilter, filter2: IFSFilter, settings?: IFFiltersMergeFilters): IFValue[] {
131
156
  if (isEmpty(filter1) && isEmpty(filter2)) return [];
132
157
 
133
158
  let newValues = [];
134
159
  let filter1Values = filter1.values || [];
135
- const filter2Values = filter1.values || [];
136
- if (!overwrite) {
160
+ const filter2Values = filter2.values || [];
161
+ if (!settings.overwriteValues) {
137
162
  if (isInValidator(filter1.validator)) {
138
163
  newValues = filter2Values.reduce((values: IFValue[], value2: IFSValueRelativeDate) => {
139
164
  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);
@@ -4,12 +4,12 @@ import { IFSData } from "../interfaces/common/IFSData";
4
4
  import { getFiltersByAggregateColumn } from "./common/getFiltersByAggregateColumn";
5
5
 
6
6
  /**
7
- *
8
- * @param logics
9
- * @param summaries
10
- * @returns
7
+ * @todo FIX AGGREGATE FILTERS
8
+ * @private
9
+ * @param filterData
10
+ * @param _summaries
11
+ * @returns the aggFilters structure
11
12
  */
12
- // [TODO: FILTERS - FIX AGGREGATE FILTERS]
13
13
  export function getAggFiltersFromFilterData(filterData: IFSData, _summaries: any[]): IFBFilterAggregate {
14
14
  filterData = { ...getFiltersByAggregateColumn(filterData) };
15
15
  if (isEmpty(filterData)) return;
@@ -16,11 +16,10 @@ import { getI18nDateGroupLabel } from "../../../globalization/helpers/getI18nDat
16
16
  import { IDateColumnPropertyType } from "../../../columns/interfaces/IDateColumnPropertyType";
17
17
 
18
18
  /**
19
- *
20
- * @param filter
21
- * @param addEnableds
22
- * @param rankingGroupIndex
23
- * @returns
19
+ * Gets the UI Values generated depending on the validator
20
+ * @param filter the filter structure
21
+ * @param settings a settings for this function
22
+ * @returns the UI Values
24
23
  */
25
24
  export function getUIValues(filter: IFSFilter, settings?: IFUUIValueSettings): IFUValue[] {
26
25
  settings = getUiValuesSettings(settings);
@@ -3,6 +3,7 @@
3
3
  * Structure for MergeFilters property settings
4
4
  */
5
5
  export interface IFFiltersMergeFilters {
6
+ overwriteFilterProps?: boolean;
6
7
  overwriteValues?: boolean;
7
8
  setGroupedColumnOperator?: boolean;
8
9
  }
@@ -29,7 +29,8 @@ export const formatWithLocale = (value: any, outputFormat: IFormatOutputFormat,
29
29
 
30
30
  function formatLocaleDate(value: any, outputFormat: IFormatOutputFormat, config: IFormatConfig) {
31
31
  const { lang = LANG_DEFAULT, options } = config;
32
- const dateParam = new Date(value);
32
+ const dateValue = value?.replace('.000Z', '');
33
+ const dateParam = new Date(dateValue);
33
34
  let langOpts = options;
34
35
  if (outputFormat?.originalFormat) {
35
36
  const { format } = outputFormat.originalFormat;
@@ -42,25 +42,3 @@ function validateToReturnDefaultValue(baseObject: any, path: string | string[]):
42
42
  path == null ||
43
43
  (typeof path !== 'string' && !Array.isArray(path));
44
44
  }
45
-
46
-
47
- /**
48
- *
49
- * /**
50
- * Like lodash _.get.
51
- * Gets the value at path of object. If the resolved value is undefined, the defaultValue is returned in its place.
52
- * @param baseObject The object to query
53
- * @param path The path of the property to get.
54
- * @param defaultValue The value returned for undefined resolved values.
55
- * @returns the resolved value.
56
- export function get(baseObject: any, path: string, defaultValue?: any): any {
57
- function fn() {
58
- try {
59
- const value = eval(`this.${path}`.replace('.[', '['));
60
- return typeof value !== 'undefined' ? value : defaultValue;
61
- } catch (e) { return defaultValue; }
62
- }
63
- return fn.apply(baseObject, null);
64
- }
65
-
66
- */
@@ -18,4 +18,6 @@ export interface II18nChartBuilderConditionalFormatting {
18
18
  value: string;
19
19
  type_value: string;
20
20
  remove: string;
21
+ apply_to: string;
22
+ entire_row: string;
21
23
  }
@@ -30,5 +30,7 @@ export const I18N_CHART_BUILDER_FORMAT_OPTIONS: Pick<II18nChartBuilder, FormatOp
30
30
  value: 'Value',
31
31
  type_value: 'Type Value',
32
32
  remove: 'Remove',
33
+ apply_to: 'Apply to',
34
+ entire_row: 'Entire Row'
33
35
  }
34
36
  };
@@ -1,3 +1,2 @@
1
1
  export * from './IGeneralInfo';
2
- export * from './IGeneralWidgetConfig';
3
2
  export * from './IWidgetConfig';
@@ -1,6 +1,6 @@
1
1
  import { getArrayByProperty } from "../../general/array/getArrayByProperty";
2
2
  import { isEmpty } from "../../general/mix/isEmpty";
3
- import { IGeneralWidgetConfig } from "../../interfaces/general/IGeneralWidgetConfig";
3
+ import { IWidgetConfig } from "../../interfaces/general/IWidgetConfig";
4
4
  import { IDataset } from "../../qrvey/interfaces/IDataset";
5
5
  import { getAllQrveys } from "./getAllQrveys.api";
6
6
  import { getDatasetsByIds } from "./getDatasetsByIds.api";
@@ -15,7 +15,7 @@ import { getDatasetsByIds } from "./getDatasetsByIds.api";
15
15
  * @param qrveyids Collection of Qrvey IDs for returning a set of available datasets
16
16
  * @returns a promise that if it is resolved displays a collection of dataset info.
17
17
  */
18
- export function getAllDatasets(config: IGeneralWidgetConfig, qrveyids?: string[]): Promise<IDataset[]> {
18
+ export function getAllDatasets(config: IWidgetConfig, qrveyids?: string[]): Promise<IDataset[]> {
19
19
  if (Array.isArray(qrveyids) && isEmpty(qrveyids)) {
20
20
  return Promise.resolve([] as IDataset[]);
21
21
  } else if (Array.isArray(qrveyids) && !isEmpty(qrveyids)) {
@@ -1,17 +1,17 @@
1
- import { IGeneralWidgetConfig } from '../../interfaces/general/IGeneralWidgetConfig';
2
1
  import { IDataset } from '../../qrvey/interfaces/IDataset';
3
2
  import { CHART_ENDPOINT } from '../constants/CHART_ENDPOINT';
4
3
  import Request from '../helpers/Request';
5
4
  import { BDatasetsToUIDatasets } from '../adapters/BDatasetsToUIDatasets.adapter';
6
5
  import { getDefaultQuestionListOptionsAttributes } from '../helpers/getDefaultQuestionListOptionsAttributes';
7
6
  import { chooseLang } from '../../format/localization';
7
+ import { IWidgetConfig } from '../../interfaces/general/IWidgetConfig';
8
8
 
9
9
  /**
10
10
  * Get a dataset by Qrvey ID
11
11
  * @param qrveyid The Qrvey ID
12
12
  * @returns a promise
13
13
  */
14
- export function getDatasetColumns(config: IGeneralWidgetConfig, qrveyid?: string): Promise<IDataset[]> {
14
+ export function getDatasetColumns(config: IWidgetConfig, qrveyid?: string): Promise<IDataset[]> {
15
15
  const lang = chooseLang(config);
16
16
  return Request.post({ ...config, qrveyid, endpoint: CHART_ENDPOINT }, '/question/list', {
17
17
  optionsAttributes: getDefaultQuestionListOptionsAttributes(),
@@ -1,4 +1,3 @@
1
- import { IGeneralWidgetConfig } from '../../interfaces/general/IGeneralWidgetConfig';
2
1
  import { IDataset } from '../../qrvey/interfaces/IDataset';
3
2
  import Request from '../helpers/Request';
4
3
  import { BDatasetsToUIDatasets } from '../adapters/BDatasetsToUIDatasets.adapter';
@@ -6,13 +5,14 @@ import { isEmpty } from '../../general/mix/isEmpty';
6
5
  import { chooseLang } from '../../format/localization';
7
6
  import { getDefaultQuestionListOptionsAttributes } from '../helpers/getDefaultQuestionListOptionsAttributes';
8
7
  import { QUESTION_LIST_BULK_ENDPOINT } from '../constants/QUESTION_LIST_BULK_ENDPOINT';
8
+ import { IWidgetConfig } from '../../interfaces/general/IWidgetConfig';
9
9
 
10
10
  /**
11
11
  * Get a dataset by Qrvey ID
12
12
  * @param qrveyid The Qrvey ID
13
13
  * @returns a promise
14
14
  */
15
- export function getDatasetsByIds(config: IGeneralWidgetConfig, qrveyids: string[] = []): Promise<IDataset[]> {
15
+ export function getDatasetsByIds(config: IWidgetConfig, qrveyids: string[] = []): Promise<IDataset[]> {
16
16
  if (Array.isArray(qrveyids) && !isEmpty(qrveyids)) {
17
17
  const lang = chooseLang(config);
18
18
  return Request.post({ ...config, endpoint: QUESTION_LIST_BULK_ENDPOINT }, '', {
@@ -1,12 +0,0 @@
1
- export interface IGeneralWidgetConfig {
2
- domain: string;
3
- apiKey?: string;
4
- qrveyid?: string;
5
- qv_token?: string;
6
- locale?: string;
7
- timezoneControl?: string;
8
- isFromAN?: boolean;
9
- appid?: string;
10
- userid?: string;
11
- lang?: string;
12
- }
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,12 +0,0 @@
1
- export interface IGeneralWidgetConfig {
2
- domain: string;
3
- apiKey?: string;
4
- qrveyid?: string;
5
- qv_token?: string;
6
- locale?: string;
7
- timezoneControl?: string;
8
- isFromAN?: boolean;
9
- appid?: string;
10
- userid?: string;
11
- lang?: string;
12
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,12 +0,0 @@
1
- export interface IGeneralWidgetConfig {
2
- domain: string;
3
- apiKey?: string;
4
- qrveyid?: string;
5
- qv_token?: string;
6
- locale?: string;
7
- timezoneControl?: string;
8
- isFromAN?: boolean;
9
- appid?: string;
10
- userid?: string;
11
- lang?: string;
12
- }