FossilRepo

fossilrepo / assets / import_export / export_selectable_fields.js
Source Blame History 63 lines
afe42d0… ragelink 1 function hideUnselectedResourceFields(selectedResourceIndex) {
afe42d0… ragelink 2 const fields = document.querySelectorAll("[resource-index]");
afe42d0… ragelink 3
afe42d0… ragelink 4 fields.forEach((field) => {
afe42d0… ragelink 5 if (field.getAttribute("resource-index") !== selectedResourceIndex.toString()) {
afe42d0… ragelink 6 // field is wrapped by div, change visibility on wrapper
afe42d0… ragelink 7 field.style.display = "none";
afe42d0… ragelink 8 }
afe42d0… ragelink 9 });
afe42d0… ragelink 10 }
afe42d0… ragelink 11
afe42d0… ragelink 12 function showSelectedResourceFields(resourceIndex) {
afe42d0… ragelink 13 const fields = document.querySelectorAll(`[resource-index="${resourceIndex}"]`);
afe42d0… ragelink 14
afe42d0… ragelink 15 fields.forEach((field) => {
afe42d0… ragelink 16 // field is wrapped by div, change visibility on wrapper
afe42d0… ragelink 17 field.style.display = "block";
afe42d0… ragelink 18 });
afe42d0… ragelink 19 }
afe42d0… ragelink 20
afe42d0… ragelink 21 function onResourceSelected(e) {
afe42d0… ragelink 22 const resourceIndex = e.target.value;
afe42d0… ragelink 23
afe42d0… ragelink 24 showSelectedResourceFields(resourceIndex);
afe42d0… ragelink 25
afe42d0… ragelink 26 hideUnselectedResourceFields(resourceIndex);
afe42d0… ragelink 27 }
afe42d0… ragelink 28
afe42d0… ragelink 29 function onSelectToggleChange(e) {
afe42d0… ragelink 30 /*
afe42d0… ragelink 31 * Handles a checkbox click event to select / deselect all field checkboxes.
afe42d0… ragelink 32 */
afe42d0… ragelink 33 const select = e.target;
afe42d0… ragelink 34 const isChecked = select.checked;
afe42d0… ragelink 35
afe42d0… ragelink 36 if (isChecked) {
afe42d0… ragelink 37 document.querySelectorAll('.selectable-field-export-row input[type="checkbox"]').forEach((checkbox) => {
afe42d0… ragelink 38 checkbox.checked = true;
afe42d0… ragelink 39 });
afe42d0… ragelink 40 } else {
afe42d0… ragelink 41 document.querySelectorAll('.selectable-field-export-row input[type="checkbox"]').forEach((checkbox) => {
afe42d0… ragelink 42 checkbox.checked = false;
afe42d0… ragelink 43 });
afe42d0… ragelink 44 }
afe42d0… ragelink 45 }
afe42d0… ragelink 46
afe42d0… ragelink 47 document.addEventListener("DOMContentLoaded", () => {
afe42d0… ragelink 48 const resourceSelector = document.querySelector("#id_resource");
afe42d0… ragelink 49
afe42d0… ragelink 50 if (!resourceSelector) {
afe42d0… ragelink 51 console.error("resource select input not found");
afe42d0… ragelink 52 return;
afe42d0… ragelink 53 }
afe42d0… ragelink 54
afe42d0… ragelink 55 // If selector is actually select input, get selected option.
afe42d0… ragelink 56 // else selected resource index is 0
afe42d0… ragelink 57 const selectedResourceIndex = resourceSelector.tagName === "SELECT" ? resourceSelector.value : 0;
afe42d0… ragelink 58
afe42d0… ragelink 59 resourceSelector.addEventListener("input", onResourceSelected);
afe42d0… ragelink 60
afe42d0… ragelink 61 // initially hide unselected resource fields
afe42d0… ragelink 62 hideUnselectedResourceFields(selectedResourceIndex);
afe42d0… ragelink 63 });

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button