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);
}
/**
* @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) {
throw new Error("Not implemented: render");
}

View File

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

View File

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

View File

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