@qrvey/utils 1.18.0 → 1.18.2

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 (43) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/comparativeAnalysis/index.js +474 -0
  3. package/dist/cjs/elements/helpers/fixed.js +10 -1
  4. package/dist/cjs/elements/helpers/gridStrategy.js +10 -0
  5. package/dist/cjs/elements/helpers/responsive.js +10 -1
  6. package/dist/cjs/elements/helpers/vem-element/constants/vem.constants.js +33 -0
  7. package/dist/cjs/elements/helpers/vem-element/definitions/main.definitions.js +263 -0
  8. package/dist/cjs/elements/helpers/vem-element/helpers/vem.helpers.js +76 -0
  9. package/dist/cjs/elements/helpers/vem-element/models/vem.models.js +3 -0
  10. package/dist/cjs/elements/interfaces/IVemCore.js +12 -0
  11. package/dist/cjs/filters/helpers/OLD_getAggFilters.js +10 -2
  12. package/dist/cjs/globalization/service/i18nServiceV2.js +3 -0
  13. package/dist/cjs/globalization/service/i18nextBuilder.js +3 -0
  14. package/dist/cjs/index.js +1 -0
  15. package/dist/cjs/tokens/getCustomTokenBoxParse.js +1 -0
  16. package/dist/comparativeAnalysis/index.d.ts +55 -0
  17. package/dist/comparativeAnalysis/index.js +457 -0
  18. package/dist/elements/helpers/fixed.d.ts +3 -2
  19. package/dist/elements/helpers/fixed.js +9 -1
  20. package/dist/elements/helpers/gridStrategy.d.ts +8 -1
  21. package/dist/elements/helpers/gridStrategy.js +10 -2
  22. package/dist/elements/helpers/responsive.d.ts +3 -2
  23. package/dist/elements/helpers/responsive.js +9 -1
  24. package/dist/elements/helpers/vem-element/constants/vem.constants.d.ts +24 -0
  25. package/dist/elements/helpers/vem-element/constants/vem.constants.js +30 -0
  26. package/dist/elements/helpers/vem-element/definitions/main.definitions.d.ts +9 -0
  27. package/dist/elements/helpers/vem-element/definitions/main.definitions.js +260 -0
  28. package/dist/elements/helpers/vem-element/helpers/vem.helpers.d.ts +8 -0
  29. package/dist/elements/helpers/vem-element/helpers/vem.helpers.js +70 -0
  30. package/dist/elements/helpers/vem-element/models/vem.models.d.ts +85 -0
  31. package/dist/elements/helpers/vem-element/models/vem.models.js +1 -0
  32. package/dist/elements/interfaces/ICanvasGrid.d.ts +24 -0
  33. package/dist/elements/interfaces/IVemCore.d.ts +14 -0
  34. package/dist/elements/interfaces/IVemCore.js +11 -0
  35. package/dist/elements/utils/element.d.ts +1 -1
  36. package/dist/filters/helpers/OLD_getAggFilters.js +10 -2
  37. package/dist/globalization/service/i18nServiceV2.js +3 -0
  38. package/dist/globalization/service/i18nextBuilder.js +3 -0
  39. package/dist/index.d.ts +1 -0
  40. package/dist/index.js +1 -0
  41. package/dist/interfaces/CustomTokens.interface.d.ts +1 -0
  42. package/dist/tokens/getCustomTokenBoxParse.js +1 -0
  43. package/package.json +4 -1
