All files / src/visual/time currentMinuteElements.js

13.33% Statements 4/30
0% Branches 0/14
28.57% Functions 2/7
13.33% Lines 4/30
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184                      31x                                                                                                                                                                                                                                                                                                         370x               370x               31x              
/**
 * Imports the config module
 * @module config
 */
import config from "../../config.js";
 
/**
 * Handles all of the current time minutes elements.
 *
 * @module visual/time/CurrentMinuteElements
 */
let CurrentMinuteElements = (function() {
  /**
   * Syncs the current minutes elements.
   *
   * @param {Integer} minutes - The current audio minutes.
   */
  function sync(minutes) {
    syncGlobal(minutes);
    syncPlaylist(minutes);
    syncSong(minutes);
    syncSongInPlaylist(minutes);
  }
 
  /**
   * Syncs the global current minutes elements.
   *
   * @param {Integer} minutes - The current audio minutes.
   */
  function syncGlobal(minutes) {
    /*
			Get all of the minute selectors
		*/
    const currentMinuteSelectors = document.querySelectorAll(
      ".amplitude-current-minutes"
    );
 
    /*
			Set the current minute selector's inner html to minutes passed in.
		*/
    for (let i = 0; i < currentMinuteSelectors.length; i++) {
      let playlist = currentMinuteSelectors[i].getAttribute(
        "data-amplitude-playlist"
      );
      let songIndex = currentMinuteSelectors[i].getAttribute(
        "data-amplitude-song-index"
      );
 
      /*
        Updates the current minute selector for a global display.
      */
      if (playlist == null && songIndex == null) {
        currentMinuteSelectors[i].innerHTML = minutes;
      }
    }
  }
 
  /**
   * Syncs the playlist minutes elements.
   *
   * @param {Integer} minutes - The current audio minutes.
   */
  function syncPlaylist(minutes) {
    /*
			Get all of the minute selectors
		*/
    const currentMinutePlaylistSelectors = document.querySelectorAll(
      '.amplitude-current-minutes[data-amplitude-playlist="' +
        config.active_playlist +
        '"]'
    );
 
    /*
			Set the current minute selector's inner html to minutes passed in.
		*/
    for (let i = 0; i < currentMinutePlaylistSelectors.length; i++) {
      let songIndex = currentMinutePlaylistSelectors[i].getAttribute(
        "data-amplitude-song-index"
      );
 
      /*
        Updates the current minute selector for a global display.
      */
      if (songIndex == null) {
        currentMinutePlaylistSelectors[i].innerHTML = minutes;
      }
    }
  }
 
  /**
   * Syncs the current song minutes elements.
   *
   * @param {Integer} minutes - The current audio minutes.
   */
  function syncSong(minutes) {
    if (config.active_playlist == null) {
      /*
  			Get all of the minute selectors
  		*/
      const currentMinuteSongSelectors = document.querySelectorAll(
        '.amplitude-current-minutes[data-amplitude-song-index="' +
          config.active_index +
          '"]'
      );
 
      /*
  			Set the current minute selector's inner html to minutes passed in.
  		*/
      for (let i = 0; i < currentMinuteSongSelectors.length; i++) {
        let playlist = currentMinuteSongSelectors[i].getAttribute(
          "data-amplitude-playlist"
        );
 
        /*
          Updates the current minute selector for a global display.
        */
        if (playlist == null) {
          currentMinuteSongSelectors[i].innerHTML = minutes;
        }
      }
    }
  }
 
  /**
   * Syncs the current song in playlist minutes elements.
   *
   * @param {Integer} minutes - The current audio minutes.
   */
  function syncSongInPlaylist(minutes) {
    let activePlaylistIndex =
      config.active_playlist != "" && config.active_playlist != null
        ? config.playlists[config.active_playlist].active_index
        : null;
 
    /*
			Get all of the minute selectors
		*/
    const currentMinutePlaylistSongSelectors = document.querySelectorAll(
      '.amplitude-current-minutes[data-amplitude-playlist="' +
        config.active_playlist +
        '"][data-amplitude-song-index="' +
        activePlaylistIndex +
        '"]'
    );
 
    /*
			Set the current minute selector's inner html to minutes passed in.
		*/
    for (let i = 0; i < currentMinutePlaylistSongSelectors.length; i++) {
      currentMinutePlaylistSongSelectors[i].innerHTML = minutes;
    }
  }
 
  /**
   * Reset the current times.
   */
  function resetTimes() {
    /*
      Gets the minute display elements
    */
    let minuteSelectors = document.querySelectorAll(
      ".amplitude-current-minutes"
    );
 
    /*
      Iterates over all of the minute selectors and sets the inner HTML
      to 00.
    */
    for (var i = 0; i < minuteSelectors.length; i++) {
      minuteSelectors[i].innerHTML = "00";
    }
  }
 
  /**
   * Returns the publically facing methods.
   */
  return {
    sync: sync,
    resetTimes: resetTimes
  };
})();
 
export default CurrentMinuteElements;