feature: generate pdf from actor

This commit is contained in:
Matthieu CAILLEAUX
2021-10-16 23:58:31 +02:00
parent 1babf13dae
commit f96372b236
18 changed files with 1826 additions and 14 deletions

36
src/elements/column.ts Normal file
View File

@@ -0,0 +1,36 @@
import { AbstractElement } from './abstract-element';
import jsPDF from 'jspdf';
export class Column extends AbstractElement {
public elements: AbstractElement[] = [];
constructor(x: number, y: number, elements: AbstractElement[]) {
super(x, y);
this.elements = elements;
}
public render(doc: jsPDF, _maxWidth?: number): jsPDF {
const elements = this.elements ?? [];
let currentY = this.y;
for (let i = 0; i < elements.length; i++) {
const element = elements[i];
element.x = this.x;
element.y = currentY;
element.render(doc);
currentY += element.getHeight(doc) + 2;
}
return doc;
}
public getHeight(doc): number {
return this.elements
.map((e) => e.getHeight(doc))
.reduce((p, c, i) => {
if (i === 0) {
return c;
}
return p + c + 2;
});
}
}