Skip to content

Commit 4ae140d

Browse files
classabbyampthe-maldridge
authored andcommitted
add package search using url query params
this also updates the URL when searching normally
1 parent 50f1ed8 commit 4ae140d

1 file changed

Lines changed: 30 additions & 7 deletions

File tree

assets/js/voidsearch.js

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
let archs;
3535
let query;
3636
let form;
37+
let params;
3738

3839
let packages = [];
3940

@@ -46,22 +47,44 @@
4647
archs = $("#voidSearch_archs");
4748
query = $("#voidSearch_query");
4849
form = $("#voidSearch");
49-
form.submit(packageQuery);
50+
form.submit(formPackageQuery);
51+
params = new URLSearchParams(document.location.search.substring(1));
5052

5153
$.getJSON(uri("/v1/archs"))
52-
.done((data) => setArchitectures(data.data.sort()));
54+
.done((data) => {
55+
setArchitectures(data.data.sort());
56+
initPackageQuery();
57+
});
5358
}
5459

55-
function packageQuery(e) {
60+
function initPackageQuery() {
61+
// if there are query parameters arch and q, do a search for that query on that arch
62+
const arch = archs.val();
63+
const q = params.get("q");
64+
if (q !== null && q !== "") {
65+
query.val(q);
66+
packageQuery(arch, q);
67+
}
68+
}
69+
70+
function formPackageQuery(e) {
5671
e.preventDefault();
57-
query.addClass("loading");
72+
const arch = archs.val();
5873
const q = query.val().trim();
59-
$.getJSON(uri("/v1/query/" + archs.val(), { q: q }))
74+
if (q !== null && q !== "") {
75+
packageQuery(arch, q);
76+
}
77+
}
78+
79+
function packageQuery(arch, q) {
80+
query.addClass("loading");
81+
$.getJSON(uri("/v1/query/" + arch, { q: q }))
6082
.done((data) => {
6183
packages = data.data || [];
6284
showPackages(packages, false, q);
6385
})
6486
.always(() => { query.removeClass("loading"); });
87+
history.replaceState(null, null, "?arch=" + arch + "&q=" + q);
6588
}
6689

6790
function packageCell(pkg, cellType) {
@@ -132,8 +155,8 @@
132155
}
133156

134157
function setArchitectures(archNames) {
135-
// Get the current value of the select
136-
const val = archs.val();
158+
// Get the current value of the select from url params
159+
let val = params.get("arch");
137160
let found = false;
138161
let seenX86_64 = false;
139162
archs.children().remove();

0 commit comments

Comments
 (0)