mirror of
https://github.com/TrentSPalmer/hugo_themes_report.git
synced 2024-09-21 13:39:17 -07:00
102 lines
3.0 KiB
JavaScript
102 lines
3.0 KiB
JavaScript
function getTagSortBy() {
|
|
let tagSortByNumThemes = document.getElementById("tagSortByNumThemes");
|
|
if (tagSortByNumThemes === null) {
|
|
return "numThemes";
|
|
} else {
|
|
return tagSortByNumThemes.checked ? "numThemes" : "name";
|
|
}
|
|
}
|
|
|
|
function getFeatureSortBy() {
|
|
let featureSortByNumThemes = document.getElementById(
|
|
"featureSortByNumThemes"
|
|
);
|
|
if (featureSortByNumThemes === null) {
|
|
return "numThemes";
|
|
} else {
|
|
return featureSortByNumThemes.checked ? "numThemes" : "name";
|
|
}
|
|
}
|
|
|
|
function buildColumnSelectionHeadingRow(eParent, dState) {
|
|
let columnSelectionHeadingRow = document.createElement("div");
|
|
columnSelectionHeadingRow.id = "columnSelectionHeadingRow";
|
|
columnSelectionHeadingRow.style.maxWidth = "100%";
|
|
columnSelectionHeadingRow.style.display = dState.columnSelectionHeadingRow;
|
|
columnSelectionHeadingRow.style.alignItems = "center";
|
|
|
|
let columnSelectionHeading = document.createElement("h2");
|
|
columnSelectionHeading.innerHTML = "Select Columns";
|
|
columnSelectionHeadingRow.appendChild(columnSelectionHeading);
|
|
eParent.appendChild(columnSelectionHeadingRow);
|
|
}
|
|
|
|
function buildColumnSelectionDiv(selectedColumns, dState, eParent) {
|
|
buildColumnSelectionHeadingRow(eParent, dState);
|
|
|
|
let columnSelectionRow = document.createElement("div");
|
|
columnSelectionRow.id = "columnSelectionRow";
|
|
columnSelectionRow.style.display = dState.columnSelectionRow;
|
|
columnSelectionRow.style.flexWrap = "wrap";
|
|
columnSelectionRow.style.justifyContent = "space-around";
|
|
eParent.appendChild(columnSelectionRow);
|
|
|
|
tableColumns
|
|
.filter((x) => selectedColumns.includes(x.headingName))
|
|
.forEach((y) => {
|
|
buildInput(y, true, columnSelectionRow);
|
|
});
|
|
|
|
tableColumns
|
|
.filter((x) => !selectedColumns.includes(x.headingName))
|
|
.forEach((y) => {
|
|
buildInput(y, false, columnSelectionRow);
|
|
});
|
|
}
|
|
|
|
// called from buildPage.js
|
|
function buildSelectionMenu(
|
|
sorted_themes,
|
|
sortedBy,
|
|
selectedTags,
|
|
selectedFeatures,
|
|
selectedColumns,
|
|
dState
|
|
) {
|
|
let tagSortBy = getTagSortBy();
|
|
let featureSortBy = getFeatureSortBy();
|
|
let selectionMenuDiv = document.getElementById("selection-menu");
|
|
|
|
// from getAvailableTagsAndFeatures.js
|
|
let availableTags = getAvailableTags(sorted_themes, tagSortBy);
|
|
// from getAvailableTagsAndFeatures.js
|
|
let availableFeatures = getAvailableFeatures(sorted_themes, featureSortBy);
|
|
|
|
// from buildSortByDiv.js
|
|
buildSortByDiv(sortedBy, dState.sortByRow);
|
|
|
|
buildColumnSelectionDiv(
|
|
(selectedColumns = selectedColumns),
|
|
(dState = dState),
|
|
(eParent = selectionMenuDiv)
|
|
);
|
|
|
|
// from buildTagAndFeatureSelectionDivs.js
|
|
buildTagSelectionDiv(
|
|
(selectedTags = selectedTags),
|
|
(availableTags = availableTags),
|
|
(tagSortBy = tagSortBy),
|
|
(dState = dState),
|
|
(eParent = selectionMenuDiv)
|
|
);
|
|
|
|
// from buildTagAndFeatureSelectionDivs.js
|
|
buildFeatureSelectionDiv(
|
|
(selectedFeatures = selectedFeatures),
|
|
(availableFeatures = availableFeatures),
|
|
(featureSortBy = featureSortBy),
|
|
(dState = dState),
|
|
(eParent = selectionMenuDiv)
|
|
);
|
|
}
|