const leftform = document.getElementById('left-search-form'); const rightform = document.getElementById('right-search-form'); const leftresults = document.getElementById('left-search-results'); const rightresults = document.getElementById('right-search-results'); const leftsearchform = document.getElementById('left-search-input'); const rightsearchform = document.getElementById('right-search-input'); const searchbutton = document.getElementById('search-button'); const wikiendpointSearch = `/search?q=`; const wikiendpointRandom = `/random`; var selectedLeft = false; var selectedRight = false; leftform.addEventListener('submit', (event) => { event.preventDefault() }); rightform.addEventListener('submit', (event) => { event.preventDefault() }); //leftsearchform.addEventListener('change', handleSubmitLeft); //rightsearchform.addEventListener('change', handleSubmitRight); // Handles both search of articles async function handleSubmitBoth() { await handleSubmitLeft() await handleSubmitRight() searchbutton.disabled = true; } // Handles search of start article async function handleSubmitLeft(event) { leftresults.innerHTML = ''; selectedLeft = false; const inputVal = document.getElementById('left-search-input').value.trim(); try { const results = await searchWikipedia(inputVal); displayResults(results, leftresults, "left-item") } catch (err) { console.log(err); alert('Failed to search wikipedia'); } } // Handles search of end article async function handleSubmitRight(event) { rightresults.innerHTML = ''; selectedRight = false; const inputVal = document.getElementById('right-search-input').value.trim(); try { const results = await searchWikipedia(inputVal); displayResults(results, rightresults, "right-item") } catch (err) { console.log(err); alert('Failed to search wikipedia'); } } // Handles selection of search results async function handleSelect(event, side) { if (side === "left-item") { if (selectedLeft != false) { selectedLeft.classList.toggle('selected-button'); } selectedLeft = event.target; selectedLeft.classList.toggle('selected-button'); } else { if (selectedRight != false) { selectedRight.classList.toggle('selected-button'); } selectedRight = event.target; selectedRight.classList.toggle('selected-button'); } if (selectedLeft != false && selectedRight != false) { searchbutton.disabled = false; } else { searchbutton.disabled = true; } // console.log(side, event); } // Searches wikipedia for searchQuery and returns the results async function searchWikipedia(searchQuery) { const response = await fetch(wikiendpointSearch + searchQuery); if (!response.ok) { throw Error(response.statusText); } const json = await response.json(); return json; } // Gets random pages from wikipedia and returns the results async function randomWikipedia() { const response = await fetch(wikiendpointRandom); if (!response.ok) { throw Error(response.statusText); } const json = await response.json(); return json; } // Displays the results on the given side function displayResults(results, side, sideclass) { results.result.forEach(result => { const url = `https://en.wikipedia.org/?curid=${result.pageid}`; side.insertAdjacentHTML( "beforeend", `
` ); }); } // Generates random articles on both sides async function RandomArticle() { leftresults.innerHTML = ''; selectedLeft = false; rightresults.innerHTML = ''; selectedRight = false; const results = await randomWikipedia(); results.result.forEach((result, index) => { let side = leftresults; let sideclass = "left-item"; if (index % 2 == 0) { side = rightresults; sideclass = "right-item"; } side.insertAdjacentHTML( "beforeend", `
` ); }); } // Goes to the path search page with current selected stuff function Search() { if (selectedLeft === false || selectedRight === false) { return } const dst = selectedLeft.childNodes[1].childNodes[1].textContent const src = selectedRight.childNodes[1].childNodes[1].textContent window.location.href = `/result?start=${src}&end=${dst}` }