Geni Auto Expand Bio

Expand Bio sections automatically.

// ==UserScript==
// @name         Geni Auto Expand Bio
// @namespace    [email protected]
// @version      1.4
// @description  Expand Bio sections automatically.
// @author       Tommi Rautava
// @license      CC0-1.0
// @match        https://www.geni.com/people/*
// ==/UserScript==

let LOOP_INTERVAL = 300;
let MAX_LOOP_COUNT = 20;
let loopCount = 0;

function clickBioAnchor() {
  "use strict";

  let readMoreElem = document.querySelector('a.toggle_link[id^="bio_"]');

  if (readMoreElem) {
    readMoreElem.click();
  }
}

function clickToShowMoreChildren() {
  let moreChildrenXpath = '//tr[@id="family_handprint"]//span[@style="display: inline;" or not(@style)]/a[@href="#"]';
  let moreChildrenResult = document.evaluate(moreChildrenXpath, document, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);
  let node;

  while (node = moreChildrenResult.iterateNext()) {
    node.click();
  }
}

function waitForBioAnchor(selector) {
  if (document.querySelector('a.toggle_link[id^="bio_"]')) {
    clickBioAnchor();
  } else {
    loopCount++;

    if (loopCount <= MAX_LOOP_COUNT) {
      setTimeout(waitForBioAnchor, LOOP_INTERVAL);
    } else {
      console.warn("Timeout");
    }
  }
}

(function () {
  waitForBioAnchor();
  clickToShowMoreChildren();
})();