@contrail/document-generation 2.0.38 → 2.0.40

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 (45) hide show
  1. package/README.md +2 -2
  2. package/lib/board-document-generator.d.ts +23 -23
  3. package/lib/board-document-generator.js +227 -223
  4. package/lib/components/component-generator.d.ts +6 -6
  5. package/lib/components/component-generator.js +55 -55
  6. package/lib/components/component-grid-generator.d.ts +7 -7
  7. package/lib/components/component-grid-generator.js +84 -84
  8. package/lib/components/component-util.d.ts +5 -5
  9. package/lib/components/component-util.js +43 -43
  10. package/lib/document-generator.d.ts +6 -6
  11. package/lib/document-generator.js +11 -11
  12. package/lib/frames/frame-generator.d.ts +12 -12
  13. package/lib/frames/frame-generator.js +135 -131
  14. package/lib/frames/frame.d.ts +16 -16
  15. package/lib/frames/frame.js +67 -67
  16. package/lib/frames/index.d.ts +2 -2
  17. package/lib/frames/index.js +18 -18
  18. package/lib/index.d.ts +6 -6
  19. package/lib/index.js +22 -22
  20. package/lib/info-panel/info-panel-generator.d.ts +6 -6
  21. package/lib/info-panel/info-panel-generator.js +52 -52
  22. package/lib/interfaces.d.ts +72 -72
  23. package/lib/interfaces.js +8 -8
  24. package/lib/scripts/test-board.d.ts +1 -1
  25. package/lib/scripts/test-board.js +230 -230
  26. package/lib/scripts/test-showcase.d.ts +1 -1
  27. package/lib/scripts/test-showcase.js +257 -257
  28. package/lib/showcase-frame-generator.d.ts +8 -8
  29. package/lib/showcase-frame-generator.js +44 -44
  30. package/lib/test-data.d.ts +72 -72
  31. package/lib/test-data.js +187 -187
  32. package/lib/util/document-dynamic-text-element-util.d.ts +9 -0
  33. package/lib/util/document-dynamic-text-element-util.js +102 -0
  34. package/lib/util/document-property-util.d.ts +9 -9
  35. package/lib/util/document-property-util.js +101 -101
  36. package/lib/util/document-text-element-util.d.ts +10 -10
  37. package/lib/util/document-text-element-util.js +124 -124
  38. package/lib/util/document-util.d.ts +8 -8
  39. package/lib/util/document-util.js +22 -22
  40. package/lib/util/index.d.ts +2 -2
  41. package/lib/util/index.js +18 -18
  42. package/lib/util/text-util.d.ts +4 -4
  43. package/lib/util/text-util.js +28 -28
  44. package/package.json +2 -2
  45. package/testdocument.json +25972 -25972
