hugo_themes_report/templates/js/buildSelectionMenu.js

102 lines
3.1 KiB
JavaScript
Raw Normal View History

2021-08-14 17:42:01 -07:00
function getTagSortBy() {
let tagSortByNumThemes = document.getElementById("tagSortByNumThemes");
if (tagSortByNumThemes === null) {
return "numThemes";
} else {
return tagSortByNumThemes.checked ? "numThemes" : "name";
}
}
2021-08-14 17:42:01 -07:00
function getFeatureSortBy() {
let featureSortByNumThemes = document.getElementById(
2021-08-12 17:23:42 -07:00
"featureSortByNumThemes"
);
2021-08-14 17:42:01 -07:00
if (featureSortByNumThemes === null) {
return "numThemes";
} else {
return featureSortByNumThemes.checked ? "numThemes" : "name";
}
}
2021-08-14 17:42:01 -07:00
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);
2021-08-11 11:58:10 -07:00
}
2021-08-14 17:42:01 -07:00
function buildColumnSelectionDiv(selectedColumns, dState, eParent) {
buildColumnSelectionHeadingRow(eParent, dState);
2021-08-11 11:58:10 -07:00
2021-08-14 17:42:01 -07:00
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);
2021-08-11 11:58:10 -07:00
2021-08-14 17:42:01 -07:00
tableColumns
.filter((x) => selectedColumns.includes(x.headingName))
2021-08-11 20:57:34 -07:00
.forEach((y) => {
2021-08-14 17:42:01 -07:00
buildInput(y, true, columnSelectionRow);
2021-08-11 20:57:34 -07:00
});
2021-08-11 11:58:10 -07:00
2021-08-14 17:42:01 -07:00
tableColumns
.filter((x) => !selectedColumns.includes(x.headingName))
2021-08-11 20:57:34 -07:00
.forEach((y) => {
2021-08-14 17:42:01 -07:00
buildInput(y, false, columnSelectionRow);
2021-08-11 20:57:34 -07:00
});
2021-08-11 11:58:10 -07:00
}
2021-08-14 17:42:01 -07:00
// called from buildPage.js
2021-08-11 20:57:34 -07:00
function buildSelectionMenu(
sorted_themes,
2021-08-16 10:35:36 -07:00
sortBy,
2021-08-11 20:57:34 -07:00
selectedTags,
2021-08-14 07:21:26 -07:00
selectedFeatures,
2021-08-14 17:42:01 -07:00
selectedColumns,
2021-08-14 07:21:26 -07:00
dState
2021-08-11 20:57:34 -07:00
) {
let tagSortBy = getTagSortBy();
let featureSortBy = getFeatureSortBy();
2021-08-14 17:42:01 -07:00
let selectionMenuDiv = document.getElementById("selection-menu");
// from getAvailableTagsAndFeatures.js
let availableTags = getAvailableTags(sorted_themes, tagSortBy);
2021-08-14 17:42:01 -07:00
// from getAvailableTagsAndFeatures.js
let availableFeatures = getAvailableFeatures(sorted_themes, featureSortBy);
2021-08-14 17:42:01 -07:00
// from buildSortByDiv.js
2021-08-16 10:35:36 -07:00
buildSortByDiv((sortedBy = sortBy), (sortByRowDisplay = dState.sortByRow));
2021-08-14 17:42:01 -07:00
buildColumnSelectionDiv(
(selectedColumns = selectedColumns),
(dState = dState),
(eParent = selectionMenuDiv)
);
// from buildTagAndFeatureSelectionDivs.js
buildTagSelectionDiv(
(selectedTags = selectedTags),
(availableTags = availableTags),
(tagSortBy = tagSortBy),
(dState = dState),
(eParent = selectionMenuDiv)
);
// from buildTagAndFeatureSelectionDivs.js
2021-08-14 07:21:26 -07:00
buildFeatureSelectionDiv(
2021-08-14 17:42:01 -07:00
(selectedFeatures = selectedFeatures),
(availableFeatures = availableFeatures),
(featureSortBy = featureSortBy),
(dState = dState),
(eParent = selectionMenuDiv)
2021-08-14 07:21:26 -07:00
);
2021-08-11 11:58:10 -07:00
}