FossilRepo
| 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 | }); |