@contrail/document-generation 2.0.28 → 2.0.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/lib/board-document-generator.d.ts +23 -23
- package/lib/board-document-generator.js +206 -206
- package/lib/components/component-generator.d.ts +6 -6
- package/lib/components/component-generator.js +57 -52
- package/lib/components/component-grid-generator.d.ts +7 -7
- package/lib/components/component-grid-generator.js +80 -80
- package/lib/components/component-util.d.ts +5 -5
- package/lib/components/component-util.js +43 -43
- package/lib/document-generator.d.ts +6 -6
- package/lib/document-generator.js +12 -12
- package/lib/frames/frame-generator.d.ts +12 -12
- package/lib/frames/frame-generator.js +128 -128
- package/lib/frames/frame.d.ts +16 -16
- package/lib/frames/frame.js +67 -67
- package/lib/frames/index.d.ts +2 -2
- package/lib/frames/index.js +18 -18
- package/lib/index.d.ts +6 -6
- package/lib/index.js +22 -22
- package/lib/info-panel/info-panel-generator.d.ts +6 -6
- package/lib/info-panel/info-panel-generator.js +52 -52
- package/lib/interfaces.d.ts +72 -72
- package/lib/interfaces.js +8 -8
- package/lib/scripts/test-board.d.ts +1 -1
- package/lib/scripts/test-board.js +219 -219
- package/lib/scripts/test-showcase.d.ts +1 -1
- package/lib/scripts/test-showcase.js +243 -243
- package/lib/showcase-frame-generator.d.ts +8 -8
- package/lib/showcase-frame-generator.js +45 -45
- package/lib/test-data.d.ts +72 -72
- package/lib/test-data.js +176 -176
- package/lib/util/document-property-util.d.ts +9 -9
- package/lib/util/document-property-util.js +96 -96
- package/lib/util/document-text-element-util.d.ts +10 -10
- package/lib/util/document-text-element-util.js +124 -124
- package/lib/util/document-util.d.ts +8 -8
- package/lib/util/document-util.js +24 -24
- package/lib/util/index.d.ts +2 -2
- package/lib/util/index.js +18 -18
- package/lib/util/text-util.d.ts +4 -4
- package/lib/util/text-util.js +28 -28
- package/package.json +50 -50
|
@@ -1,80 +1,80 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ComponentGridGenerator = void 0;
|
|
4
|
-
const util_1 = require("@contrail/util");
|
|
5
|
-
const component_generator_1 = require("./component-generator");
|
|
6
|
-
const component_util_1 = require("./component-util");
|
|
7
|
-
class ComponentGridGenerator {
|
|
8
|
-
static generateComponentGrid(data, startingPosition = { x: 0, y: 0 }, template, idealSize) {
|
|
9
|
-
if (!data) {
|
|
10
|
-
console.warn("WARN: data null in generateComponentGrid");
|
|
11
|
-
return [];
|
|
12
|
-
}
|
|
13
|
-
if (!template) {
|
|
14
|
-
console.warn("WARN: template null in generateComponentGrid");
|
|
15
|
-
return [];
|
|
16
|
-
}
|
|
17
|
-
if (!template.componentTemplate) {
|
|
18
|
-
console.warn("WARN: component template is null generateComponentGrid");
|
|
19
|
-
return [];
|
|
20
|
-
}
|
|
21
|
-
const elements = [];
|
|
22
|
-
let dataIndex = 0;
|
|
23
|
-
let gridTemplate = template;
|
|
24
|
-
const optimizeTemplate = true;
|
|
25
|
-
if (optimizeTemplate) {
|
|
26
|
-
gridTemplate = this.adjustComponentTemplate(data, idealSize, template);
|
|
27
|
-
}
|
|
28
|
-
const componentTemplate = gridTemplate.componentTemplate;
|
|
29
|
-
const componentPosition = util_1.ObjectUtil.cloneDeep(startingPosition);
|
|
30
|
-
const componentSize = this.getComponentSize(data, gridTemplate);
|
|
31
|
-
const componentPadding = gridTemplate.componentPadding || 20;
|
|
32
|
-
componentPosition.x += componentPadding;
|
|
33
|
-
componentPosition.y += componentPadding;
|
|
34
|
-
for (let row = 0; row < gridTemplate.gridDimensions.rows; row++) {
|
|
35
|
-
for (let col = 0; col < gridTemplate.gridDimensions.cols; col++) {
|
|
36
|
-
if (dataIndex >= data.length) {
|
|
37
|
-
continue;
|
|
38
|
-
}
|
|
39
|
-
let dataObj = data[dataIndex];
|
|
40
|
-
dataObj.viewable = dataObj.item;
|
|
41
|
-
const position = util_1.ObjectUtil.cloneDeep(componentPosition);
|
|
42
|
-
let component = component_generator_1.ComponentGenerator.generateComponent(dataObj, { position }, componentTemplate);
|
|
43
|
-
elements.push(component);
|
|
44
|
-
dataIndex++;
|
|
45
|
-
componentPosition.x += componentSize.width + (componentPadding * 2);
|
|
46
|
-
}
|
|
47
|
-
componentPosition.y += componentSize.height + (componentPadding * 2);
|
|
48
|
-
componentPosition.x = startingPosition.x + componentPadding;
|
|
49
|
-
}
|
|
50
|
-
return elements;
|
|
51
|
-
}
|
|
52
|
-
static getComponentSize(data, template) {
|
|
53
|
-
if (!(data === null || data === void 0 ? void 0 : data.length)) {
|
|
54
|
-
return null;
|
|
55
|
-
}
|
|
56
|
-
const firstData = data[0];
|
|
57
|
-
const element = component_generator_1.ComponentGenerator.generateComponent(firstData, {}, template.componentTemplate);
|
|
58
|
-
return component_util_1.ComponentUtil.getComponentSize(element);
|
|
59
|
-
}
|
|
60
|
-
static adjustComponentTemplate(data, idealSize, template) {
|
|
61
|
-
const componentSize = this.getComponentSize(data, template);
|
|
62
|
-
const adjustedTemplate = util_1.ObjectUtil.cloneDeep(template);
|
|
63
|
-
const horizontalPadding = ((template.gridDimensions.cols * 2) * template.componentPadding || 20);
|
|
64
|
-
const verticalPadding = ((template.gridDimensions.rows * 2) * template.componentPadding || 20);
|
|
65
|
-
const requiredSize = {
|
|
66
|
-
width: componentSize.width * template.gridDimensions.cols + horizontalPadding,
|
|
67
|
-
height: componentSize.height * template.gridDimensions.rows + verticalPadding,
|
|
68
|
-
};
|
|
69
|
-
const requiredHeightAdjustment = (idealSize.height - requiredSize.height) / template.gridDimensions.rows;
|
|
70
|
-
const requiredWidthAdjustment = (idealSize.width - requiredSize.width) / template.gridDimensions.cols;
|
|
71
|
-
if (requiredHeightAdjustment < 0 && requiredHeightAdjustment < requiredWidthAdjustment) {
|
|
72
|
-
adjustedTemplate.componentTemplate.propertyTemplate.imageDimension.width += requiredHeightAdjustment;
|
|
73
|
-
}
|
|
74
|
-
if (requiredWidthAdjustment < 0 && requiredWidthAdjustment < requiredHeightAdjustment) {
|
|
75
|
-
adjustedTemplate.componentTemplate.propertyTemplate.imageDimension.width += requiredWidthAdjustment;
|
|
76
|
-
}
|
|
77
|
-
return adjustedTemplate;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
exports.ComponentGridGenerator = ComponentGridGenerator;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ComponentGridGenerator = void 0;
|
|
4
|
+
const util_1 = require("@contrail/util");
|
|
5
|
+
const component_generator_1 = require("./component-generator");
|
|
6
|
+
const component_util_1 = require("./component-util");
|
|
7
|
+
class ComponentGridGenerator {
|
|
8
|
+
static generateComponentGrid(data, startingPosition = { x: 0, y: 0 }, template, idealSize) {
|
|
9
|
+
if (!data) {
|
|
10
|
+
console.warn("WARN: data null in generateComponentGrid");
|
|
11
|
+
return [];
|
|
12
|
+
}
|
|
13
|
+
if (!template) {
|
|
14
|
+
console.warn("WARN: template null in generateComponentGrid");
|
|
15
|
+
return [];
|
|
16
|
+
}
|
|
17
|
+
if (!template.componentTemplate) {
|
|
18
|
+
console.warn("WARN: component template is null generateComponentGrid");
|
|
19
|
+
return [];
|
|
20
|
+
}
|
|
21
|
+
const elements = [];
|
|
22
|
+
let dataIndex = 0;
|
|
23
|
+
let gridTemplate = template;
|
|
24
|
+
const optimizeTemplate = true;
|
|
25
|
+
if (optimizeTemplate) {
|
|
26
|
+
gridTemplate = this.adjustComponentTemplate(data, idealSize, template);
|
|
27
|
+
}
|
|
28
|
+
const componentTemplate = gridTemplate.componentTemplate;
|
|
29
|
+
const componentPosition = util_1.ObjectUtil.cloneDeep(startingPosition);
|
|
30
|
+
const componentSize = this.getComponentSize(data, gridTemplate);
|
|
31
|
+
const componentPadding = gridTemplate.componentPadding || 20;
|
|
32
|
+
componentPosition.x += componentPadding;
|
|
33
|
+
componentPosition.y += componentPadding;
|
|
34
|
+
for (let row = 0; row < gridTemplate.gridDimensions.rows; row++) {
|
|
35
|
+
for (let col = 0; col < gridTemplate.gridDimensions.cols; col++) {
|
|
36
|
+
if (dataIndex >= data.length) {
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
let dataObj = data[dataIndex];
|
|
40
|
+
dataObj.viewable = dataObj.item;
|
|
41
|
+
const position = util_1.ObjectUtil.cloneDeep(componentPosition);
|
|
42
|
+
let component = component_generator_1.ComponentGenerator.generateComponent(dataObj, { position }, componentTemplate);
|
|
43
|
+
elements.push(component);
|
|
44
|
+
dataIndex++;
|
|
45
|
+
componentPosition.x += componentSize.width + (componentPadding * 2);
|
|
46
|
+
}
|
|
47
|
+
componentPosition.y += componentSize.height + (componentPadding * 2);
|
|
48
|
+
componentPosition.x = startingPosition.x + componentPadding;
|
|
49
|
+
}
|
|
50
|
+
return elements;
|
|
51
|
+
}
|
|
52
|
+
static getComponentSize(data, template) {
|
|
53
|
+
if (!(data === null || data === void 0 ? void 0 : data.length)) {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
const firstData = data[0];
|
|
57
|
+
const element = component_generator_1.ComponentGenerator.generateComponent(firstData, {}, template.componentTemplate);
|
|
58
|
+
return component_util_1.ComponentUtil.getComponentSize(element);
|
|
59
|
+
}
|
|
60
|
+
static adjustComponentTemplate(data, idealSize, template) {
|
|
61
|
+
const componentSize = this.getComponentSize(data, template);
|
|
62
|
+
const adjustedTemplate = util_1.ObjectUtil.cloneDeep(template);
|
|
63
|
+
const horizontalPadding = ((template.gridDimensions.cols * 2) * template.componentPadding || 20);
|
|
64
|
+
const verticalPadding = ((template.gridDimensions.rows * 2) * template.componentPadding || 20);
|
|
65
|
+
const requiredSize = {
|
|
66
|
+
width: componentSize.width * template.gridDimensions.cols + horizontalPadding,
|
|
67
|
+
height: componentSize.height * template.gridDimensions.rows + verticalPadding,
|
|
68
|
+
};
|
|
69
|
+
const requiredHeightAdjustment = (idealSize.height - requiredSize.height) / template.gridDimensions.rows;
|
|
70
|
+
const requiredWidthAdjustment = (idealSize.width - requiredSize.width) / template.gridDimensions.cols;
|
|
71
|
+
if (requiredHeightAdjustment < 0 && requiredHeightAdjustment < requiredWidthAdjustment) {
|
|
72
|
+
adjustedTemplate.componentTemplate.propertyTemplate.imageDimension.width += requiredHeightAdjustment;
|
|
73
|
+
}
|
|
74
|
+
if (requiredWidthAdjustment < 0 && requiredWidthAdjustment < requiredHeightAdjustment) {
|
|
75
|
+
adjustedTemplate.componentTemplate.propertyTemplate.imageDimension.width += requiredWidthAdjustment;
|
|
76
|
+
}
|
|
77
|
+
return adjustedTemplate;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
exports.ComponentGridGenerator = ComponentGridGenerator;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { DocumentElement, SizeDefinition } from "@contrail/documents";
|
|
2
|
-
export declare class ComponentUtil {
|
|
3
|
-
static generatedModelBindings(data: any): any;
|
|
4
|
-
static getComponentSize(element: DocumentElement): SizeDefinition;
|
|
5
|
-
}
|
|
1
|
+
import { DocumentElement, SizeDefinition } from "@contrail/documents";
|
|
2
|
+
export declare class ComponentUtil {
|
|
3
|
+
static generatedModelBindings(data: any): any;
|
|
4
|
+
static getComponentSize(element: DocumentElement): SizeDefinition;
|
|
5
|
+
}
|
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ComponentUtil = void 0;
|
|
4
|
-
class ComponentUtil {
|
|
5
|
-
static generatedModelBindings(data) {
|
|
6
|
-
const model = {};
|
|
7
|
-
if (data.item) {
|
|
8
|
-
model.item = `item:${data.item.id}`;
|
|
9
|
-
model.viewable = `item:${data.item.id}`;
|
|
10
|
-
}
|
|
11
|
-
if (data.projectItem) {
|
|
12
|
-
model.projectItem = `project-item:${data.projectItem.id}`;
|
|
13
|
-
}
|
|
14
|
-
if (data.assortmentItem) {
|
|
15
|
-
model.assortmentItem = `assortment-item:${data.assortmentItem.id}`;
|
|
16
|
-
}
|
|
17
|
-
if (data.assortment) {
|
|
18
|
-
model.assortment = `assortment:${data.assortment.id}`;
|
|
19
|
-
}
|
|
20
|
-
return model;
|
|
21
|
-
}
|
|
22
|
-
static getComponentSize(element) {
|
|
23
|
-
var _a, _b, _c, _d, _e;
|
|
24
|
-
const sizeDefinition = {
|
|
25
|
-
width: 0,
|
|
26
|
-
height: 0,
|
|
27
|
-
};
|
|
28
|
-
const imageElement = ((_a = element.elements) === null || _a === void 0 ? void 0 : _a.find(el => el.type === 'image')) || {};
|
|
29
|
-
sizeDefinition.width = (_b = imageElement.size) === null || _b === void 0 ? void 0 : _b.width;
|
|
30
|
-
const LINE_PADDING = 8;
|
|
31
|
-
const textElements = (_c = element.elements) === null || _c === void 0 ? void 0 : _c.filter(el => el.type === 'text');
|
|
32
|
-
let textHeight = 0;
|
|
33
|
-
textElements.forEach(el => {
|
|
34
|
-
var _a, _b;
|
|
35
|
-
let fontSize = ((_b = (_a = el.style) === null || _a === void 0 ? void 0 : _a.font) === null || _b === void 0 ? void 0 : _b.size) || 12;
|
|
36
|
-
textHeight += fontSize + LINE_PADDING;
|
|
37
|
-
});
|
|
38
|
-
const imageHeight = (((_d = imageElement.size) === null || _d === void 0 ? void 0 : _d.height) || ((_e = imageElement.size) === null || _e === void 0 ? void 0 : _e.width) || 150);
|
|
39
|
-
sizeDefinition.height = imageHeight + textHeight;
|
|
40
|
-
return sizeDefinition;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
exports.ComponentUtil = ComponentUtil;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ComponentUtil = void 0;
|
|
4
|
+
class ComponentUtil {
|
|
5
|
+
static generatedModelBindings(data) {
|
|
6
|
+
const model = {};
|
|
7
|
+
if (data.item) {
|
|
8
|
+
model.item = `item:${data.item.id}`;
|
|
9
|
+
model.viewable = `item:${data.item.id}`;
|
|
10
|
+
}
|
|
11
|
+
if (data.projectItem) {
|
|
12
|
+
model.projectItem = `project-item:${data.projectItem.id}`;
|
|
13
|
+
}
|
|
14
|
+
if (data.assortmentItem) {
|
|
15
|
+
model.assortmentItem = `assortment-item:${data.assortmentItem.id}`;
|
|
16
|
+
}
|
|
17
|
+
if (data.assortment) {
|
|
18
|
+
model.assortment = `assortment:${data.assortment.id}`;
|
|
19
|
+
}
|
|
20
|
+
return model;
|
|
21
|
+
}
|
|
22
|
+
static getComponentSize(element) {
|
|
23
|
+
var _a, _b, _c, _d, _e;
|
|
24
|
+
const sizeDefinition = {
|
|
25
|
+
width: 0,
|
|
26
|
+
height: 0,
|
|
27
|
+
};
|
|
28
|
+
const imageElement = ((_a = element.elements) === null || _a === void 0 ? void 0 : _a.find(el => el.type === 'image')) || {};
|
|
29
|
+
sizeDefinition.width = (_b = imageElement.size) === null || _b === void 0 ? void 0 : _b.width;
|
|
30
|
+
const LINE_PADDING = 8;
|
|
31
|
+
const textElements = (_c = element.elements) === null || _c === void 0 ? void 0 : _c.filter(el => el.type === 'text');
|
|
32
|
+
let textHeight = 0;
|
|
33
|
+
textElements.forEach(el => {
|
|
34
|
+
var _a, _b;
|
|
35
|
+
let fontSize = ((_b = (_a = el.style) === null || _a === void 0 ? void 0 : _a.font) === null || _b === void 0 ? void 0 : _b.size) || 12;
|
|
36
|
+
textHeight += fontSize + LINE_PADDING;
|
|
37
|
+
});
|
|
38
|
+
const imageHeight = (((_d = imageElement.size) === null || _d === void 0 ? void 0 : _d.height) || ((_e = imageElement.size) === null || _e === void 0 ? void 0 : _e.width) || 150);
|
|
39
|
+
sizeDefinition.height = imageHeight + textHeight;
|
|
40
|
+
return sizeDefinition;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.ComponentUtil = ComponentUtil;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { DocumentElement } from "@contrail/documents";
|
|
2
|
-
import { DocumentGenerationOptions } from "./interfaces";
|
|
3
|
-
export declare class DocumentGenerator {
|
|
4
|
-
constructor();
|
|
5
|
-
static generateDocumentElements(options: DocumentGenerationOptions): Array<DocumentElement>;
|
|
6
|
-
}
|
|
1
|
+
import { DocumentElement } from "@contrail/documents";
|
|
2
|
+
import { DocumentGenerationOptions } from "./interfaces";
|
|
3
|
+
export declare class DocumentGenerator {
|
|
4
|
+
constructor();
|
|
5
|
+
static generateDocumentElements(options: DocumentGenerationOptions): Array<DocumentElement>;
|
|
6
|
+
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DocumentGenerator = void 0;
|
|
4
|
-
const board_document_generator_1 = require("./board-document-generator");
|
|
5
|
-
class DocumentGenerator {
|
|
6
|
-
constructor() {
|
|
7
|
-
}
|
|
8
|
-
static generateDocumentElements(options) {
|
|
9
|
-
return board_document_generator_1.BoardDocumentGenerator.generateDocumentElements(options);
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
exports.DocumentGenerator = DocumentGenerator;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DocumentGenerator = void 0;
|
|
4
|
+
const board_document_generator_1 = require("./board-document-generator");
|
|
5
|
+
class DocumentGenerator {
|
|
6
|
+
constructor() {
|
|
7
|
+
}
|
|
8
|
+
static generateDocumentElements(options) {
|
|
9
|
+
return board_document_generator_1.BoardDocumentGenerator.generateDocumentElements(options);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.DocumentGenerator = DocumentGenerator;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { DocumentElement, PositionDefinition, SizeDefinition } from "@contrail/documents";
|
|
2
|
-
import { DataGroup } from "@contrail/data-grouping";
|
|
3
|
-
import { DocumentTemplate, FrameDocumentTemplate } from "../interfaces";
|
|
4
|
-
import { DocumentFrame } from "./frame";
|
|
5
|
-
export declare class FrameGenerator {
|
|
6
|
-
static generateBoardFrameForDataGroup(dataGroup: DataGroup, framePosition: PositionDefinition, template: DocumentTemplate, frameTemplate: FrameDocumentTemplate, frameTitle: string): DocumentFrame;
|
|
7
|
-
static generateFrameContentForGroup(frame: DocumentFrame, dataGroup: DataGroup, template: DocumentTemplate, frameTemplate?: FrameDocumentTemplate, frameTitle?: string): DocumentFrame;
|
|
8
|
-
static generateFrameHeaderForDataGroup(dataGroup: DataGroup, position: PositionDefinition, template: DocumentTemplate, headerSize: SizeDefinition, frameTitle?: string): DocumentElement[];
|
|
9
|
-
static generateFrameInfoPanelForDataGroup(dataGroup: DataGroup, position: PositionDefinition, template: DocumentTemplate, panelSize: SizeDefinition): DocumentElement[];
|
|
10
|
-
static generateFrame(options: DocumentElement): DocumentElement;
|
|
11
|
-
static generateFrameTemplateElements(frameTemplate: FrameDocumentTemplate, dataGroup: DataGroup): DocumentElement[];
|
|
12
|
-
}
|
|
1
|
+
import { DocumentElement, PositionDefinition, SizeDefinition } from "@contrail/documents";
|
|
2
|
+
import { DataGroup } from "@contrail/data-grouping";
|
|
3
|
+
import { DocumentTemplate, FrameDocumentTemplate } from "../interfaces";
|
|
4
|
+
import { DocumentFrame } from "./frame";
|
|
5
|
+
export declare class FrameGenerator {
|
|
6
|
+
static generateBoardFrameForDataGroup(dataGroup: DataGroup, framePosition: PositionDefinition, template: DocumentTemplate, frameTemplate: FrameDocumentTemplate, frameTitle: string): DocumentFrame;
|
|
7
|
+
static generateFrameContentForGroup(frame: DocumentFrame, dataGroup: DataGroup, template: DocumentTemplate, frameTemplate?: FrameDocumentTemplate, frameTitle?: string): DocumentFrame;
|
|
8
|
+
static generateFrameHeaderForDataGroup(dataGroup: DataGroup, position: PositionDefinition, template: DocumentTemplate, headerSize: SizeDefinition, frameTitle?: string): DocumentElement[];
|
|
9
|
+
static generateFrameInfoPanelForDataGroup(dataGroup: DataGroup, position: PositionDefinition, template: DocumentTemplate, panelSize: SizeDefinition): DocumentElement[];
|
|
10
|
+
static generateFrame(options: DocumentElement): DocumentElement;
|
|
11
|
+
static generateFrameTemplateElements(frameTemplate: FrameDocumentTemplate, dataGroup: DataGroup): DocumentElement[];
|
|
12
|
+
}
|
|
@@ -1,128 +1,128 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FrameGenerator = void 0;
|
|
4
|
-
const documents_1 = require("@contrail/documents");
|
|
5
|
-
const component_grid_generator_1 = require("../components/component-grid-generator");
|
|
6
|
-
const util_1 = require("@contrail/util");
|
|
7
|
-
const document_util_1 = require("../util/document-util");
|
|
8
|
-
const info_panel_generator_1 = require("../info-panel/info-panel-generator");
|
|
9
|
-
const frame_1 = require("./frame");
|
|
10
|
-
class FrameGenerator {
|
|
11
|
-
static generateBoardFrameForDataGroup(dataGroup, framePosition, template, frameTemplate, frameTitle) {
|
|
12
|
-
let style = { backgroundColor: "#fff", border: { width: 1, color: "#616161" } };
|
|
13
|
-
let frameSize = template.frameSize;
|
|
14
|
-
let clipContent = false;
|
|
15
|
-
if (frameTemplate) {
|
|
16
|
-
if (frameTemplate.document.style) {
|
|
17
|
-
style = frameTemplate.document.style;
|
|
18
|
-
}
|
|
19
|
-
frameSize = frameTemplate.document.size;
|
|
20
|
-
if (frameTemplate.document.clipContent) {
|
|
21
|
-
clipContent = frameTemplate.document.clipContent;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
let frame = new frame_1.BoardFrame((frameTitle || dataGroup.name), util_1.ObjectUtil.cloneDeep(framePosition), frameSize, style, clipContent);
|
|
25
|
-
frame = this.generateFrameContentForGroup(frame, dataGroup, template, frameTemplate, frameTitle);
|
|
26
|
-
return frame;
|
|
27
|
-
}
|
|
28
|
-
static generateFrameContentForGroup(frame, dataGroup, template, frameTemplate = null, frameTitle = null) {
|
|
29
|
-
var _a, _b;
|
|
30
|
-
const FRAME_PADDING = 20;
|
|
31
|
-
const headerPosition = {
|
|
32
|
-
x: FRAME_PADDING,
|
|
33
|
-
y: FRAME_PADDING
|
|
34
|
-
};
|
|
35
|
-
const panelPosition = {
|
|
36
|
-
x: FRAME_PADDING,
|
|
37
|
-
y: FRAME_PADDING
|
|
38
|
-
};
|
|
39
|
-
let frameHeaderDimensions = { height: 0, width: 0 };
|
|
40
|
-
let framePanelDimensions = { height: 0, width: 0 };
|
|
41
|
-
let hasPanel = false;
|
|
42
|
-
let hasHeader = false;
|
|
43
|
-
if (frameTemplate) {
|
|
44
|
-
const elements = this.generateFrameTemplateElements(frameTemplate, dataGroup);
|
|
45
|
-
frame.addDocumentElements(elements);
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
if (template.frameHeaderTemplate) {
|
|
49
|
-
hasHeader = true;
|
|
50
|
-
frameHeaderDimensions = { height: 50, width: template.frameSize.width - 50 };
|
|
51
|
-
const headerElements = this.generateFrameHeaderForDataGroup(dataGroup, headerPosition, template, frameHeaderDimensions, frameTitle);
|
|
52
|
-
frame.addDocumentElements(headerElements);
|
|
53
|
-
}
|
|
54
|
-
if (template.frameInfoPanelTemplate) {
|
|
55
|
-
hasPanel = true;
|
|
56
|
-
framePanelDimensions = { width: ((_b = (_a = template.frameInfoPanelTemplate.panelDocumentTemplate) === null || _a === void 0 ? void 0 : _a.size) === null || _b === void 0 ? void 0 : _b.width) || 300 };
|
|
57
|
-
framePanelDimensions.height = template.frameSize.height - (2 * FRAME_PADDING);
|
|
58
|
-
const panelElements = this.generateFrameInfoPanelForDataGroup(dataGroup, panelPosition, template, framePanelDimensions);
|
|
59
|
-
frame.addDocumentElements(panelElements);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
const GRID_MARGIN = 20;
|
|
63
|
-
let gridPosition = { x: 0, y: 0 };
|
|
64
|
-
let idealGridSize = { width: 0, height: 0 };
|
|
65
|
-
if (frameTemplate) {
|
|
66
|
-
gridPosition = frameTemplate.gridSpaceDefinition.position;
|
|
67
|
-
idealGridSize = frameTemplate.gridSpaceDefinition.size;
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
if (hasHeader) {
|
|
71
|
-
gridPosition = util_1.ObjectUtil.cloneDeep(headerPosition);
|
|
72
|
-
gridPosition.y = gridPosition.y + frameHeaderDimensions.height + GRID_MARGIN;
|
|
73
|
-
}
|
|
74
|
-
if (hasPanel) {
|
|
75
|
-
gridPosition = util_1.ObjectUtil.cloneDeep(panelPosition);
|
|
76
|
-
gridPosition.x = gridPosition.x + framePanelDimensions.width + GRID_MARGIN;
|
|
77
|
-
}
|
|
78
|
-
const frameSize = template.frameSize;
|
|
79
|
-
idealGridSize = {
|
|
80
|
-
width: frameSize.width - gridPosition.x - FRAME_PADDING,
|
|
81
|
-
height: frameSize.height - gridPosition.y - FRAME_PADDING
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
const gridElements = component_grid_generator_1.ComponentGridGenerator.generateComponentGrid(dataGroup.data, gridPosition, template.componentGridTemplate, idealGridSize);
|
|
85
|
-
frame.addDocumentElements(gridElements);
|
|
86
|
-
return frame;
|
|
87
|
-
}
|
|
88
|
-
static generateFrameHeaderForDataGroup(dataGroup, position, template, headerSize, frameTitle = null) {
|
|
89
|
-
const heading = documents_1.DocumentElementFactory.createTextElement(dataGroup.name, template.frameHeaderTemplate);
|
|
90
|
-
heading.style = { border: { width: 1, color: "rgba(0,0,0,0)" }, color: "#000000", backgroundColor: template.frameHeaderTemplate.style.backgroundColor || 'black' };
|
|
91
|
-
heading.text = `<p><span style=\"font-size: ${template.frameHeaderTemplate.style.font.size}pt;\"><strong><span style=\"color: ${template.frameHeaderTemplate.style.color};\">${document_util_1.DocumentUtil.sanitizeHTML(frameTitle || dataGroup.name)}</span></strong></span></p>`;
|
|
92
|
-
heading.size = util_1.ObjectUtil.cloneDeep(headerSize);
|
|
93
|
-
heading.position = util_1.ObjectUtil.cloneDeep(position);
|
|
94
|
-
return [heading];
|
|
95
|
-
}
|
|
96
|
-
static generateFrameInfoPanelForDataGroup(dataGroup, position, template, panelSize) {
|
|
97
|
-
return info_panel_generator_1.InfoPanelGenerator.generatePanelFromTemplate(dataGroup.propertyValues, template.frameInfoPanelTemplate, position, panelSize);
|
|
98
|
-
}
|
|
99
|
-
static generateFrame(options) {
|
|
100
|
-
const frame = documents_1.DocumentElementFactory.createFrameElement(options);
|
|
101
|
-
return frame;
|
|
102
|
-
}
|
|
103
|
-
static generateFrameTemplateElements(frameTemplate, dataGroup) {
|
|
104
|
-
const templateElements = util_1.ObjectUtil.cloneDeep(frameTemplate.document.elements);
|
|
105
|
-
const elementMapping = {};
|
|
106
|
-
const createdElements = [];
|
|
107
|
-
for (let element of templateElements) {
|
|
108
|
-
const origElementId = util_1.ObjectUtil.cloneDeep(element.id);
|
|
109
|
-
delete element.id;
|
|
110
|
-
delete element.updatedOn;
|
|
111
|
-
delete element.updatedById;
|
|
112
|
-
delete element.createdOn;
|
|
113
|
-
delete element.createdById;
|
|
114
|
-
const documentElement = documents_1.DocumentElementFactory.createElement(element.type, element);
|
|
115
|
-
elementMapping[origElementId] = documentElement.id;
|
|
116
|
-
if (documentElement.type === 'text') {
|
|
117
|
-
documentElement.text = documentElement.text.replace('{{dataGroup.name}}', dataGroup.name);
|
|
118
|
-
}
|
|
119
|
-
if (documentElement.elementIds) {
|
|
120
|
-
documentElement.elementIds = [elementMapping[documentElement.elementIds[0]]];
|
|
121
|
-
}
|
|
122
|
-
createdElements.push(documentElement);
|
|
123
|
-
}
|
|
124
|
-
;
|
|
125
|
-
return createdElements;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
exports.FrameGenerator = FrameGenerator;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FrameGenerator = void 0;
|
|
4
|
+
const documents_1 = require("@contrail/documents");
|
|
5
|
+
const component_grid_generator_1 = require("../components/component-grid-generator");
|
|
6
|
+
const util_1 = require("@contrail/util");
|
|
7
|
+
const document_util_1 = require("../util/document-util");
|
|
8
|
+
const info_panel_generator_1 = require("../info-panel/info-panel-generator");
|
|
9
|
+
const frame_1 = require("./frame");
|
|
10
|
+
class FrameGenerator {
|
|
11
|
+
static generateBoardFrameForDataGroup(dataGroup, framePosition, template, frameTemplate, frameTitle) {
|
|
12
|
+
let style = { backgroundColor: "#fff", border: { width: 1, color: "#616161" } };
|
|
13
|
+
let frameSize = template.frameSize;
|
|
14
|
+
let clipContent = false;
|
|
15
|
+
if (frameTemplate) {
|
|
16
|
+
if (frameTemplate.document.style) {
|
|
17
|
+
style = frameTemplate.document.style;
|
|
18
|
+
}
|
|
19
|
+
frameSize = frameTemplate.document.size;
|
|
20
|
+
if (frameTemplate.document.clipContent) {
|
|
21
|
+
clipContent = frameTemplate.document.clipContent;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
let frame = new frame_1.BoardFrame((frameTitle || dataGroup.name), util_1.ObjectUtil.cloneDeep(framePosition), frameSize, style, clipContent);
|
|
25
|
+
frame = this.generateFrameContentForGroup(frame, dataGroup, template, frameTemplate, frameTitle);
|
|
26
|
+
return frame;
|
|
27
|
+
}
|
|
28
|
+
static generateFrameContentForGroup(frame, dataGroup, template, frameTemplate = null, frameTitle = null) {
|
|
29
|
+
var _a, _b;
|
|
30
|
+
const FRAME_PADDING = 20;
|
|
31
|
+
const headerPosition = {
|
|
32
|
+
x: FRAME_PADDING,
|
|
33
|
+
y: FRAME_PADDING
|
|
34
|
+
};
|
|
35
|
+
const panelPosition = {
|
|
36
|
+
x: FRAME_PADDING,
|
|
37
|
+
y: FRAME_PADDING
|
|
38
|
+
};
|
|
39
|
+
let frameHeaderDimensions = { height: 0, width: 0 };
|
|
40
|
+
let framePanelDimensions = { height: 0, width: 0 };
|
|
41
|
+
let hasPanel = false;
|
|
42
|
+
let hasHeader = false;
|
|
43
|
+
if (frameTemplate) {
|
|
44
|
+
const elements = this.generateFrameTemplateElements(frameTemplate, dataGroup);
|
|
45
|
+
frame.addDocumentElements(elements);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
if (template.frameHeaderTemplate) {
|
|
49
|
+
hasHeader = true;
|
|
50
|
+
frameHeaderDimensions = { height: 50, width: template.frameSize.width - 50 };
|
|
51
|
+
const headerElements = this.generateFrameHeaderForDataGroup(dataGroup, headerPosition, template, frameHeaderDimensions, frameTitle);
|
|
52
|
+
frame.addDocumentElements(headerElements);
|
|
53
|
+
}
|
|
54
|
+
if (template.frameInfoPanelTemplate) {
|
|
55
|
+
hasPanel = true;
|
|
56
|
+
framePanelDimensions = { width: ((_b = (_a = template.frameInfoPanelTemplate.panelDocumentTemplate) === null || _a === void 0 ? void 0 : _a.size) === null || _b === void 0 ? void 0 : _b.width) || 300 };
|
|
57
|
+
framePanelDimensions.height = template.frameSize.height - (2 * FRAME_PADDING);
|
|
58
|
+
const panelElements = this.generateFrameInfoPanelForDataGroup(dataGroup, panelPosition, template, framePanelDimensions);
|
|
59
|
+
frame.addDocumentElements(panelElements);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
const GRID_MARGIN = 20;
|
|
63
|
+
let gridPosition = { x: 0, y: 0 };
|
|
64
|
+
let idealGridSize = { width: 0, height: 0 };
|
|
65
|
+
if (frameTemplate) {
|
|
66
|
+
gridPosition = frameTemplate.gridSpaceDefinition.position;
|
|
67
|
+
idealGridSize = frameTemplate.gridSpaceDefinition.size;
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
if (hasHeader) {
|
|
71
|
+
gridPosition = util_1.ObjectUtil.cloneDeep(headerPosition);
|
|
72
|
+
gridPosition.y = gridPosition.y + frameHeaderDimensions.height + GRID_MARGIN;
|
|
73
|
+
}
|
|
74
|
+
if (hasPanel) {
|
|
75
|
+
gridPosition = util_1.ObjectUtil.cloneDeep(panelPosition);
|
|
76
|
+
gridPosition.x = gridPosition.x + framePanelDimensions.width + GRID_MARGIN;
|
|
77
|
+
}
|
|
78
|
+
const frameSize = template.frameSize;
|
|
79
|
+
idealGridSize = {
|
|
80
|
+
width: frameSize.width - gridPosition.x - FRAME_PADDING,
|
|
81
|
+
height: frameSize.height - gridPosition.y - FRAME_PADDING
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
const gridElements = component_grid_generator_1.ComponentGridGenerator.generateComponentGrid(dataGroup.data, gridPosition, template.componentGridTemplate, idealGridSize);
|
|
85
|
+
frame.addDocumentElements(gridElements);
|
|
86
|
+
return frame;
|
|
87
|
+
}
|
|
88
|
+
static generateFrameHeaderForDataGroup(dataGroup, position, template, headerSize, frameTitle = null) {
|
|
89
|
+
const heading = documents_1.DocumentElementFactory.createTextElement(dataGroup.name, template.frameHeaderTemplate);
|
|
90
|
+
heading.style = { border: { width: 1, color: "rgba(0,0,0,0)" }, color: "#000000", backgroundColor: template.frameHeaderTemplate.style.backgroundColor || 'black' };
|
|
91
|
+
heading.text = `<p><span style=\"font-size: ${template.frameHeaderTemplate.style.font.size}pt;\"><strong><span style=\"color: ${template.frameHeaderTemplate.style.color};\">${document_util_1.DocumentUtil.sanitizeHTML(frameTitle || dataGroup.name)}</span></strong></span></p>`;
|
|
92
|
+
heading.size = util_1.ObjectUtil.cloneDeep(headerSize);
|
|
93
|
+
heading.position = util_1.ObjectUtil.cloneDeep(position);
|
|
94
|
+
return [heading];
|
|
95
|
+
}
|
|
96
|
+
static generateFrameInfoPanelForDataGroup(dataGroup, position, template, panelSize) {
|
|
97
|
+
return info_panel_generator_1.InfoPanelGenerator.generatePanelFromTemplate(dataGroup.propertyValues, template.frameInfoPanelTemplate, position, panelSize);
|
|
98
|
+
}
|
|
99
|
+
static generateFrame(options) {
|
|
100
|
+
const frame = documents_1.DocumentElementFactory.createFrameElement(options);
|
|
101
|
+
return frame;
|
|
102
|
+
}
|
|
103
|
+
static generateFrameTemplateElements(frameTemplate, dataGroup) {
|
|
104
|
+
const templateElements = util_1.ObjectUtil.cloneDeep(frameTemplate.document.elements);
|
|
105
|
+
const elementMapping = {};
|
|
106
|
+
const createdElements = [];
|
|
107
|
+
for (let element of templateElements) {
|
|
108
|
+
const origElementId = util_1.ObjectUtil.cloneDeep(element.id);
|
|
109
|
+
delete element.id;
|
|
110
|
+
delete element.updatedOn;
|
|
111
|
+
delete element.updatedById;
|
|
112
|
+
delete element.createdOn;
|
|
113
|
+
delete element.createdById;
|
|
114
|
+
const documentElement = documents_1.DocumentElementFactory.createElement(element.type, element);
|
|
115
|
+
elementMapping[origElementId] = documentElement.id;
|
|
116
|
+
if (documentElement.type === 'text') {
|
|
117
|
+
documentElement.text = documentElement.text.replace('{{dataGroup.name}}', dataGroup.name);
|
|
118
|
+
}
|
|
119
|
+
if (documentElement.elementIds) {
|
|
120
|
+
documentElement.elementIds = [elementMapping[documentElement.elementIds[0]]];
|
|
121
|
+
}
|
|
122
|
+
createdElements.push(documentElement);
|
|
123
|
+
}
|
|
124
|
+
;
|
|
125
|
+
return createdElements;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
exports.FrameGenerator = FrameGenerator;
|
package/lib/frames/frame.d.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { DocumentElement, PositionDefinition, SizeDefinition, StyleDefinition } from "@contrail/documents";
|
|
2
|
-
export declare abstract class DocumentFrame {
|
|
3
|
-
frameContentElements: Array<DocumentElement>;
|
|
4
|
-
constructor();
|
|
5
|
-
addDocumentElements(elements: Array<DocumentElement>): void;
|
|
6
|
-
toDocumentElements(): Array<DocumentElement>;
|
|
7
|
-
}
|
|
8
|
-
export declare class ShowcaseFrame extends DocumentFrame {
|
|
9
|
-
documentGenerationConfigId?: string;
|
|
10
|
-
}
|
|
11
|
-
export declare class BoardFrame extends DocumentFrame {
|
|
12
|
-
private frameElement;
|
|
13
|
-
name: string;
|
|
14
|
-
constructor(name: string, position: PositionDefinition, size: SizeDefinition, style: StyleDefinition, clipContent?: boolean);
|
|
15
|
-
toDocumentElements(): Array<DocumentElement>;
|
|
16
|
-
}
|
|
1
|
+
import { DocumentElement, PositionDefinition, SizeDefinition, StyleDefinition } from "@contrail/documents";
|
|
2
|
+
export declare abstract class DocumentFrame {
|
|
3
|
+
frameContentElements: Array<DocumentElement>;
|
|
4
|
+
constructor();
|
|
5
|
+
addDocumentElements(elements: Array<DocumentElement>): void;
|
|
6
|
+
toDocumentElements(): Array<DocumentElement>;
|
|
7
|
+
}
|
|
8
|
+
export declare class ShowcaseFrame extends DocumentFrame {
|
|
9
|
+
documentGenerationConfigId?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare class BoardFrame extends DocumentFrame {
|
|
12
|
+
private frameElement;
|
|
13
|
+
name: string;
|
|
14
|
+
constructor(name: string, position: PositionDefinition, size: SizeDefinition, style: StyleDefinition, clipContent?: boolean);
|
|
15
|
+
toDocumentElements(): Array<DocumentElement>;
|
|
16
|
+
}
|