Skip to content

Commit ce77d7b

Browse files
committed
chore(generate): use pptxGenJs output buffer instead of tmp file
1 parent ac265d5 commit ce77d7b

File tree

1 file changed

+25
-13
lines changed

1 file changed

+25
-13
lines changed

src/helper/generate/generate-pptxgenjs.ts

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,10 @@ import { randomUUID } from 'crypto';
22
import PptxGenJS from 'pptxgenjs';
33
import { ISlide } from '../../interfaces/islide';
44
import Automizer from '../../automizer';
5-
import { GenerateElements } from '../../types/types';
5+
import { AutomizerFile, GenerateElements } from '../../types/types';
66
import { IGenerator } from '../../interfaces/igenerator';
77
import { IPptxGenJSSlide } from '../../interfaces/ipptxgenjs-slide';
88
import fs from 'fs';
9-
import { vd } from '../general-helper';
109

1110
/**
1211
* Using pptxGenJs on an automizer ISlide will create a temporary pptx template
@@ -37,32 +36,41 @@ export default class GeneratePptxGenJs implements IGenerator {
3736

3837
async generateSlides(): Promise<void> {
3938
this.tmpFile = randomUUID() + '.pptx';
40-
const pgenSlide = this.appendPptxGenSlide();
4139

4240
for (const slide of this.slides) {
4341
const generate = slide.getGeneratedElements();
4442

4543
if (generate.length) {
4644
this.countSlides++;
47-
await this.generateElements(generate, pgenSlide);
45+
const pgenSlide = this.appendPptxGenSlide();
46+
await this.generateElements(generate, pgenSlide, this.countSlides);
47+
}
48+
}
49+
50+
for (const slide of this.slides) {
51+
const generate = slide.getGeneratedElements();
52+
if (generate.length) {
4853
this.addElements(generate, slide);
4954
}
5055
}
5156

5257
if (this.countSlides > 0) {
53-
await this.generator.writeFile({
54-
fileName: this.automizer.templateDir + '/' + this.tmpFile,
55-
});
56-
this.automizer.load(this.tmpFile);
58+
const data = (await this.generator.stream()) as AutomizerFile;
59+
this.automizer.load(data, this.tmpFile);
60+
61+
// await this.generator.writeFile({
62+
// fileName: this.automizer.templateDir + '/' + this.tmpFile,
63+
// });
5764
}
5865
}
5966

6067
async generateElements(
6168
generate: GenerateElements[],
6269
pgenSlide,
70+
tmpSlideNumber,
6371
): Promise<void> {
6472
for (const generateElement of generate) {
65-
generateElement.tmpSlideNumber = 1;
73+
generateElement.tmpSlideNumber = tmpSlideNumber;
6674
const addedObjects = <string[]>[];
6775
await generateElement.callback(
6876
this.addSlideItems(pgenSlide, generateElement, addedObjects),
@@ -75,7 +83,11 @@ export default class GeneratePptxGenJs implements IGenerator {
7583
addElements(generate: GenerateElements[], slide: ISlide) {
7684
generate.forEach((generateElement) => {
7785
generateElement.addedObjects.forEach((addedObjectName) => {
78-
slide.addElement(this.tmpFile, 1, addedObjectName);
86+
slide.addElement(
87+
this.tmpFile,
88+
generateElement.tmpSlideNumber,
89+
addedObjectName,
90+
);
7991
});
8092
});
8193
}
@@ -150,8 +162,8 @@ export default class GeneratePptxGenJs implements IGenerator {
150162
}
151163

152164
async cleanup() {
153-
if (this.countSlides > 0) {
154-
fs.unlinkSync(this.automizer.templateDir + '/' + this.tmpFile);
155-
}
165+
// if (this.countSlides > 0) {
166+
// fs.unlinkSync(this.automizer.templateDir + '/' + this.tmpFile);
167+
// }
156168
}
157169
}

0 commit comments

Comments
 (0)