Skip to content

Commit 1dae88e

Browse files
authored
enhance: dry
1 parent da54160 commit 1dae88e

File tree

4 files changed

+47
-137
lines changed

4 files changed

+47
-137
lines changed

collections.html

Lines changed: 1 addition & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -41,49 +41,4 @@ <h1 style="margin-left: auto;margin-right: auto;">Collections</h1>
4141
{% endfor %}
4242
</table>
4343

44-
<script>
45-
const searchInput = document.getElementById('searchInput');
46-
const collectionTable = document.getElementById('collectionTable');
47-
const rows = collectionTable.getElementsByTagName('tr');
48-
49-
function updateSearchResults(searchValue) {
50-
for (let i = 1; i < rows.length; i++) {
51-
const name = rows[i].getElementsByTagName('td')[0].textContent.toLowerCase();
52-
const maintainer = rows[i].getElementsByTagName('td')[1].textContent.toLowerCase();
53-
const repository = rows[i].getElementsByTagName('td')[2].textContent.toLowerCase();
54-
55-
if (name.includes(searchValue) || maintainer.includes(searchValue) || repository.includes(searchValue)) {
56-
rows[i].style.display = '';
57-
} else {
58-
rows[i].style.display = 'none';
59-
}
60-
}
61-
}
62-
63-
function getSearchParameter() {
64-
const params = new URLSearchParams(window.location.search);
65-
return params.get('search') || '';
66-
}
67-
68-
function setSearchParameter(value) {
69-
const params = new URLSearchParams(window.location.search);
70-
if (value) {
71-
params.set('search', value);
72-
} else {
73-
params.delete('search');
74-
}
75-
window.history.replaceState({}, '', `${window.location.pathname}?${params.toString()}`);
76-
}
77-
78-
searchInput.addEventListener('input', function () {
79-
const searchValue = searchInput.value.toLowerCase();
80-
setSearchParameter(searchValue);
81-
updateSearchResults(searchValue);
82-
});
83-
84-
document.addEventListener('DOMContentLoaded', function () {
85-
const searchValue = getSearchParameter();
86-
searchInput.value = searchValue;
87-
updateSearchResults(searchValue);
88-
});
89-
</script>
44+
<script src="js/search.js"></script>

features.html

Lines changed: 1 addition & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -52,49 +52,4 @@ <h1 style="margin-left: auto;margin-right: auto;">Available Dev Container Featur
5252
{% endfor %}
5353
</table>
5454

55-
<script>
56-
const searchInput = document.getElementById('searchInput');
57-
const collectionTable = document.getElementById('collectionTable');
58-
const rows = collectionTable.getElementsByTagName('tr');
59-
60-
function updateSearchResults(searchValue) {
61-
for (let i = 1; i < rows.length; i++) {
62-
const name = rows[i].getElementsByTagName('td')[0].textContent.toLowerCase();
63-
const maintainer = rows[i].getElementsByTagName('td')[1].textContent.toLowerCase();
64-
const repository = rows[i].getElementsByTagName('td')[2].textContent.toLowerCase();
65-
66-
if (name.includes(searchValue) || maintainer.includes(searchValue) || repository.includes(searchValue)) {
67-
rows[i].style.display = '';
68-
} else {
69-
rows[i].style.display = 'none';
70-
}
71-
}
72-
}
73-
74-
function getSearchParameter() {
75-
const params = new URLSearchParams(window.location.search);
76-
return params.get('search') || '';
77-
}
78-
79-
function setSearchParameter(value) {
80-
const params = new URLSearchParams(window.location.search);
81-
if (value) {
82-
params.set('search', value);
83-
} else {
84-
params.delete('search');
85-
}
86-
window.history.replaceState({}, '', `${window.location.pathname}?${params.toString()}`);
87-
}
88-
89-
searchInput.addEventListener('input', function () {
90-
const searchValue = searchInput.value.toLowerCase();
91-
setSearchParameter(searchValue);
92-
updateSearchResults(searchValue);
93-
});
94-
95-
document.addEventListener('DOMContentLoaded', function () {
96-
const searchValue = getSearchParameter();
97-
searchInput.value = searchValue;
98-
updateSearchResults(searchValue);
99-
});
100-
</script>
55+
<script src="js/search.js"></script>

