Jake Vanderwerf
2025-11-23 d7dbe7fee362d587dfc334135d9581b6216a4295
assets/js/dash/UtilityFunctions.js
@@ -127,7 +127,7 @@
 */
window.getTemplate = function (template){
   if (window.templates.size === 0) {
      loadTemplates();
      window.loadTemplates();
   }
   if(window.templates.has(template)){
      return window.templates.get(template).cloneNode(true);
@@ -189,22 +189,25 @@
 * @param icon
 * @returns {Node | ActiveX.IXMLDOMNode}
 */
window.getIcon = function getIcon(icon){
window.icon = null;
window.getIcon = function getIcon(icon, style = ''){
   if (typeof icon === 'undefined') {
      return '';
   }
   if(!window.jvbIcons){
      window.jvbIcons = new Map();
   if (!window.icon) {
      window.icon = document.createElement('i');
      window.icon.className = 'icon';
      window.icon.ariaHidden = true;
   }
   if(!window.jvbIcons.has(icon) && jvbSettings.icons[icon]){
      let temp = document.createElement('div');
      temp.innerHTML = jvbSettings.icons[icon];
      window.jvbIcons.set(icon, temp.firstElementChild.cloneNode(true));
      temp.remove();
   let theIcon = window.icon.cloneNode(true);
   if (style !== '' && ['regular', 'bold', 'duotone', 'fill', 'light', 'thin' ].includes('style')) {
      style = `-${style.slice(0, 2)}`;
   } else {
      style = '';
   }
   return window.jvbIcons.get(icon)?.cloneNode(true);
   theIcon.classList.add(`icon-${icon}${style}`);
   return theIcon;
}
/**
@@ -420,7 +423,22 @@
window.showToast = function(message, type='success', actions={}){
   window.jvbNotifications.showToast(message, type, actions);
}
window.dateFormatter = new Intl.DateTimeFormat('en-CA', {
      year: 'numeric',
      month: 'long',
      day: 'numeric',
      hour: '2-digit',
      minute: '2-digit',
      second: '2-digit',
      timeZoneName: 'short'
   });
window.formatDate = function(date) {
   if (!(date instanceof Date && !isNaN(date))) {
      date = new Date(date);
   }
   return window.dateFormatter.format(date);
}
/**
 * Outputs the set text as if a typewriter were writing it
@@ -513,6 +531,9 @@
}
window.targetCheck = function (e, selector) {
   if (Array.isArray(selector)) {
      selector = selector.join(',');
   }
   if (typeof selector !== 'string') {
      return false;
   }
@@ -801,8 +822,6 @@
   schedule(key, callback, delay = 1000) {
      this.cancel(key);
      console.log('Scheduling action: ', key);
      console.log('With callback', callback);
      this.timeouts.set(key, setTimeout(() => {
         callback();
         this.timeouts.delete(key);
@@ -811,7 +830,6 @@
   cancel(key) {
      if (this.timeouts.has(key)) {
         console.log('Cancelling ', key);
         clearTimeout(this.timeouts.get(key));
         this.timeouts.delete(key);
      }
@@ -819,7 +837,6 @@
   cleanup() {
      for (let timeout of this.timeouts.values()) {
         console.log('clearing timeout: ', timeout);
         clearTimeout(timeout);
      }
      this.timeouts.clear();