@@ -1,72 +1,72 @@
1
- import { DataGroupStructure } from '@contrail/data-grouping';
2
- import { ComponentGridTemplate, DocumentTemplate } from './interfaces';
3
- export declare const TEST_ITEM_MODEL: {
4
- item: {
5
- id: string;
6
- name: string;
7
- optionName: string;
8
- gender: string;
9
- mediumViewableDownloadUrl: string;
10
- };
11
- projectItem: {
12
- id: string;
13
- retailPrice: number;
14
- };
15
- assortmentItem: {
16
- id: string;
17
- targetVolume: number;
18
- };
19
- };
20
- export declare const TEST_GROUP: {
21
- name: string;
22
- data: {
23
- item: {
24
- id: string;
25
- name: string;
26
- optionName: string;
27
- gender: string;
28
- mediumViewableDownloadUrl: string;
29
- };
30
- projectItem: {
31
- id: string;
32
- retailPrice: number;
33
- };
34
- assortmentItem: {
35
- id: string;
36
- targetVolume: number;
37
- };
38
- }[];
39
- propertyValues: {
40
- gender: string;
41
- };
42
- subGroups: any[];
43
- };
44
- export declare const TEST_GROUP_2: {
45
- name: string;
46
- data: {
47
- item: {
48
- id: string;
49
- name: string;
50
- optionName: string;
51
- gender: string;
52
- mediumViewableDownloadUrl: string;
53
- };
54
- projectItem: {
55
- id: string;
56
- retailPrice: number;
57
- };
58
- assortmentItem: {
59
- id: string;
60
- targetVolume: number;
61
- };
62
- }[];
63
- propertyValues: {
64
- gender: string;
65
- };
66
- subGroups: any[];
67
- };
68
- export declare const TEST_ROOT_GROUP: DataGroupStructure;
69
- export declare const TEST_TWO_LEVEL_ROOT_GROUP: DataGroupStructure;
70
- export declare const COMPONENT_GRID_TEMPLATE: ComponentGridTemplate;
71
- export declare const HORIZONTAL_DOCUMENT_TEMPLATE: DocumentTemplate;
72
- export declare const VERTICAL_DOCUMENT_TEMPLATE: DocumentTemplate;
1
+ import { DataGroupStructure } from '@contrail/data-grouping';
2
+ import { ComponentGridTemplate, DocumentTemplate } from './interfaces';
3
+ export declare const TEST_ITEM_MODEL: {
4
+ item: {
5
+ id: string;
6
+ name: string;
7
+ optionName: string;
8
+ gender: string;
9
+ mediumViewableDownloadUrl: string;
10
+ };
11
+ projectItem: {
12
+ id: string;
13
+ retailPrice: number;
14
+ };
15
+ assortmentItem: {
16
+ id: string;
17
+ targetVolume: number;
18
+ };
19
+ };
20
+ export declare const TEST_GROUP: {
21
+ name: string;
22
+ data: {
23
+ item: {
24
+ id: string;
25
+ name: string;
26
+ optionName: string;
27
+ gender: string;
28
+ mediumViewableDownloadUrl: string;
29
+ };
30
+ projectItem: {
31
+ id: string;
32
+ retailPrice: number;
33
+ };
34
+ assortmentItem: {
35
+ id: string;
36
+ targetVolume: number;
37
+ };
38
+ }[];
39
+ propertyValues: {
40
+ gender: string;
41
+ };
42
+ subGroups: any[];
43
+ };
44
+ export declare const TEST_GROUP_2: {
45
+ name: string;
46
+ data: {
47
+ item: {
48
+ id: string;
49
+ name: string;
50
+ optionName: string;
51
+ gender: string;
52
+ mediumViewableDownloadUrl: string;
53
+ };
54
+ projectItem: {
55
+ id: string;
56
+ retailPrice: number;
57
+ };
58
+ assortmentItem: {
59
+ id: string;
60
+ targetVolume: number;
61
+ };
62
+ }[];
63
+ propertyValues: {
64
+ gender: string;
65
+ };
66
+ subGroups: any[];
67
+ };
68
+ export declare const TEST_ROOT_GROUP: DataGroupStructure;
69
+ export declare const TEST_TWO_LEVEL_ROOT_GROUP: DataGroupStructure;
70
+ export declare const COMPONENT_GRID_TEMPLATE: ComponentGridTemplate;
71
+ export declare const HORIZONTAL_DOCUMENT_TEMPLATE: DocumentTemplate;
72
+ export declare const VERTICAL_DOCUMENT_TEMPLATE: DocumentTemplate;
package/lib/test-data.js CHANGED
@@ -1,187 +1,187 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.VERTICAL_DOCUMENT_TEMPLATE = exports.HORIZONTAL_DOCUMENT_TEMPLATE = exports.COMPONENT_GRID_TEMPLATE = exports.TEST_TWO_LEVEL_ROOT_GROUP = exports.TEST_ROOT_GROUP = exports.TEST_GROUP_2 = exports.TEST_GROUP = exports.TEST_ITEM_MODEL = void 0;
4
- const types_1 = require("@contrail/types");
5
- const interfaces_1 = require("./interfaces");
6
- const sdk_1 = require("@contrail/sdk");
7
- exports.TEST_ITEM_MODEL = {
8
- item: {
9
- id: 'item-1001',
10
- name: 'Shirt 1',
11
- optionName: 'Red',
12
- gender: 'mens',
13
- mediumViewableDownloadUrl: 'https://api.vibeiq.com/dev/api/files/downloadUrl/-VMrLJrt3clDKPi0%2Fcontent:m3Bd4u-QLci1XiOl%2F2b72d48a-6b19-4ba8-9d54-813745fb8dd4.png',
14
- },
15
- projectItem: {
16
- id: 'projectItem-1001',
17
- retailPrice: 45.0,
18
- },
19
- assortmentItem: {
20
- id: 'assortmentItem-1001',
21
- targetVolume: 1000,
22
- },
23
- };
24
- exports.TEST_GROUP = {
25
- name: 'Mens',
26
- data: [
27
- exports.TEST_ITEM_MODEL,
28
- exports.TEST_ITEM_MODEL,
29
- exports.TEST_ITEM_MODEL,
30
- exports.TEST_ITEM_MODEL,
31
- exports.TEST_ITEM_MODEL,
32
- exports.TEST_ITEM_MODEL,
33
- exports.TEST_ITEM_MODEL,
34
- exports.TEST_ITEM_MODEL,
35
- exports.TEST_ITEM_MODEL,
36
- exports.TEST_ITEM_MODEL,
37
- ],
38
- propertyValues: {
39
- gender: 'mens',
40
- },
41
- subGroups: [],
42
- };
43
- exports.TEST_GROUP_2 = {
44
- name: 'Womens',
45
- data: [
46
- exports.TEST_ITEM_MODEL,
47
- exports.TEST_ITEM_MODEL,
48
- exports.TEST_ITEM_MODEL,
49
- exports.TEST_ITEM_MODEL,
50
- exports.TEST_ITEM_MODEL,
51
- exports.TEST_ITEM_MODEL,
52
- exports.TEST_ITEM_MODEL,
53
- ],
54
- propertyValues: {
55
- gender: 'womens',
56
- },
57
- subGroups: [],
58
- };
59
- exports.TEST_ROOT_GROUP = {
60
- depth: 1,
61
- groupingProperties: [
62
- {
63
- propertyDefinition: {
64
- slug: 'gender',
65
- propertyType: types_1.PropertyType.SingleSelect,
66
- label: 'Gender',
67
- },
68
- sort: sdk_1.SortOrderOptions.ASC,
69
- typeRootSlug: 'item',
70
- values: null,
71
- },
72
- ],
73
- rootGroup: {
74
- data: [],
75
- subGroups: [exports.TEST_GROUP, exports.TEST_GROUP, exports.TEST_GROUP],
76
- name: 'Root',
77
- propertyValues: {},
78
- },
79
- };
80
- exports.TEST_TWO_LEVEL_ROOT_GROUP = {
81
- depth: 2,
82
- groupingProperties: [
83
- {
84
- propertyDefinition: {
85
- slug: 'gender',
86
- propertyType: types_1.PropertyType.SingleSelect,
87
- label: 'Gender',
88
- },
89
- sort: sdk_1.SortOrderOptions.ASC,
90
- typeRootSlug: 'item',
91
- values: null,
92
- },
93
- ],
94
- rootGroup: {
95
- data: [],
96
- subGroups: [
97
- {
98
- name: 'Mens',
99
- subGroups: [exports.TEST_GROUP, exports.TEST_GROUP],
100
- propertyValues: {
101
- gender: 'mens',
102
- },
103
- data: [],
104
- },
105
- {
106
- name: 'Womens',
107
- subGroups: [exports.TEST_GROUP_2, exports.TEST_GROUP_2, exports.TEST_GROUP_2, exports.TEST_GROUP_2],
108
- propertyValues: {
109
- gender: 'mens',
110
- },
111
- data: [],
112
- },
113
- ],
114
- name: 'Root',
115
- propertyValues: {},
116
- },
117
- };
118
- exports.COMPONENT_GRID_TEMPLATE = {
119
- gridDimensions: { cols: 7, rows: 3 },
120
- componentTemplate: {
121
- propertyTemplate: {
122
- properties: [],
123
- imageLocation: 'top',
124
- },
125
- },
126
- componentPadding: 20,
127
- };
128
- exports.HORIZONTAL_DOCUMENT_TEMPLATE = {
129
- frameOrientation: interfaces_1.Orientation.HORIZONTAL,
130
- frameSize: { width: 1200, height: 675 },
131
- framePadding: 30,
132
- frameHeaderTemplate: {
133
- style: {
134
- color: '#000000',
135
- font: {
136
- size: 20,
137
- },
138
- backgroundColor: '#FFFFFF',
139
- },
140
- size: {
141
- height: 60,
142
- },
143
- },
144
- frameGroupHeaderTemplate: {
145
- style: {
146
- color: '#ffffff',
147
- font: {
148
- size: 20,
149
- },
150
- backgroundColor: 'black',
151
- },
152
- size: {
153
- height: 60,
154
- },
155
- },
156
- componentGridTemplate: exports.COMPONENT_GRID_TEMPLATE,
157
- };
158
- exports.VERTICAL_DOCUMENT_TEMPLATE = {
159
- frameOrientation: interfaces_1.Orientation.VERTICAL,
160
- frameSize: { width: 1200, height: 675 },
161
- framePadding: 30,
162
- frameHeaderTemplate: {
163
- style: {
164
- color: '#000000',
165
- font: {
166
- size: 20,
167
- },
168
- backgroundColor: '#FFFFFF',
169
- },
170
- size: {
171
- height: 60,
172
- },
173
- },
174
- frameGroupHeaderTemplate: {
175
- style: {
176
- color: '#ffffff',
177
- font: {
178
- size: 20,
179
- },
180
- backgroundColor: 'black',
181
- },
182
- size: {
183
- height: 60,
184
- },
185
- },
186
- componentGridTemplate: exports.COMPONENT_GRID_TEMPLATE,
187
- };
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VERTICAL_DOCUMENT_TEMPLATE = exports.HORIZONTAL_DOCUMENT_TEMPLATE = exports.COMPONENT_GRID_TEMPLATE = exports.TEST_TWO_LEVEL_ROOT_GROUP = exports.TEST_ROOT_GROUP = exports.TEST_GROUP_2 = exports.TEST_GROUP = exports.TEST_ITEM_MODEL = void 0;
4
+ const types_1 = require("@contrail/types");
5
+ const interfaces_1 = require("./interfaces");
6
+ const sdk_1 = require("@contrail/sdk");
7
+ exports.TEST_ITEM_MODEL = {
8
+ item: {
9
+ id: 'item-1001',
10
+ name: 'Shirt 1',
11
+ optionName: 'Red',
12
+ gender: 'mens',
13
+ mediumViewableDownloadUrl: 'https://api.vibeiq.com/dev/api/files/downloadUrl/-VMrLJrt3clDKPi0%2Fcontent:m3Bd4u-QLci1XiOl%2F2b72d48a-6b19-4ba8-9d54-813745fb8dd4.png',
14
+ },
15
+ projectItem: {
16
+ id: 'projectItem-1001',
17
+ retailPrice: 45.0,
18
+ },
19
+ assortmentItem: {
20
+ id: 'assortmentItem-1001',
21
+ targetVolume: 1000,
22
+ },
23
+ };
24
+ exports.TEST_GROUP = {
25
+ name: 'Mens',
26
+ data: [
27
+ exports.TEST_ITEM_MODEL,
28
+ exports.TEST_ITEM_MODEL,
29
+ exports.TEST_ITEM_MODEL,
30
+ exports.TEST_ITEM_MODEL,
31
+ exports.TEST_ITEM_MODEL,
32
+ exports.TEST_ITEM_MODEL,
33
+ exports.TEST_ITEM_MODEL,
34
+ exports.TEST_ITEM_MODEL,
35
+ exports.TEST_ITEM_MODEL,
36
+ exports.TEST_ITEM_MODEL,
37
+ ],
38
+ propertyValues: {
39
+ gender: 'mens',
40
+ },
41
+ subGroups: [],
42
+ };
43
+ exports.TEST_GROUP_2 = {
44
+ name: 'Womens',
45
+ data: [
46
+ exports.TEST_ITEM_MODEL,
47
+ exports.TEST_ITEM_MODEL,
48
+ exports.TEST_ITEM_MODEL,
49
+ exports.TEST_ITEM_MODEL,
50
+ exports.TEST_ITEM_MODEL,
51
+ exports.TEST_ITEM_MODEL,
52
+ exports.TEST_ITEM_MODEL,
53
+ ],
54
+ propertyValues: {
55
+ gender: 'womens',
56
+ },
57
+ subGroups: [],
58
+ };
59
+ exports.TEST_ROOT_GROUP = {
60
+ depth: 1,
61
+ groupingProperties: [
62
+ {
63
+ propertyDefinition: {
64
+ slug: 'gender',
65
+ propertyType: types_1.PropertyType.SingleSelect,
66
+ label: 'Gender',
67
+ },
68
+ sort: sdk_1.SortOrderOptions.ASC,
69
+ typeRootSlug: 'item',
70
+ values: null,
71
+ },
72
+ ],
73
+ rootGroup: {
74
+ data: [],
75
+ subGroups: [exports.TEST_GROUP, exports.TEST_GROUP, exports.TEST_GROUP],
76
+ name: 'Root',
77
+ propertyValues: {},
78
+ },
79
+ };
80
+ exports.TEST_TWO_LEVEL_ROOT_GROUP = {
81
+ depth: 2,
82
+ groupingProperties: [
83
+ {
84
+ propertyDefinition: {
85
+ slug: 'gender',
86
+ propertyType: types_1.PropertyType.SingleSelect,
87
+ label: 'Gender',
88
+ },
89
+ sort: sdk_1.SortOrderOptions.ASC,
90
+ typeRootSlug: 'item',
91
+ values: null,
92
+ },
93
+ ],
94
+ rootGroup: {
95
+ data: [],
96
+ subGroups: [
97
+ {
98
+ name: 'Mens',
99
+ subGroups: [exports.TEST_GROUP, exports.TEST_GROUP],
100
+ propertyValues: {
101
+ gender: 'mens',
102
+ },
103
+ data: [],
104
+ },
105
+ {
106
+ name: 'Womens',
107
+ subGroups: [exports.TEST_GROUP_2, exports.TEST_GROUP_2, exports.TEST_GROUP_2, exports.TEST_GROUP_2],
108
+ propertyValues: {
109
+ gender: 'mens',
110
+ },
111
+ data: [],
112
+ },
113
+ ],
114
+ name: 'Root',
115
+ propertyValues: {},
116
+ },
117
+ };
118
+ exports.COMPONENT_GRID_TEMPLATE = {
119
+ gridDimensions: { cols: 7, rows: 3 },
120
+ componentTemplate: {
121
+ propertyTemplate: {
122
+ properties: [],
123
+ imageLocation: 'top',
124
+ },
125
+ },
126
+ componentPadding: 20,
127
+ };
128
+ exports.HORIZONTAL_DOCUMENT_TEMPLATE = {
129
+ frameOrientation: interfaces_1.Orientation.HORIZONTAL,
130
+ frameSize: { width: 1200, height: 675 },
131
+ framePadding: 30,
132
+ frameHeaderTemplate: {
133
+ style: {
134
+ color: '#000000',
135
+ font: {
136
+ size: 20,
137
+ },
138
+ backgroundColor: '#FFFFFF',
139
+ },
140
+ size: {
141
+ height: 60,
142
+ },
143
+ },
144
+ frameGroupHeaderTemplate: {
145
+ style: {
146
+ color: '#ffffff',
147
+ font: {
148
+ size: 20,
149
+ },
150
+ backgroundColor: 'black',
151
+ },
152
+ size: {
153
+ height: 60,
154
+ },
155
+ },
156
+ componentGridTemplate: exports.COMPONENT_GRID_TEMPLATE,
157
+ };
158
+ exports.VERTICAL_DOCUMENT_TEMPLATE = {
159
+ frameOrientation: interfaces_1.Orientation.VERTICAL,
160
+ frameSize: { width: 1200, height: 675 },
161
+ framePadding: 30,
162
+ frameHeaderTemplate: {
163
+ style: {
164
+ color: '#000000',
165
+ font: {
166
+ size: 20,
167
+ },
168
+ backgroundColor: '#FFFFFF',
169
+ },
170
+ size: {
171
+ height: 60,
172
+ },
173
+ },
174
+ frameGroupHeaderTemplate: {
175
+ style: {
176
+ color: '#ffffff',
177
+ font: {
178
+ size: 20,
179
+ },
180
+ backgroundColor: 'black',
181
+ },
182
+ size: {
183
+ height: 60,
184
+ },
185
+ },
186
+ componentGridTemplate: exports.COMPONENT_GRID_TEMPLATE,
187
+ };
@@ -0,0 +1,9 @@
1
+ import { DataGroup } from '@contrail/data-grouping';
2
+ import { DocumentElement } from '@contrail/documents';
3
+ export declare class DocumentDynamicTextElementUtil {
4
+ static typeMap: any;
5
+ static isDynamicText(element: any): any;
6
+ static handleDynamicText(element: DocumentElement, dataGroup: DataGroup): any;
7
+ private static getPropertyValuesForElements;
8
+ private static getTextValueFromFrameMembers;
9
+ }
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DocumentDynamicTextElementUtil = void 0;
4
+ const types_1 = require("@contrail/types");
5
+ const util_1 = require("@contrail/util");
6
+ const document_text_element_util_1 = require("./document-text-element-util");
7
+ const HARD_CODED_PROPS = {
8
+ createdBy: 'Created by',
9
+ updatedBy: 'Updated by',
10
+ count: 'Count',
11
+ };
12
+ class DocumentDynamicTextElementUtil {
13
+ static isDynamicText(element) {
14
+ return element.type === 'text' && element.propertyBindings && element.propertyBindingsMetaData;
15
+ }
16
+ static handleDynamicText(element, dataGroup) {
17
+ var _a;
18
+ const displayFunction = element.propertyBindingsMetaData.displayFunction;
19
+ const displayLabel = element.propertyBindingsMetaData.displayLabel;
20
+ const propertyBindingsText = element.propertyBindings.text;
21
+ let text;
22
+ const entityType = propertyBindingsText.split('.')[0];
23
+ const propertySlug = propertyBindingsText.split('.')[1];
24
+ let property;
25
+ let type;
26
+ if (!['showcase', 'board', 'project'].includes(entityType)) {
27
+ if (entityType === 'frame') {
28
+ if (propertySlug === 'count') {
29
+ text = dataGroup.data.length;
30
+ }
31
+ else {
32
+ text = dataGroup.name;
33
+ }
34
+ }
35
+ else {
36
+ if (dataGroup.data.length === 0) {
37
+ return propertyBindingsText;
38
+ }
39
+ type = this.typeMap[entityType];
40
+ property = type.typeProperties.find(p => p.slug === propertySlug);
41
+ if (displayFunction === "label") {
42
+ text = (property === null || property === void 0 ? void 0 : property.label) || HARD_CODED_PROPS[propertySlug] || `${type.label} name`;
43
+ }
44
+ else {
45
+ let elementValues = this.getPropertyValuesForElements(dataGroup.data, propertyBindingsText);
46
+ text = this.getTextValueFromFrameMembers(displayFunction, elementValues, property);
47
+ }
48
+ }
49
+ if (text === undefined || text === null) {
50
+ text = 'n/a';
51
+ }
52
+ if (displayLabel && displayFunction !== "label") {
53
+ text = `${(property === null || property === void 0 ? void 0 : property.label) || `${type === null || type === void 0 ? void 0 : type.label} name` || HARD_CODED_PROPS[propertySlug]}: ${text}`;
54
+ }
55
+ }
56
+ if (((_a = element.text) === null || _a === void 0 ? void 0 : _a.toString().indexOf('</')) > -1) {
57
+ const styleDefinition = document_text_element_util_1.DocumentTextElementUtil.extractStyleFromInline(element.text);
58
+ text = document_text_element_util_1.DocumentTextElementUtil.applyInLineStyling(text, styleDefinition);
59
+ }
60
+ element.text = text;
61
+ }
62
+ static getPropertyValuesForElements(elements, propertyKey) {
63
+ const values = [];
64
+ elements.forEach(el => {
65
+ const propertyValue = util_1.ObjectUtil.getByPath(el, propertyKey);
66
+ values.push(propertyValue);
67
+ });
68
+ return values;
69
+ }
70
+ static getTextValueFromFrameMembers(displayFunction, elementValues, property) {
71
+ let text;
72
+ const formatter = new types_1.PropertyValueFormatter();
73
+ if (displayFunction === "average") {
74
+ elementValues = elementValues.filter(e => e !== null);
75
+ text = formatter.formatValue(elementValues.reduce((a, b) => a + b, 0) / elementValues.length, property.propertyType);
76
+ }
77
+ else if (displayFunction === "sum") {
78
+ elementValues = elementValues.filter(e => e !== null);
79
+ text = formatter.formatValue(elementValues.reduce((a, b) => a + b, 0), property.propertyType);
80
+ }
81
+ else if (displayFunction === "uniqueArray") {
82
+ text = Array.from(new Set(elementValues.filter(e => e !== null))).join(', ');
83
+ }
84
+ else if (!displayFunction ||
85
+ ["first", "value"].includes(displayFunction)) {
86
+ text = elementValues[0];
87
+ }
88
+ else if (displayFunction === "last") {
89
+ text = elementValues[elementValues.length - 1];
90
+ }
91
+ else if (displayFunction === "min") {
92
+ elementValues = elementValues.filter(e => e !== null);
93
+ text = formatter.formatValue(Math.min(...elementValues), property.propertyType);
94
+ }
95
+ else if (displayFunction === "max") {
96
+ elementValues = elementValues.filter(e => e !== null);
97
+ text = formatter.formatValue(Math.max(...elementValues), property.propertyType);
98
+ }
99
+ return text;
100
+ }
101
+ }
102
+ exports.DocumentDynamicTextElementUtil = DocumentDynamicTextElementUtil;
@@ -1,9 +1,9 @@
1
- import { DocumentPropertyDefinition } from '../interfaces';
2
- import { DocumentElement, PositionDefinition, SizeDefinition } from '@contrail/documents';
3
- import { PropertyValueFormatter } from '@contrail/types';
4
- export declare class DocumentPropertyUtil {
5
- static generatePropertyElements(data: any, properties: Array<DocumentPropertyDefinition>, options: DocumentElement, startingPosition: PositionDefinition, imageDimension: SizeDefinition, isComponent?: boolean): Array<DocumentElement>;
6
- static generatePropertyTextElement(model: any, property: DocumentPropertyDefinition, options: DocumentElement, formatter: PropertyValueFormatter, position: PositionDefinition, isComponent?: boolean): DocumentElement;
7
- static generatePropertyAnnotationElement(data: any, property: DocumentPropertyDefinition, size: SizeDefinition, position: PositionDefinition): DocumentElement;
8
- static generatePropertyImageElement(data: any, property: DocumentPropertyDefinition, imageDimension: SizeDefinition, position: PositionDefinition): DocumentElement;
9
- }
1
+ import { DocumentPropertyDefinition } from '../interfaces';
2
+ import { DocumentElement, PositionDefinition, SizeDefinition } from '@contrail/documents';
3
+ import { PropertyValueFormatter } from '@contrail/types';
4
+ export declare class DocumentPropertyUtil {
5
+ static generatePropertyElements(data: any, properties: Array<DocumentPropertyDefinition>, options: DocumentElement, startingPosition: PositionDefinition, imageDimension: SizeDefinition, isComponent?: boolean): Array<DocumentElement>;
6
+ static generatePropertyTextElement(model: any, property: DocumentPropertyDefinition, options: DocumentElement, formatter: PropertyValueFormatter, position: PositionDefinition, isComponent?: boolean): DocumentElement;
7
+ static generatePropertyAnnotationElement(data: any, property: DocumentPropertyDefinition, size: SizeDefinition, position: PositionDefinition): DocumentElement;
8
+ static generatePropertyImageElement(data: any, property: DocumentPropertyDefinition, imageDimension: SizeDefinition, position: PositionDefinition): DocumentElement;
9
+ }