×
Create a new article
Write your page title here:
We currently have 302 articles on Knights of the Olde Speech. Type your article name above or click on one of the titles below and start writing!



Knights of the Olde Speech

MediaWiki:MusicPlayer.js: Difference between revisions

No edit summary
No edit summary
Line 10: Line 10:
         node.classList.add("EmulatorFrame");
         node.classList.add("EmulatorFrame");
         node.classList.add("rail-module");
         node.classList.add("rail-module");
      /* node.style.border = 0;
        node.style.frameborder = 0;
        node.style.height = 120;
        node.style.scrolling = 'no';
        node.src = 'https://www.youtube.com/embed/BHfqz68xEY8?version=3&enablejsapi=1';
        node.style.width = 160;
        node.style.position = "relative";
        node.style.display = "none";*/
         rail.insertBefore(node, document.getElementById('WikiaAdInContentPlaceHolder'));
         rail.insertBefore(node, document.getElementById('WikiaAdInContentPlaceHolder'));
          
          
Line 59: Line 51:


function allowMusic() {
function allowMusic() {
    iframe.style.display = 'block';
     isAllowed = !isAllowed;
     isAllowed = !isAllowed;
     //if (playerReady) player.playVideo();
     //if (playerReady) player.playVideo();
Line 113: Line 104:
   begins.each(function() {
   begins.each(function() {
       if (elementInView($(this))) {
       if (elementInView($(this))) {
          iframe.style.display = 'block';
           var vol = player.getVolume();
           var vol = player.getVolume();
           player.setVolume(0);
           player.setVolume(0);
           player.playVideo();
           player.videoId = $(this).data-url;
          if (playerReady && isAllowed) player.playVideo();
           fadein(vol);
           fadein(vol);
           return false;
           return false;
Line 125: Line 118:
         player.stopVideo();
         player.stopVideo();
         player.setVolume(vol);
         player.setVolume(vol);
        iframe.style.display = 'none';
         return false;
         return false;
       }
       }
   });
   });
});
});

Revision as of 13:57, 10 June 2020

//Emulator iframe with one of my videos as the default src
//Meant to be used with [Template:MusicPlayer] for stories
document.getElementsByTagName('body')[0].onload = function() {
    if (document.getElementById('musicPlayerAllow') !== null) {
        var rail = document.getElementById('WikiaRail');
        var node = document.createElement("div");
        var textnode = document.createTextNode("Loading iframe...");
        node.appendChild(textnode);
        node.id = "EmulatorFrame";
        node.classList.add("EmulatorFrame");
        node.classList.add("rail-module");
        rail.insertBefore(node, document.getElementById('WikiaAdInContentPlaceHolder'));
        
        
        // 2. This code loads the IFrame Player API code asynchronously.
      var tag = document.createElement('script');

      tag.src = "https://www.youtube.com/iframe_api";
      var firstScriptTag = document.getElementsByTagName('script')[0];
      firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
    }
};

      // 3. This function creates an <iframe> (and YouTube player)
      //    after the API code downloads.
      var player;
      var playerReady = false;
      var isAllowed = false;
      var iframe;
      function onYouTubeIframeAPIReady() {
        player = new YT.Player('EmulatorFrame', {
          height: '120',
          width: '160',
          videoId: 'BHfqz68xEY8',
          events: {
            'onReady': onPlayerReady
          }
        });
        iframe = document.getElementById('EmulatorFrame');
        iframe.style.display = "none";
      }
      

function onPlayerReady(event) {
        playerReady = true;
      }
      




function allowMusic() {
    isAllowed = !isAllowed;
    //if (playerReady) player.playVideo();
}

var mpa = document.getElementById('musicPlayerAllow');
mpa.setAttribute('onclick', 'allowMusic()');

function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

async function fadein(vol) {
    var i = 0;
    while (i < vol) {
        ++i;
        player.setVolume(i);
        await sleep(20);
    }
}
/*
var vol = player.getVolume();
player.setVolume(0);
player.playVideo();
fadein(vol);
*/

async function fadeout() {
    var vol = player.getVolume();
    var i = vol;
    while (i > 0) {
        --i;
        player.setVolume(i);
        await sleep(20);
    }
    return vol;
}

/*
var vol = fadeout();
player.stopVideo();
player.setVolume(vol);
*/

function elementInView(elem){
  return $(window).scrollTop() < $(elem).offset().top + $(elem).height() ;
}

begins = document.find('musicPlayerBegin');
ends = document.find('musicPlayerEnd');

$(window).scroll(function(){
  begins.each(function() {
      if (elementInView($(this))) {
          iframe.style.display = 'block';
          var vol = player.getVolume();
          player.setVolume(0);
          player.videoId = $(this).data-url;
          if (playerReady && isAllowed) player.playVideo();
          fadein(vol);
          return false;
      }
  });
  ends.each(function() {
      if (elementInView($(this))) {
         var vol = fadeout();
         player.stopVideo();
         player.setVolume(vol);
         iframe.style.display = 'none';
         return false;
      }
  });
});