diff options
author | 2021-08-03 09:04:57 -0500 | |
---|---|---|
committer | 2021-08-03 10:09:44 -0400 | |
commit | d244bc936438e98a4c956cebf16f8c9a4b6dfd7d (patch) | |
tree | 4fae7aaa2de36422257d2320df602c2679257ba0 | |
parent | Restructure table of resources for new query logic. (diff) |
split up checkbox options in query params
I have added functionality to the front end to split up the checkbox options into separate query params. This will make it easier to parse what has been selected.
-rw-r--r-- | pydis_site/templates/resources/resources.html | 55 |
1 files changed, 34 insertions, 21 deletions
diff --git a/pydis_site/templates/resources/resources.html b/pydis_site/templates/resources/resources.html index e2275e89..f2d5a976 100644 --- a/pydis_site/templates/resources/resources.html +++ b/pydis_site/templates/resources/resources.html @@ -28,7 +28,7 @@ {% for topic in topics %} <div class="field"> <label class="checkbox ml-0"> - <input name="checkboxOption" type="checkbox" value="{{ topic }}"> + <input name="topicOption" type="checkbox" value="{{ topic }}"> <span class="has-text-grey is-size-7">{{ topic }}</span> </label> </div> @@ -41,7 +41,7 @@ {% for tag_type in tag_types %} <div class="field"> <label class="checkbox ml-0"> - <input name="checkboxOption" type="checkbox" value="{{ tag_type }}"> + <input name="typeOption" type="checkbox" value="{{ tag_type }}"> <span class="has-text-grey is-size-7">{{ tag_type }}</span> </label> </div> @@ -54,7 +54,7 @@ {% for payment_tier in payment_tiers %} <div class="field"> <label class="checkbox ml-0"> - <input name="checkboxOption" type="checkbox" value="{{ payment_tier }}"> + <input name="paymentOption" type="checkbox" value="{{ payment_tier }}"> <span class="has-text-grey is-size-7">{{ payment_tier }}</span> </label> </div> @@ -67,7 +67,7 @@ {% for complexity in complexities %} <div class="field"> <label class="checkbox ml-0"> - <input name="checkboxOption" type="checkbox" value="{{ complexity }}"> + <input name="complexityOption" type="checkbox" value="{{ complexity }}"> <span class="has-text-grey is-size-7">{{ complexity }}</span> </label> </div> @@ -124,32 +124,45 @@ {% endif %} <script> - const initialParams = new URLSearchParams(window.location.search).get("checkboxOptions"); - const checkBoxes = document.querySelectorAll("input[name='checkboxOption']"); - - if(initialParams != null){ - checkBoxes.forEach((x) => { - if(initialParams.includes(x.value)){ - x.checked = true; - } - }); + "use strict"; + const initialParams = new URLSearchParams(window.location.search); + const checkboxOptions = ['topicOption', 'typeOption', 'paymentOption', 'complexityOption']; + // const topicOptions = document.querySelectorAll("input[name='topicOption']"); + + const createQuerySelect = (opt) => { + return "input[name=" + opt + "]" } - function buildQueryParams(){ - let params = new URLSearchParams(window.location.search); - let allOptions = ""; - checkBoxes.forEach((x) => { - if(x.checked){ - allOptions += x.value + ","; + checkboxOptions.forEach((option) => { + document.querySelectorAll(createQuerySelect(option)).forEach((checkbox) => { + if(initialParams.get(option).includes(checkbox.value)){ + checkbox.checked = true } }); - params.set("checkboxOptions", allOptions); + }); + + + function buildQueryParams(){ + let params = new URLSearchParams(window.location.search); + checkboxOptions.forEach((option) => { + let tempOut = "" + document.querySelectorAll(createQuerySelect(option)).forEach((checkbox) => { + if(checkbox.checked){ + tempOut += checkbox.value + ","; + } + }); + params.set(option, tempOut); + }); window.location.search = params; } function clearQueryParams(){ - checkBoxes.forEach((x) => {x.checked = false}); + checkboxOptions.forEach((option) => { + document.querySelectorAll(createQuerySelect(option)).forEach((checkbox) => { + checkbox.checked = false; + }); + }); } </script> {% endblock %} |