User:Acagastya/searchWP.js

From Wikinews, the free news source you can write!
Jump to navigation Jump to search

Note: After saving, you may have to bypass your browser's cache to see the changes. Mozilla / Firefox / Safari: hold down Shift while clicking Reload, or press Ctrl-Shift-R (Cmd-Shift-R on Apple Mac); IE: hold Ctrl while clicking Refresh, or press Ctrl-F5; Konqueror: simply click the Reload button, or press F5; Opera users may need to completely clear their cache in Tools→Preferences. — More skins

// function doSomeThing() {
//   const word = prompt('Check on enwp for:');
//   if (!word.length) return;
//   getDataFromENWP(word);
// }

async function getDataFromENWP(word = '') {
  const APIURL = `https://en.wikipedia.org/w/api.php?action=query&list=search&format=json&origin=*&srsearch=`;
  const URL = APIURL + word;
  const fetchedData = await fetch(URL);
  const parsed = await fetchedData.json();
  const res = parsed.query.search;
  if (res.length) {
    const titles = res.map(el => el.title);
    const message = `The following pages are available on ENWP:\n\n${titles.join(
      ',\n'
    )}`;
    alert(message);
  }
}

// looks like
//    <div id="wpSearchForm">
//      <input id="wpSearch" type="text" placeholder="Search WP">
//      <button type="submit" value="Search" onclick="searchWP()>Search</button>
//   </div>
//

function searchWP() {
  const word = document.getElementById('wpSearch').value;
  console.log(word);
  if (!word.length) return;
  getDataFromENWP(word);
  return false;
}

function showForm() {
  const bodyContent = document.getElementById('bodyContent');
  const form = createForm();
  bodyContent.prepend(form);
}

function createFormInput() {
  // create input
  const formInput = document.createElement('input');
  // create type = 'input'
  const formInputType = document.createAttribute('type');
  formInputType.value = 'text';
  // create id = 'wpSearch'
  const formInputId = document.createAttribute('id');
  formInputId.value = 'wpSearch';
  // create placeholder = 'Search WP'
  const formInputPlaceHolder = document.createAttribute('placeholder');
  formInputPlaceHolder.value = 'Search WP';
  // add type, id, placeholder to input
  formInput.setAttributeNode(formInputType);
  formInput.setAttributeNode(formInputId);
  formInput.setAttributeNode(formInputPlaceHolder);
  return formInput;
}

function createFormSubmit() {
  // create input
  const formInputSubmit = document.createElement('button');
  // create type = 'submit'
  const formInputSubmitType = document.createAttribute('type');
  formInputSubmitType.value = 'submit';
  // create value = 'Submit'
  const formInputSubmitValue = document.createAttribute('value');
  formInputSubmitValue.value = 'Search';
  // create onsubmit = 'searchWP()'
  const formInputSubmitONSUBMIT = document.createAttribute('onclick');
  formInputSubmitONSUBMIT.value = 'searchWP()';
  // add type, value, onsubmit to input
  formInputSubmit.setAttributeNode(formInputSubmitType);
  formInputSubmit.setAttributeNode(formInputSubmitValue);
  formInputSubmit.setAttributeNode(formInputSubmitONSUBMIT);
  formInputSubmit.innerText = 'Search';
  return formInputSubmit;
}

function createForm() {
  // create form
  const form = document.createElement('div');
  // create id = 'wpSearchForm'
  const formId = document.createAttribute('id');
  formId.value = 'wpSearchForm';
  // add id to form
  form.setAttributeNode(formId);
  // append formInput
  const formInput = createFormInput();
  form.appendChild(formInput);
  // append formSubmit
  const formInputSubmit = createFormSubmit();
  form.appendChild(formInputSubmit);
  return form;
}

setTimeout(showForm, 0);