From f8f4cd8320c3ddedd8c23118db38ec4aae0273bd Mon Sep 17 00:00:00 2001 From: YOUR_NAME Date: Sat, 4 Feb 2023 23:53:09 -0600 Subject: [PATCH] reinvent the wheel --- wheel2.js | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 wheel2.js diff --git a/wheel2.js b/wheel2.js new file mode 100644 index 0000000..ec67078 --- /dev/null +++ b/wheel2.js @@ -0,0 +1,44 @@ +// WHEEL2 HOW 2 USE +// ===================== +// written by carly smallbird. GPL-3 license +// this should play fine with jquery. i'm not a snob +// +// data-wheel-timer = put this on the body with a number in miliseconds in it if you +// want to change the default timer +// data-wheel-get = name of callback function to periodically get data from +// data-wheel-update = name of callback function to periodically put data to +// data-wheel-transformer = function to call after getting data to transform it. +// requires above data-wheel-get + +((wheel2) => { + wheel2.updateTime = + 5000 || + document.getElementsByTagName("body").getAttribute("data-wheel-timer") ? + parseInt(document.getElementsByTagName("body").getAttribute("data-wheel-timer")) : + null; + + wheel2.init = () => { + const gettables = document.querySelectorAll("[data-wheel-get]"); + const updateables = document.querySelectorAll("[data-wheel-update]"); + gettables.map((elt) => { + const fxn = elt.getAttribute("data-wheel-get"); + const transformer = elt.getAttribute("data-wheel-transformer"); + setInterval(() => { + const getData = new Promise(() => { + window[fxn](); + }); + if (transformer) { + getData.then(window[transformer]()); + } + }, wheel2.updateTime); + }); + updateables.map((elt) => { + const fxn = elt.getAttribute("data-wheel-update"); + setInterval(() => { + window[fxn](); + }, wheel2.updateTime); + }) + } +}); + +window.addEventListener('load', wheel2.init);