@@ -0,0 +1,263 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CONTAINER_ITEM_DEFINITION = exports.FILTER_DATE_ITEM_DEFINITION = exports.FILTER_LIST_ITEM_DEFINITION = exports.FILTER_INPUT_ITEM_DEFINITION = exports.ANALYTICS_ITEM_DEFINITION = exports.TEXT_ITEM_DEFINITION = exports.BUTTON_ITEM_DEFINITION = exports.IMAGE_ITEM_DEFINITION = void 0;
4
+ const vem_constants_1 = require("../constants/vem.constants");
5
+ exports.IMAGE_ITEM_DEFINITION = {
6
+ behavior: {
7
+ addingConfig: {
8
+ defaultDimensions: {
9
+ responsive: {
10
+ colSpan: 2,
11
+ rowSpan: 6,
12
+ },
13
+ fixed: {
14
+ width: 100,
15
+ height: 100,
16
+ },
17
+ },
18
+ defaultItemData: {
19
+ aspect: "cover",
20
+ },
21
+ },
22
+ },
23
+ };
24
+ exports.BUTTON_ITEM_DEFINITION = {
25
+ behavior: {
26
+ addingConfig: {
27
+ defaultDimensions: {
28
+ responsive: {
29
+ colSpan: 1,
30
+ rowSpan: 1,
31
+ },
32
+ fixed: {
33
+ width: 100,
34
+ height: 30,
35
+ },
36
+ },
37
+ defaultItemData: () => ({
38
+ background: "#FF5300",
39
+ color: "#ffffff",
40
+ fontFamily: "Inter, serif",
41
+ fontSize: "12px",
42
+ url: "",
43
+ label: "",
44
+ }),
45
+ minSize: {
46
+ fixed: {
47
+ height: 30,
48
+ width: 30,
49
+ customSize: (itemData) => {
50
+ const fontSizeValue = parseInt(itemData.fontSize.replace("px", ""), 10);
51
+ const minHeight = fontSizeValue > vem_constants_1.DEFAULT_MIN_FONT_TO_AUTO_RESIZE
52
+ ? fontSizeValue * vem_constants_1.DEFAULT_DELTA_RESIZE_IN_FIXED
53
+ : 30;
54
+ return {
55
+ height: minHeight,
56
+ width: 30,
57
+ };
58
+ },
59
+ },
60
+ responsive: {
61
+ height: 1,
62
+ width: 1,
63
+ customSize: (itemData) => {
64
+ const fontSizeValue = parseInt(itemData.fontSize.replace("px", ""), 10);
65
+ const minHeightPx = fontSizeValue > vem_constants_1.DEFAULT_MIN_FONT_TO_AUTO_RESIZE
66
+ ? fontSizeValue * vem_constants_1.DEFAULT_DELTA_RESIZE_IN_RESPONSIVE
67
+ : 30;
68
+ return {
69
+ height: Math.round(minHeightPx / 32),
70
+ width: 1,
71
+ };
72
+ },
73
+ },
74
+ },
75
+ },
76
+ },
77
+ };
78
+ exports.TEXT_ITEM_DEFINITION = {
79
+ behavior: {
80
+ addingConfig: {
81
+ defaultDimensions: {
82
+ responsive: {
83
+ colSpan: 2,
84
+ rowSpan: 6,
85
+ },
86
+ fixed: {
87
+ width: 200,
88
+ height: 100,
89
+ },
90
+ },
91
+ defaultItemData: {
92
+ backgroundColor: "rgba(0,0,0,0)",
93
+ borderColor: "#000000",
94
+ borderWidth: "1px",
95
+ borderStyle: "none",
96
+ fontFamily: "Inter, serif",
97
+ fontSize: "12px",
98
+ fontColor: "#000000",
99
+ paddingTop: 5,
100
+ paddingBottom: 5,
101
+ paddingLeft: 5,
102
+ paddingRight: 5,
103
+ },
104
+ },
105
+ },
106
+ };
107
+ exports.ANALYTICS_ITEM_DEFINITION = {
108
+ behavior: {
109
+ addingConfig: {
110
+ defaultDimensions: {
111
+ responsive: {
112
+ colSpan: 4,
113
+ rowSpan: 10,
114
+ },
115
+ fixed: {
116
+ width: 400,
117
+ height: 400,
118
+ },
119
+ },
120
+ },
121
+ },
122
+ };
123
+ exports.FILTER_INPUT_ITEM_DEFINITION = {
124
+ behavior: {
125
+ addingConfig: {
126
+ defaultDimensions: {
127
+ responsive: {
128
+ colSpan: vem_constants_1.DEFAULT_WIDTH_IN_RESPONSIVE,
129
+ rowSpan: vem_constants_1.DEFAULT_HEIGHT_IN_RESPONSIVE,
130
+ },
131
+ fixed: {
132
+ width: vem_constants_1.DEFAULT_WIDTH_IN_FIXED,
133
+ height: vem_constants_1.DEFAULT_HEIGHT_IN_FIXED,
134
+ },
135
+ },
136
+ minSize: {
137
+ fixed: {
138
+ height: 76,
139
+ width: 200,
140
+ customSize: () => {
141
+ return {
142
+ height: 76,
143
+ width: 200,
144
+ };
145
+ },
146
+ },
147
+ responsive: {
148
+ height: 1,
149
+ width: 1,
150
+ customSize: () => {
151
+ return {
152
+ height: 1,
153
+ width: 1,
154
+ };
155
+ },
156
+ },
157
+ },
158
+ },
159
+ },
160
+ };
161
+ exports.FILTER_LIST_ITEM_DEFINITION = {
162
+ behavior: {
163
+ addingConfig: {
164
+ defaultDimensions: {
165
+ responsive: {
166
+ colSpan: vem_constants_1.DEFAULT_WIDTH_IN_RESPONSIVE,
167
+ rowSpan: 2,
168
+ },
169
+ fixed: {
170
+ width: vem_constants_1.DEFAULT_WIDTH_IN_FIXED,
171
+ height: vem_constants_1.DEFAULT_HEIGHT_IN_FIXED,
172
+ },
173
+ },
174
+ minSize: {
175
+ fixed: {
176
+ height: 30,
177
+ width: 130,
178
+ customSize: (itemData) => {
179
+ const minHeight = itemData.type === vem_constants_1.FILTER_LIST_TYPE.LIST ? 100 : 30;
180
+ return {
181
+ height: minHeight,
182
+ width: 130,
183
+ };
184
+ },
185
+ },
186
+ responsive: {
187
+ height: 1,
188
+ width: 1,
189
+ customSize: () => {
190
+ return {
191
+ height: 1,
192
+ width: 1,
193
+ };
194
+ },
195
+ },
196
+ },
197
+ },
198
+ },
199
+ };
200
+ exports.FILTER_DATE_ITEM_DEFINITION = {
201
+ behavior: {
202
+ addingConfig: {
203
+ defaultDimensions: {
204
+ responsive: {
205
+ colSpan: vem_constants_1.DEFAULT_WIDTH_IN_RESPONSIVE,
206
+ rowSpan: vem_constants_1.DEFAULT_HEIGHT_IN_RESPONSIVE,
207
+ },
208
+ fixed: {
209
+ width: vem_constants_1.DEFAULT_WIDTH_IN_FIXED,
210
+ height: vem_constants_1.DEFAULT_HEIGHT_IN_FIXED,
211
+ },
212
+ },
213
+ defaultItemData: {
214
+ validators: [],
215
+ trigger: vem_constants_1.FILTER_TRIGGER_TYPE.BUTTON,
216
+ selectorColor: "#FF5300",
217
+ buttonBackgroundColor: "#FF5300",
218
+ buttonTextColor: "#ffffff",
219
+ buttonBorderColor: "#FF5300",
220
+ borderColor: "#e3e3e3",
221
+ fontColor: "#5F5F5F",
222
+ },
223
+ minSize: {
224
+ fixed: {
225
+ height: 30,
226
+ width: 100,
227
+ customSize: () => {
228
+ return {
229
+ height: 30,
230
+ width: 100,
231
+ };
232
+ },
233
+ },
234
+ responsive: {
235
+ height: 1,
236
+ width: 1,
237
+ customSize: () => {
238
+ return {
239
+ height: 1,
240
+ width: 1,
241
+ };
242
+ },
243
+ },
244
+ },
245
+ },
246
+ },
247
+ };
248
+ exports.CONTAINER_ITEM_DEFINITION = {
249
+ behavior: {
250
+ addingConfig: {
251
+ defaultDimensions: {
252
+ responsive: {
253
+ colSpan: 10,
254
+ rowSpan: 10,
255
+ },
256
+ fixed: {
257
+ width: 900,
258
+ height: 500,
259
+ },
260
+ },
261
+ },
262
+ },
263
+ };
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateDimension = exports.getDefaultDimensions = exports.updateDimension = exports.VEM_DEFINITIONS = void 0;
4
+ const ICanvasGrid_1 = require("../../../interfaces/ICanvasGrid");
5
+ const IVemPosition_1 = require("../../../interfaces/IVemPosition");
6
+ const position_1 = require("../../../utils/position");
7
+ const vem_constants_1 = require("../constants/vem.constants");
8
+ const main_definitions_1 = require("../definitions/main.definitions");
9
+ exports.VEM_DEFINITIONS = {
10
+ image: main_definitions_1.IMAGE_ITEM_DEFINITION,
11
+ button: main_definitions_1.BUTTON_ITEM_DEFINITION,
12
+ text: main_definitions_1.TEXT_ITEM_DEFINITION,
13
+ analytics: main_definitions_1.ANALYTICS_ITEM_DEFINITION,
14
+ filterInput: main_definitions_1.FILTER_INPUT_ITEM_DEFINITION,
15
+ filterDate: main_definitions_1.FILTER_DATE_ITEM_DEFINITION,
16
+ filterList: main_definitions_1.FILTER_LIST_ITEM_DEFINITION,
17
+ container: main_definitions_1.CONTAINER_ITEM_DEFINITION,
18
+ };
19
+ const updateDimension = (element, canvasConfig, positionType, deviceList = vem_constants_1.DEVICE_LIST) => {
20
+ const position = (0, exports.getDefaultDimensions)(element, positionType);
21
+ let newElement = element;
22
+ deviceList.forEach((device) => {
23
+ const isForceAddField = device !== ICanvasGrid_1.CanvasDevice.DESKTOP;
24
+ const newPosition = {
25
+ ...position,
26
+ ...(isForceAddField && { preCalculated: true }),
27
+ };
28
+ const updatedElement = (0, position_1.setElementPosition)(newElement, positionType, device, newPosition);
29
+ if (positionType === IVemPosition_1.VemPositionType.RESPONSIVE) {
30
+ const columns = canvasConfig[device]
31
+ .columns.count;
32
+ newElement = (0, exports.validateDimension)(updatedElement, columns, device);
33
+ }
34
+ else {
35
+ newElement = updatedElement;
36
+ }
37
+ });
38
+ return newElement;
39
+ };
40
+ exports.updateDimension = updateDimension;
41
+ const normalizeSize = (item, positionType) => {
42
+ const vemDefinition = exports.VEM_DEFINITIONS[item.type];
43
+ const rawSize = vemDefinition.behavior.addingConfig.defaultDimensions[positionType];
44
+ const customSizeResolver = vemDefinition?.behavior.addingConfig.minSize?.[positionType]?.customSize;
45
+ const baseHeight = "height" in rawSize ? rawSize.height : rawSize.rowSpan;
46
+ const baseWidth = "width" in rawSize ? rawSize.width : rawSize.colSpan;
47
+ if (!customSizeResolver)
48
+ return { height: baseHeight, width: baseWidth };
49
+ const customSize = customSizeResolver(item.itemData);
50
+ return {
51
+ height: Math.max(customSize.height, baseHeight),
52
+ width: Math.max(customSize.width, baseWidth),
53
+ };
54
+ };
55
+ const getDefaultDimensions = (item, positionType) => {
56
+ const { height, width } = normalizeSize(item, positionType);
57
+ if (positionType === IVemPosition_1.VemPositionType.FIXED) {
58
+ return { x: 0, y: 0, height, width, z: 1 };
59
+ }
60
+ return { colSpan: width, rowSpan: height, colStart: 1, rowStart: 1 };
61
+ };
62
+ exports.getDefaultDimensions = getDefaultDimensions;
63
+ const validateDimension = (baseElem, columnsCount, canvasDevice) => {
64
+ const currentPosition = baseElem.position.responsive[canvasDevice];
65
+ if (!currentPosition)
66
+ return baseElem;
67
+ const fixedColSpan = currentPosition.colSpan <= columnsCount
68
+ ? currentPosition?.colSpan
69
+ : columnsCount;
70
+ const position = {
71
+ ...currentPosition,
72
+ colSpan: fixedColSpan,
73
+ };
74
+ return (0, position_1.setElementPosition)(baseElem, IVemPosition_1.VemPositionType.RESPONSIVE, canvasDevice, position);
75
+ };
76
+ exports.validateDimension = validateDimension;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const IVemPosition_1 = require("../../../interfaces/IVemPosition");
@@ -1,3 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VemType = void 0;
3
4
  const IVemPosition_1 = require("./IVemPosition");
