summaryrefslogtreecommitdiff
path: root/docs/stories.js
diff options
context:
space:
mode:
authorWriterV2 <primary-v2@protonmail.com>2022-11-05 18:04:22 +0100
committerWriterV2 <primary-v2@protonmail.com>2022-11-05 18:04:22 +0100
commit50f0dd83857d824ebf808ef252d3c614428c9dfb (patch)
treec490e95d5ffb50bb2e3969f27590d97b4bc68f3f /docs/stories.js
parent02da6b370777d40df1b37e2f80ef25a235d79634 (diff)
Add stories filter form JS
Diffstat (limited to 'docs/stories.js')
-rw-r--r--docs/stories.js34
1 files changed, 34 insertions, 0 deletions
diff --git a/docs/stories.js b/docs/stories.js
new file mode 100644
index 0000000..e5a57ec
--- /dev/null
+++ b/docs/stories.js
@@ -0,0 +1,34 @@
+// every story card
+const workCards = document.querySelectorAll(".work-card");
+
+// story type select input
+const storyTypeSelect = document.querySelector("#story-type-select");
+// language select input
+const languageSelect = document.querySelector("#language-select");
+// copy of works with all work cards
+const works = Array.from(document.querySelector(".works").children);
+
+// filter cards based on storytype and language filter
+function filterWorkCards() {
+ // restore initial state with all cards
+ // (TODO: Explore more efficient solutions without another loop)
+ document.querySelector(".works").replaceChildren();
+ works.forEach((card) => {
+ document.querySelector(".works").appendChild(card);
+ })
+
+ // filter card if language or story type filter doesn't match
+ workCards.forEach((card) => {
+ if (languageSelect.value != "*" && card.querySelector(".story-language").innerHTML != languageSelect.value) {
+ document.querySelector(".works").removeChild(card);
+ } else if (storyTypeSelect.value != "*" && card.querySelector(".story-type").innerHTML != storyTypeSelect.value) {
+ document.querySelector(".works").removeChild(card);
+ }
+ })
+}
+
+// filter cards when
+// story type selection changes
+storyTypeSelect.addEventListener("change", filterWorkCards);
+// language selection changes
+languageSelect.addEventListener("change", filterWorkCards);