Skip to content

Commit a42adc8

Browse files
committed
refactor: improve logic and dry code a bit
1 parent a41425c commit a42adc8

File tree

1 file changed

+17
-23
lines changed

1 file changed

+17
-23
lines changed

src/resources/projects/website/listing/quarto-listing.js

Lines changed: 17 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ window.quartoListingCategory = (category) => {
88
category = decodeURIComponent(atob(category));
99
selectedCategories.clear();
1010
selectedCategories.add(category);
11-
updateCategoryUI();
12-
filterListingCategory();
11+
1312
setCategoryHash();
13+
updateCategory();
1414
};
1515

1616
window["quarto-listing-loaded"] = () => {
@@ -24,13 +24,11 @@ window["quarto-listing-loaded"] = () => {
2424
for (const cat of cats) {
2525
if (cat) selectedCategories.add(decodeURIComponent(cat));
2626
}
27-
updateCategoryUI();
28-
filterListingCategory();
27+
updateCategory();
2928
} else {
3029
// No categories in hash, use default
3130
selectedCategories.add(kDefaultCategory);
32-
updateCategoryUI();
33-
filterListingCategory();
31+
updateCategory();
3432
}
3533
// Paginate a specific listing
3634
const listingIds = Object.keys(window["quarto-listings"]);
@@ -43,8 +41,7 @@ window["quarto-listing-loaded"] = () => {
4341
} else {
4442
// No hash at all, use default category
4543
selectedCategories.add(kDefaultCategory);
46-
updateCategoryUI();
47-
filterListingCategory();
44+
updateCategory();
4845
}
4946

5047
const listingIds = Object.keys(window["quarto-listings"]);
@@ -90,12 +87,17 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
9087
}
9188

9289
// If this would deselect the last category, ensure default category remains selected
93-
if (selectedCategories.has(category) && selectedCategories.size === 1) {
94-
selectedCategories.add(kDefaultCategory);
90+
if (selectedCategories.has(category)) {
91+
selectedCategories.delete(category);
92+
if (selectedCategories.size === 1) {
93+
selectedCategories.add(kDefaultCategory);
94+
}
95+
} else {
96+
selectedCategories.add(category);
9597
}
9698

97-
activateCategory(category);
9899
setCategoryHash();
100+
updateCategory();
99101
};
100102
}
101103

@@ -107,9 +109,8 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
107109
for (const categoryTitleEl of categoryTitleEls) {
108110
categoryTitleEl.onclick = () => {
109111
selectedCategories.clear();
110-
updateCategoryUI();
111112
setCategoryHash();
112-
filterListingCategory();
113+
updateCategory();
113114
};
114115
}
115116

@@ -120,13 +121,11 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
120121
for (const cat of cats) {
121122
if (cat) selectedCategories.add(decodeURIComponent(cat));
122123
}
123-
updateCategoryUI();
124-
filterListingCategory();
124+
updateCategory();
125125
} else {
126126
// No hash at all, use default category
127127
selectedCategories.add(kDefaultCategory);
128-
updateCategoryUI();
129-
filterListingCategory();
128+
updateCategory();
130129
}
131130

132131
categoriesLoaded = true;
@@ -256,12 +255,7 @@ function showPage(listingId, page) {
256255
}
257256
}
258257

259-
function activateCategory(category) {
260-
if (selectedCategories.has(category)) {
261-
selectedCategories.delete(category);
262-
} else {
263-
selectedCategories.add(category);
264-
}
258+
function updateCategory() {
265259
updateCategoryUI();
266260
filterListingCategory();
267261
}

0 commit comments

Comments
 (0)