5
+ var VemType;
6
+ (function (VemType) {
7
+ VemType["IMAGE"] = "image";
8
+ VemType["BUTTON"] = "button";
9
+ VemType["TEXT"] = "text";
10
+ VemType["ANALYTICS"] = "analytics";
11
+ VemType["FILTER_INPUT"] = "filterInput";
12
+ VemType["FILTER_LIST"] = "filterList";
13
+ VemType["FILTER_DATE"] = "filterDate";
14
+ VemType["CONTAINER"] = "container";
15
+ })(VemType || (exports.VemType = VemType = {}));
@@ -15,9 +15,16 @@ function getAggFilters(logics = [], summaries = []) {
15
15
  root: logic[0].filters,
16
16
  getChildren: (node) => node.expressions,
17
17
  isLeaf: (node) => !("operator" in node),
18
- onLeaf: (expression) => {
18
+ onLeaf: (expression, parent) => {
19
19
  const { enabled, validationType, value } = expression;
20
20
  const summaryIndex = getIndexByExpression(expression, summaries);
21
+ if (summaryIndex < 0) {
22
+ if (parent && parent.expressions) {
23
+ const parentFilter = parent;
24
+ parentFilter.expressions = parentFilter.expressions.filter((e) => e !== expression);
25
+ }
26
+ return;
27
+ }
21
28
  Object.keys(expression).forEach((key) => {
22
29
  delete expression[key];
23
30
  });
@@ -27,7 +34,8 @@ function getAggFilters(logics = [], summaries = []) {
27
34
  expression.value = value;
28
35
  },
29
36
  });
30
- return logic[0].filters[0];
37
+ const filters = logic[0].filters[0];
38
+ return (0, isEmpty_1.isEmpty)(filters.expressions) ? undefined : filters;
31
39
  }
