Extract common functionality into a new BaseTreeViewer._finishRendering method

Note how the end of the `{PDFOutlineViewer, PDFAttachmentViewer, PDFLayerViewer}.render` methods share *almost* identical code, hence we can reduce some duplication by introducing the new `BaseTreeViewer` helper method here.

Furthermore, setting `this._lastToggleIsShow` can be made ever so slightly more efficient, since we don't care about the number of ".treeItemsHidden"-classes but only want to know if at least one exists.
This commit is contained in:
Jonas Jenwald 2020-12-28 14:42:47 +01:00
parent 57bec090ae
commit 03f10739d8
4 changed files with 17 additions and 21 deletions

View File

@ -103,6 +103,20 @@ class BaseTreeViewer {
this._toggleTreeItem(this.container, !this._lastToggleIsShow); this._toggleTreeItem(this.container, !this._lastToggleIsShow);
} }
/**
* @private
*/
_finishRendering(fragment, count, hasAnyNesting = false) {
if (hasAnyNesting) {
this.container.classList.add("treeWithDeepNesting");
this._lastToggleIsShow = !fragment.querySelector(".treeItemsHidden");
}
this.container.appendChild(fragment);
this._dispatchEvent(count);
}
render(params) { render(params) {
throw new Error("Not implemented: render"); throw new Error("Not implemented: render");
} }

View File

@ -187,9 +187,7 @@ class PDFAttachmentViewer extends BaseTreeViewer {
attachmentsCount++; attachmentsCount++;
} }
this.container.appendChild(fragment); this._finishRendering(fragment, attachmentsCount);
this._dispatchEvent(attachmentsCount);
} }
/** /**

View File

@ -174,16 +174,8 @@ class PDFLayerViewer extends BaseTreeViewer {
levelData.parent.appendChild(div); levelData.parent.appendChild(div);
} }
} }
if (hasAnyNesting) {
this.container.classList.add("treeWithDeepNesting");
this._lastToggleIsShow = this._finishRendering(fragment, layersCount, hasAnyNesting);
fragment.querySelectorAll(".treeItemsHidden").length === 0;
}
this.container.appendChild(fragment);
this._dispatchEvent(layersCount);
} }
/** /**

View File

@ -171,16 +171,8 @@ class PDFOutlineViewer extends BaseTreeViewer {
outlineCount++; outlineCount++;
} }
} }
if (hasAnyNesting) {
this.container.classList.add("treeWithDeepNesting");
this._lastToggleIsShow = this._finishRendering(fragment, outlineCount, hasAnyNesting);
fragment.querySelectorAll(".treeItemsHidden").length === 0;
}
this.container.appendChild(fragment);
this._dispatchEvent(outlineCount);
} }
} }