aboutsummaryrefslogtreecommitdiff
path: root/static/js/search.js
blob: 4b9f3a2e45d36796a2a8d2cd8f827f4af165d613 (plain)
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
const citySearch = document.getElementById('citySearch');
citySearch.addEventListener('keyup', (e) => {
    const fuse = new Fuse(cities, {
        keys: ['city'],
        threshold: 0.3,
    });
    const results = fuse.search(e.target.value);
    if (results.length > 0) {
        const resultContainer = document.getElementById('result_container');
        resultContainer.classList.remove('hidden');
        document.getElementById('results').innerHTML = "";
        for (var result of results) {
            const listElement = document.createElement('li');
            listElement.classList.add('flex', 'items-center', 'space-x-2', 'py-2', 'px-4', 'relative', 'w-full', 'hover:bg-blue-600', 'hover:text-white', 'cursor-pointer');
            listElement.setAttribute('latitude', result.item.latitude);
            listElement.setAttribute('longitude', result.item.longitude);
            listElement.innerHTML = `<span class="text-sm font-semibold">${result.item.city}</span>`;
            listElement.addEventListener('click', (e) => {
                citySearch.value = e.target.innerText;
                resultContainer.classList.add('hidden');
                city = {
                    city: e.target.innerText,
                    latitude: e.target.getAttribute('latitude'),
                    longitude: e.target.getAttribute('longitude')
                };
                reRenderMap(city);
            });
            document.getElementById('results').appendChild(listElement);
        }
    } else {
        document.getElementById('result_container').classList.add('hidden');
    }
});