Tari / Prepared Spells

// ==UserScript==
// @name         Prepared Spells
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Display how many spell slots are prepared
// @license      MIT
// @author       Tari
// @match        https://app.roll20.net/editor/
// @grant        none
// ==/UserScript==

let maxAttunement = 0;
let currentAttunement = 0;

let updateDisplay = () => {
    let display = document.getElementById("attunementDisplay");
    if (display == null) {
        let parent = document.getElementsByClassName("sheet-spells")[1];
        parent = parent.getElementsByClassName("sheet-body")[0];
        if (parent == null) {
            return ;
        }

        let node = document.createElement("p");
        let text = document.createTextNode(currentAttunement.toString());
        node.appendChild(text);
        node.setAttribute("id", "attunementDisplay");

        parent.prepend(node);
    } else {
        display.innerHTML = currentAttunement.toString();
    }
};

let updateCount = () => {
    let elements = document.getElementsByClassName("sheet-prep-box");
    currentAttunement = 0;
    for (let element of elements) {
        if (element.checked == true) {
            currentAttunement += 1;
        }
    }
};

let clickFunction = (event) => {
    let target = event.target;
    if (target.className == "sheet-prep-box") {
        updateCount();
    }
    updateDisplay();
};

(function() {
    'use strict';
    document.body.addEventListener('click', clickFunction, true);
})();