32
40
  function getAggregateFilters(logics = []) {
33
41
  const _logics = (0, objectCopy_1.objectCopy)(logics);
@@ -19,6 +19,9 @@ class I18nServiceV2 {
19
19
  defaultNS: DEFAULT_NS,
20
20
  fallbackLng: false,
21
21
  keySeparator: ".",
22
+ interpolation: {
23
+ escapeValue: false,
24
+ },
22
25
  lng: language,
23
26
  nsSeparator: false,
24
27
  resources: {
@@ -27,6 +27,9 @@ class I18nServiceBuilder {
27
27
  keySeparator: ".",
28
28
  fallbackLng: false,
29
29
  defaultNS: "translation",
30
+ interpolation: {
31
+ escapeValue: false,
32
+ },
30
33
  resources: {
31
34
  en: {
32
35
  translation: this.setTranslations(i18nResource, i18nDefault),
package/dist/cjs/index.js CHANGED
@@ -20,3 +20,4 @@ tslib_1.__exportStar(require("./tokens/index"), exports);
20
20
  tslib_1.__exportStar(require("./column_format/index"), exports);
21
21
  tslib_1.__exportStar(require("./themes/index"), exports);
22
22
  tslib_1.__exportStar(require("./elements/index"), exports);
23
+ tslib_1.__exportStar(require("./comparativeAnalysis/index"), exports);
@@ -11,6 +11,7 @@ function getCustomTokenBoxParse(customTokens) {
11
11
  tokensList[tokenKey] = customTokens[tokenKey].map((token) => ({
12
12
  alias: token.label,
13
13
  label: `{{customTokens${subGroup}.${token.key}}}`,
14
+ value: token.value,
14
15
  }));
15
16
  }
16
17
  }
@@ -0,0 +1,55 @@
1
+ export declare const DELTA_COLUMN_PREFIX = "\u0394";
2
+ export declare const REFERENCE_COLUMN_MARKER = "\u25CF";
3
+ export declare function formatDeltaColumnCaption(caption: string): string;
4
+ export declare function formatReferenceColumnCaption(caption: string): string;
5
+ export declare function stripColumnMarker(caption: string): string;
6
+ export declare function resolveComparativeColumnCaption(chartModel: any, columnKey: string, allDatesText?: string): string;
7
+ export interface ComparativeVirtualColumn {
8
+ originalDataField: string;
9
+ originalIndex: number;
10
+ compDataField: string;
11
+ deltaDataField?: string;
12
+ extraDeltaDataFields?: string[];
13
+ }
14
+ export declare function formatComparativePeriodCaption(period: any, allDatesText: string, colLabel?: string): string;
15
+ export declare function formatDeltaDefaultCaption(referencePeriod: any, compareTo: any, allDatesText: string, colLabel?: string): string;
16
+ export declare function computeComparativeVirtualColumns(isGrouped: boolean, myBus: any, chart: any, getChartColumns: () => any[]): ComparativeVirtualColumn[];
17
+ export declare function expandColumnListWithComparativeColumns(columnList: any[], comparativeVirtualColumns: ComparativeVirtualColumn[], myBus: any, chart: any, allDatesText?: string): any[];
18
+ export declare function applyComparativeHeaderBorders(columns: any[], myBus: any, chart: any): any[];
19
+ export declare function mapOperatorToValidationType(operatorLabel: string): string;
20
+ export declare function buildComparisonExpressionValue(date1: string | null, date2: string | null, operatorLabel: string): Array<string | Record<string, string>>;
21
+ export declare function buildComparativeChartComparison(myBus: any, chart: any, groups: any[]): object | undefined;
22
+ export declare function resolveDeltaDiffInfo(dataField: string, comparativeVirtualColumns: ComparativeVirtualColumn[], getChartColumns: () => any[]): {
23
+ origUniqueCode: string;
24
+ diffIndex: number;
25
+ };
26
+ export interface IDifferenceColumnStyle {
27
+ id: string;
28
+ name: string;
29
+ positiveIs: "higher" | "lower";
30
+ showPercent: boolean;
31
+ showValue: boolean;
32
+ showTrendIcon: boolean;
33
+ showABCLabels: boolean;
34
+ positiveLabel: string;
35
+ negativeLabel: string;
36
+ neutralLabel: string;
37
+ displayOrder?: string[];
38
+ }
39
+ export interface IComparativeStyles {
40
+ columnDiffs: Record<string, IDifferenceColumnStyle[]>;
41
+ positiveIs: "higher" | "lower";
42
+ positiveColor: string;
43
+ negativeColor: string;
44
+ neutralColor: string;
45
+ }
46
+ export interface FormatDeltaCellOptions {
47
+ originalValue?: number;
48
+ format?: any;
49
+ locale?: any;
50
+ }
51
+ export interface DeltaCellContent {
52
+ text: string;
53
+ color: string;
54
+ }
55
+ export declare function computeDeltaCellContent(comparativeAnalisis: any, columnKey: string, rawValue: number, options?: FormatDeltaCellOptions): DeltaCellContent;