js/search.js

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
function updateSearchResults(searchValue, rows) {
2+
for (let i = 1; i < rows.length; i++) {
3+
const cells = rows[i].getElementsByTagName('td');
4+
let match = false;
5+
for (let j = 0; j < cells.length; j++) {
6+
if (cells[j].textContent.toLowerCase().includes(searchValue)) {
7+
match = true;
8+
break;
9+
}
10+
}
11+
rows[i].style.display = match ? '' : 'none';
12+
}
13+
}
14+
15+
function getSearchParameter() {
16+
const params = new URLSearchParams(window.location.search);
17+
return params.get('search') || '';
18+
}
19+
20+
function setSearchParameter(value) {
21+
const params = new URLSearchParams(window.location.search);
22+
if (value) {
23+
params.set('search', value);
24+
} else {
25+
params.delete('search');
26+
}
27+
window.history.replaceState({}, '', `${window.location.pathname}?${params.toString()}`);
28+
}
29+
30+
document.addEventListener('DOMContentLoaded', function () {
31+
const searchInput = document.getElementById('searchInput');
32+
const collectionTable = document.getElementById('collectionTable');
33+
const rows = collectionTable.getElementsByTagName('tr');
34+
35+
const searchValue = getSearchParameter();
36+
searchInput.value = searchValue;
37+
updateSearchResults(searchValue, rows);
38+
39+
searchInput.addEventListener('input', function () {
40+
const searchValue = searchInput.value.toLowerCase();
41+
setSearchParameter(searchValue);
42+
updateSearchResults(searchValue, rows);
43+
});
44+
});

templates.html

Lines changed: 1 addition & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -50,48 +50,4 @@ <h1 style="margin-left: auto;margin-right: auto;">Available Dev Container Templa
5050
{% endfor %}
5151
</table>
5252

53-
<script>
54-
const searchInput = document.getElementById('searchInput');
55-
const collectionTable = document.getElementById('collectionTable');
56-
const rows = collectionTable.getElementsByTagName('tr');
57-
58-
function updateSearchResults(searchValue) {
59-
for (let i = 1; i < rows.length; i++) {
60-
const name = rows[i].getElementsByTagName('td')[0].textContent.toLowerCase();
61-
const maintainer = rows[i].getElementsByTagName('td')[1].textContent.toLowerCase();
62-
63-
if (name.includes(searchValue) || maintainer.includes(searchValue)) {
64-
rows[i].style.display = '';
65-
} else {
66-
rows[i].style.display = 'none';
67-
}
68-
}
69-
}
70-
71-
function getSearchParameter() {
72-
const params = new URLSearchParams(window.location.search);
73-
return params.get('search') || '';
74-
}
75-
76-
function setSearchParameter(value) {
77-
const params = new URLSearchParams(window.location.search);
78-
if (value) {
79-
params.set('search', value);
80-
} else {
81-
params.delete('search');
82-
}
83-
window.history.replaceState({}, '', `${window.location.pathname}?${params.toString()}`);
84-
}
85-
86-
searchInput.addEventListener('input', function () {
87-
const searchValue = searchInput.value.toLowerCase();
88-
setSearchParameter(searchValue);
89-
updateSearchResults(searchValue);
90-
});
91-
92-
document.addEventListener('DOMContentLoaded', function () {
93-
const searchValue = getSearchParameter();
94-
searchInput.value = searchValue;
95-
updateSearchResults(searchValue);
96-
});
97-
</script>
53+
<script src="js/search.js"></script>

0 commit comments

Comments
 (0)