fix(rendering and logging): remove extensive console chattiness, remove content memory leak when rerendering
This commit is contained in:
@@ -161,6 +161,7 @@ export class DeDocument extends DeesElement {
|
||||
|
||||
public latestDocumentSettings: plugins.shared.interfaces.IDocumentSettings = null;
|
||||
public latestRenderedLetterData: plugins.tsclass.business.ILetter = null;
|
||||
public cleanupStore: any[] = [];
|
||||
|
||||
|
||||
public async renderDocument() {
|
||||
@@ -168,11 +169,12 @@ export class DeDocument extends DeesElement {
|
||||
this.latestDocumentSettings = this.documentSettings;
|
||||
this.latestRenderedLetterData = this.letterData;
|
||||
|
||||
console.log(`rendering with settings:`);
|
||||
console.log(this.latestDocumentSettings);
|
||||
const cleanUpStoreCurrentRender = [];
|
||||
const cleanUpStoreNextRender = [];
|
||||
|
||||
const domtools = await this.domtoolsPromise;
|
||||
const documentBuildContainer = document.createElement('div');
|
||||
cleanUpStoreCurrentRender.push(documentBuildContainer);
|
||||
document.body.appendChild(documentBuildContainer);
|
||||
|
||||
let pages: DePage[] = [];
|
||||
@@ -181,6 +183,7 @@ export class DeDocument extends DeesElement {
|
||||
|
||||
// lets append the content
|
||||
const content: DeContentInvoice = new DeContentInvoice();
|
||||
cleanUpStoreCurrentRender.push(content);
|
||||
content.letterData = this.letterData;
|
||||
content.documentSettings = this.documentSettings;
|
||||
document.body.appendChild(content);
|
||||
@@ -192,6 +195,7 @@ export class DeDocument extends DeesElement {
|
||||
while (!complete) {
|
||||
pageCounter++;
|
||||
const currentContent = content.cloneNode(true) as DeContentInvoice;
|
||||
cleanUpStoreNextRender.push(currentContent);
|
||||
const newPage = new DePage();
|
||||
newPage.printMode = this.printMode;
|
||||
newPage.letterData = this.letterData;
|
||||
@@ -200,6 +204,9 @@ export class DeDocument extends DeesElement {
|
||||
newPage.pageNumber = pageCounter;
|
||||
newPage.append(currentContent);
|
||||
newPage.pageTotalNumber = pageCounter;
|
||||
|
||||
// store current page
|
||||
cleanUpStoreNextRender.push(newPage);
|
||||
documentBuildContainer.append(newPage);
|
||||
|
||||
await currentContent.elementDomReady;
|
||||
@@ -216,16 +223,24 @@ export class DeDocument extends DeesElement {
|
||||
if (trimmed === 0) {
|
||||
complete = true;
|
||||
}
|
||||
// complete = true;
|
||||
console.log(currentContentOffset);
|
||||
}
|
||||
document.body.removeChild(content);
|
||||
document.body.removeChild(documentBuildContainer);
|
||||
|
||||
for (const cleanUp of this.cleanupStore) {
|
||||
cleanUp.remove();
|
||||
}
|
||||
this.cleanupStore = cleanUpStoreNextRender
|
||||
|
||||
cleanUpStoreCurrentRender.forEach((cleanUp) => {
|
||||
cleanUp.remove();
|
||||
});
|
||||
|
||||
const documentContainer = this.shadowRoot.querySelector('.documentContainer');
|
||||
if (documentContainer) {
|
||||
const children = Array.from(documentContainer.children);
|
||||
children.forEach((child) => documentContainer.removeChild(child));
|
||||
children.forEach((child) => {
|
||||
documentContainer.removeChild(child);
|
||||
child.remove();
|
||||
});
|
||||
}
|
||||
for (const page of pages) {
|
||||
page.pageTotalNumber = pageCounter;
|
||||
@@ -269,7 +284,6 @@ export class DeDocument extends DeesElement {
|
||||
}
|
||||
if (this.viewWidth) {
|
||||
page.viewWidth = this.viewWidth;
|
||||
console.log('setting viewWidth: ', this.viewWidth);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
Reference in New Issue
Block a user