All files / src/visual/time currentSecondElements.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                      31x                                                                                                                                                                                                                                                                                                       370x               370x               31x              
/**
 * Imports the config module
 * @module config
 */
import config from "../../config.js";
 
/**
 * Handles all of the current time seconds elements.
 *
 * @module visual/time/CurrentSecondElements
 */
let CurrentSecondElements = (function() {
  /**
   * Syncs the current seconds elements.
   *
   * @param {Integer} seconds - The current audio seconds.
   */
  function sync(seconds) {
    syncGlobal(seconds);
    syncPlaylist(seconds);
    syncSong(seconds);
    syncSongInPlaylist(seconds);
  }
 
  /**
   * Syncs the global current seconds elements.
   *
   * @param {Integer} seconds - The current audio seconds.
   */
  function syncGlobal(seconds) {
    /*
			Get all of the second selectors
		*/
    const currentSecondSelectors = document.querySelectorAll(
      ".amplitude-current-seconds"
    );
 
    /*
			Set the current second selector's inner html to seconds passed in.
		*/
    for (let i = 0; i < currentSecondSelectors.length; i++) {
      let playlist = currentSecondSelectors[i].getAttribute(
        "data-amplitude-playlist"
      );
      let songIndex = currentSecondSelectors[i].getAttribute(
        "data-amplitude-song-index"
      );
 
      /*
        Updates the current second selector for a global display.
      */
      if (playlist == null && songIndex == null) {
        currentSecondSelectors[i].innerHTML = seconds;
      }
    }
  }
 
  /**
   * Syncs the playlist seconds elements.
   *
   * @param {Integer} seconds - The current audio seconds.
   */
  function syncPlaylist(seconds) {
    /*
			Get all of the second selectors
		*/
    const currentSecondPlaylistSelectors = document.querySelectorAll(
      '.amplitude-current-seconds[data-amplitude-playlist="' +
        config.active_playlist +
        '"]'
    );
 
    /*
			Set the current second selector's inner html to seconds passed in.
		*/
    for (let i = 0; i < currentSecondPlaylistSelectors.length; i++) {
      let songIndex = currentSecondPlaylistSelectors[i].getAttribute(
        "data-amplitude-song-index"
      );
 
      /*
        Updates the current second selector for a global display.
      */
      if (songIndex == null) {
        currentSecondPlaylistSelectors[i].innerHTML = seconds;
      }
    }
  }
 
  /**
   * Syncs the current song seconds elements.
   *
   * @param {Integer} seconds - The current audio seconds.
   */
  function syncSong(seconds) {
    if (config.active_playlist == null) {
      /*
  			Get all of the second selectors
  		*/
      const currentSecondSongSelectors = document.querySelectorAll(
        '.amplitude-current-seconds[data-amplitude-song-index="' +
          config.active_index +
          '"]'
      );
 
      /*
  			Set the current second selector's inner html to seconds passed in.
  		*/
      for (let i = 0; i < currentSecondSongSelectors.length; i++) {
        let playlist = currentSecondSongSelectors[i].getAttribute(
          "data-amplitude-playlist"
        );
 
        /*
          Updates the current second selector for a global display.
        */
        if (playlist == null) {
          currentSecondSongSelectors[i].innerHTML = seconds;
        }
      }
    }
  }
 
  /**
   * Syncs the current song in playlist seconds elements.
   *
   * @param {Integer} seconds - The current audio seconds.
   */
  function syncSongInPlaylist(seconds) {
    let activePlaylistIndex =
      config.active_playlist != "" && config.active_playlist != null
        ? config.playlists[config.active_playlist].active_index
        : null;
    /*
			Get all of the second selectors
		*/
    const currentSecondPlaylistSongSelectors = document.querySelectorAll(
      '.amplitude-current-seconds[data-amplitude-playlist="' +
        config.active_playlist +
        '"][data-amplitude-song-index="' +
        activePlaylistIndex +
        '"]'
    );
 
    /*
			Set the current second selector's inner html to seconds passed in.
		*/
    for (let i = 0; i < currentSecondPlaylistSongSelectors.length; i++) {
      currentSecondPlaylistSongSelectors[i].innerHTML = seconds;
    }
  }
 
  /**
   * Reset the current seconds elements.
   */
  function resetTimes() {
    /*
      Gets the second display elements
    */
    let secondSelectors = document.querySelectorAll(
      ".amplitude-current-seconds"
    );
 
    /*
      Iterates over all of the second selectors and sets the inner HTML
      to 00.
    */
    for (var i = 0; i < secondSelectors.length; i++) {
      secondSelectors[i].innerHTML = "00";
    }
  }
 
  /**
   * Returns the publically facing methods.
   */
  return {
    sync: sync,
    resetTimes: resetTimes
  };
})();
 
export default CurrentSecondElements;