in src/dotnet/APIView/APIViewWeb/Client/src/pages/review.module.ts [178:276]
function toggleSubSectionContent(headingRow : JQuery<HTMLElement>, subSectionLevel : string, subSectionHeadingPosition : string,
subSectionContentClass : string, caretDirection : string, caretIcon : JQuery<HTMLElement>, lineNumber) {
var subSectionDescendants = $(`.${subSectionContentClass}`);
if (caretDirection.endsWith("right")) {
var startShowing = false;
$.each(subSectionDescendants, function (index, value) {
var rowClasses = $(value).attr("class");
var rowLineNumber = $(value).find(".line-number>span").text();
if (rowClasses) {
if (rowClasses.match(new RegExp(`lvl_${subSectionLevel}_parent_${subSectionHeadingPosition}`)) && rowLineNumber == lineNumber) {
startShowing = true;
}
if (startShowing && (rowClasses.match(new RegExp(`lvl_${subSectionLevel}_parent_${Number(subSectionHeadingPosition) + 1}`))
|| rowClasses.match(new RegExp(`lvl_${subSectionLevel}_child_${Number(subSectionHeadingPosition) + 1}`))
|| rowClasses.match(new RegExp(`lvl_${Number(subSectionLevel) - 1}_`)))) {
return false;
}
// Show only immediate descendants
if (startShowing) {
if (rowClasses.match(new RegExp(`lvl_${Number(subSectionLevel) + 1}_`))) {
if (rowClasses.match(/comment-row/) && !$("#show-comments-checkbox").prop("checked")) {
hp.toggleCommentIcon($(value).attr("data-line-id")!, true);
return; // Dont show comment row if show comments setting is unchecked
}
$(value).removeClass("d-none");
let rowHeight = $(value).height() ?? 0;
$(value).find("svg").attr("height", `${rowHeight}`);
}
}
}
});
// Add jump-lint event for classes
addClickEventToClassesInSections();
// Update section heading icons to open state
updateSectionHeadingIcons(CodeLineSectionState.shown, caretIcon, headingRow);
// maintain lineNumbers of shown headings in session storage
let shownSubSectionHeadingLineNumbers = sessionStorage.getItem("shownSubSectionHeadingLineNumbers") ?? "";
shownSubSectionHeadingLineNumbers = updateCodeLineSectionState(shownSubSectionHeadingLineNumbers, lineNumber, CodeLineSectionState.shown);
sessionStorage.setItem("shownSubSectionHeadingLineNumbers", shownSubSectionHeadingLineNumbers);
}
else {
var startHiding = false;
$.each(subSectionDescendants, function (index, value) {
var rowClasses = $(value).attr("class");
var rowLineNumber = $(value).find(".line-number>span").text();
if (rowClasses) {
if (rowClasses.match(new RegExp(`lvl_${subSectionLevel}_parent_${subSectionHeadingPosition}`)) && rowLineNumber == lineNumber) {
startHiding = true;
}
if (startHiding && (rowClasses.match(new RegExp(`lvl_${subSectionLevel}_parent_${Number(subSectionHeadingPosition) + 1}`))
|| rowClasses.match(new RegExp(`lvl_${subSectionLevel}_child_${Number(subSectionHeadingPosition) + 1}`))
|| rowClasses.match(new RegExp(`lvl_${Number(subSectionLevel) - 1}_`)))) {
return false;
}
if (startHiding) {
let descendantClasses = rowClasses.split(' ').filter(c => c.match(/lvl_[0-9]+_child_.*/))[0];
if (descendantClasses) {
let descendantLevel = descendantClasses.split('_')[1];
if (/^\d+$/.test(descendantLevel)) {
if (Number(descendantLevel) > Number(subSectionLevel)) {
$(value).addClass("d-none");
if (rowClasses.match(/lvl_[0-9]+_parent_.*/)) {
// Update all heading/parent rows to closed state before hiding it
let caretIcon = $(value).find(".row-fold-caret").children("i");
let lineNo = $(value).find(".line-number>span").text();
updateSectionHeadingIcons(CodeLineSectionState.hidden, caretIcon, $(value));
// maintain lineNumbers of shown headings in sessionStorage
let shownSubSectionHeadingLineNumbers = sessionStorage.getItem("shownSubSectionHeadingLineNumbers") ?? "";
shownSubSectionHeadingLineNumbers = updateCodeLineSectionState(shownSubSectionHeadingLineNumbers, lineNo, CodeLineSectionState.hidden);
sessionStorage.setItem("shownSubSectionHeadingLineNumbers", shownSubSectionHeadingLineNumbers);
}
}
}
}
}
}
});
// Update section heading icons to closed state
updateSectionHeadingIcons(CodeLineSectionState.hidden, caretIcon, headingRow);
// maintain lineNumbers of shown headings in sessionStorage
let shownSubSectionHeadingLineNumbers = sessionStorage.getItem("shownSubSectionHeadingLineNumbers") ?? "";
shownSubSectionHeadingLineNumbers = updateCodeLineSectionState(shownSubSectionHeadingLineNumbers, lineNumber, CodeLineSectionState.hidden);
sessionStorage.setItem("shownSubSectionHeadingLineNumbers", shownSubSectionHeadingLineNumbers);
}
}