Team:EPF-Lausanne/template/script.js

From 2013.igem.org

(Difference between revisions)
Cbroenni (Talk | contribs)
(Created page with "//Generate private namespace window.EPFL = (function(){ //Little hack to stop MediaWiki from replacing ampersands... var amp = unescape("%26"); return { init: function(...")
Newer edit →

Revision as of 16:55, 28 August 2013

//Generate private namespace window.EPFL = (function(){

 //Little hack to stop MediaWiki from replacing ampersands...
 var amp = unescape("%26");
 return {
   init: function(){
     EPFL.setupTitle();
     EPFL.setupTOC();
     $('p')
       .filter(function(){
         return $.trim($(this).text()) ===  && $.trim($(this).html()).length < 10;
       })
       .remove();
   },
   onLoad: function() {
     
   },
   setupTOC: function(){
     var toc = $("#toc");
     toc.remove();
     $(".paper").prepend(toc);
   },
   setupTitle: function(){
     var title = "";
     if(window.titleOverride !== undefined && window.titleOverride !== "" && window.titleOverride !== " " && window.titleOverride !== "{{{1}}}"){
       title = window.titleOverride;
     }else{
       var title = $($(".firstHeading")[0]).text();
       var prefix = "Team:EPF-Lausanne/";
       title = title.substr(prefix.length);
       titleParts = title.split("/");
       
       switch(titleParts[0]){
         case "Template":
           titleParts.shift();
           break;
       }
       
       var result = titleParts.join(" ");
       
       if(titleParts.length > 1){
         result = titleParts.shift()+": "+titleParts.join(" ");
       }
       
       if(result == ""){
         result = "Home";
       }
       title = result;
     }
     
     $("#pageTitle").text(title);
   }
 };

}());

if(!window.console){

 //Dummy console...
 window.console = {
   log: function(){ }
 };

}

window.Doodles = (function(){

 var SPACE_MIN = 80;
 var SPACE_MAX = 400;
 var WIDTH = 120;
 var MAX_DOODLES_PER_BAR = 100;
 var MAX_RETRIES = 100;
 
 var all = [
   //{ height: 114, src: "Team-EPF-Lausanne_Template_Doodle_Placeholder.png" },
   { height: 27, src: "Team-EPF-Lausanne_Doodle_Switch.png" },
   { height: 131, src: "Team-EPF-Lausanne_Doodle_Graph.png" },
   { height: 87, src: "Team-EPF-Lausanne_Doodle_Circuit.png" },
   { height: 138, src: "Team-EPF-Lausanne_Doodle_Centrifuge.png" },
   { height: 76, src: "Team-EPF-Lausanne_Doodle_Agarose.png" },
 
 
   { height: 156, src: "LED.png" },
   { height: 175, src: "Pipette.png" },
   { height: 141, src: "Team_epf_Resistance.png" },
   { height: 71, src: "Team_epf_Restrictionenzyme.png" },
   { height: 128, src: "Team_epf_Wellplate.png" },
   { height: 98, src: "Team_epf_Plasmid.png" }
 
 ];
 
 var isHomePage = function(){
   var title = $($(".firstHeading")[0]).text();
   var prefix = "Team:EPF-Lausanne/";
   title = title.substr(prefix.length);
   titleParts = title.split("/");
   
   switch(titleParts[0]){
     case "Template":
       titleParts.shift();
       break;
   }
   
   var result = titleParts.join(" ");
   
   if(result == ""){
     return true;
   }
   return false;
 }
 
 var contentHeight = 0;
 var doodleBars = [];
 var barUsage = [{max: 0, images: []}, {max: 0, images: []}];
 var previous = undefined;
 var firstLoad = true;
 
 return {
   onLoad: function(){
     if(firstLoad){
       var that = this;
       setTimeout(function(){ that.onLoad(); }, 1000);
       firstLoad = false;
     }
     
     //console.log("Doodle onload");
     contentHeight = $(".page-content").height() - 50;
     doodleBars = $(".doodle-bar");
     //doodleBars.height(contentHeight);
     
     this.addDoodles();
   },
   addDoodles: function(){
     //console.log("Adding doodles to left");
     
     if(isHomePage()){
       this.addDoodle(1, 400);
     }
     
     //Add a doodle at one of the sides (random) at y = 0
     this.addDoodle(Math.round(Math.random()), 0);
     
     for(var i = 0; i < MAX_DOODLES_PER_BAR; i++){
       if(!this.addDoodle(0)) break;
     }
     
     //console.log("Adding doodles to right");
     for(var i = 0; i < MAX_DOODLES_PER_BAR; i++){
       if(!this.addDoodle(1)) break;
     }
   },
   addDoodle: function(barNumber, nextDistance){
     //console.log("Trying to add doodle to", barNumber);
     var bar = $(doodleBars[barNumber]);
     var usage = barUsage[barNumber];
     
     //console.log("Current usage vs contentHeight: ", usage.max, contentHeight);
     if(usage.max > contentHeight) return false;
     
     if(nextDistance === undefined)
       nextDistance = SPACE_MIN + Math.floor(Math.random()*(SPACE_MAX-SPACE_MIN+1));
     
     var nextImage = all[Math.floor(Math.random()*all.length)];
     for(var i = 0; i < MAX_RETRIES; i++){
       if(previous == nextImage){
         nextImage = all[Math.floor(Math.random()*all.length)];
       }else{
         break;
       }
     }
     
     if(previous == nextImage) return false;
     
     previous = nextImage;
     
     if(usage.max + nextDistance + nextImage.height > contentHeight) return false;
     
var container = $("
")
         .css({
           "background": "url('"+nextImage.src+"')",
           "width": WIDTH+"px",
           "height": nextImage.height+"px",
           "margin-top": nextDistance+"px"
         });
     bar.append(container);
     /*
     var img = 
       $("<img>")
         .load(function(){ container.append(img); })
         .attr("width", WIDTH)
         .attr("height", nextImage.height)
         .attr("src", nextImage.src);*/
     
     usage.max += nextDistance + nextImage.height;
     
     return true;
   }
 };

})();

$(function(){

 EPFL.onLoad();

});

var oldRunOnloadHook = runOnloadHook; runOnloadHook = function(){

 EPFL.init();
 if (oldRunOnloadHook) oldRunOnloadHook();
};