-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.js
More file actions
95 lines (76 loc) · 2.89 KB
/
Copy pathapp.js
File metadata and controls
95 lines (76 loc) · 2.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
const searchButton = document.querySelector('#search-button')
const randomButton = document.querySelector('#random-button')
const searchInput = document.querySelector('input')
const searchResultsList = document.querySelector('#search-results')
document.addEventListener('DOMContentLoaded', (e) => {
let params = new URL(document.location.toString()).searchParams;
let query = params.get('query')
if (query == null || query == undefined) {
return
} else {
search(e)
}
})
let api = "https://handmade-api-34lhk.ondigitalocean.app"
if (location.hostname == "localhost" || location.hostname == "127.0.0.1") {
api = "http://127.0.0.1:5000"
}
searchButton.addEventListener('click', searchButtonPressed)
searchInput.addEventListener('keyup', (e) => {
if (e.key === "Enter") {
e.preventDefault();
searchButton.click()
}
})
randomButton.addEventListener('click', random)
async function random(event) {
randomButton.textContent = "Redirecting..."
const response = await fetch(`${api}/random`, {
method: "GET"
});
const data = await response.json()
window.location = data['url']['url']
}
async function searchButtonPressed(event) {
const params = new URLSearchParams();
params.append("query", searchInput.value);
window.location.href = `${window.location.pathname}?${params}`
}
async function search(event) {
searchResultsList.innerHTML = "<p>Searching...</p>"
let params = new URL(document.location.toString()).searchParams;
let query = params.get('query')
searchInput.value = query
const response = await fetch(`${api}/search?${params}`, {
method: "GET"
});
const data = await response.json()
const results = data['results']
searchResultsList.innerHTML = ""
for (const element of results) {
let title = element[1]['title']
if (title == undefined) {
title = element[0]
}
let hostname = element[1]['hostname']
let url = element[0]
let hostnameElement = document.createElement("p")
let hostnameTextNode = document.createTextNode(hostname)
hostnameElement.appendChild(hostnameTextNode)
hostnameElement.className = "result-hostname"
let urlElement = document.createElement("a")
let urlTextNode = document.createTextNode(title)
urlElement.appendChild(urlTextNode)
urlElement.className = "result-url"
urlElement.href = url
let elementContainer = document.createElement("div")
elementContainer.appendChild(hostnameElement)
elementContainer.appendChild(urlElement)
elementContainer.className = "search-result"
searchResultsList.appendChild(elementContainer)
}
if (results.length == 0) {
searchResultsList.innerHTML = `<p>There are no entries with ALL the words in your query.</p>`
}
console.log(data['results'])
}