feature: generate pdf from actor
This commit is contained in:
36
src/elements/column.ts
Normal file
36
src/elements/column.ts
Normal 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;
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user