Difference between revisions of "Team:Slovenia/libraries/custom-js"

Line 242: Line 242:
 
     console.log("Injecting header");
 
     console.log("Injecting header");
 
     var menu = "<div class='submenu' id='projectSubmenu'> \
 
     var menu = "<div class='submenu' id='projectSubmenu'> \
<div class='menu' style = 'position: absolute; left: 0'> \
+
<div class='menu'> \
 
<a href='https://2016.igem.org/Team:Slovenia/Description' \
 
<a href='https://2016.igem.org/Team:Slovenia/Description' \
 
  class='item'>Description</a> \
 
  class='item'>Description</a> \
Line 258: Line 258:
 
</div> \
 
</div> \
 
<div class='submenu' id='partsSubmenu'> \
 
<div class='submenu' id='partsSubmenu'> \
<div class='menu' style = 'position: absolute; left: 50%'> \
+
<div class='menu' style = 'position: absolute; right: 15%'> \
 
<a href='https://2016.igem.org/Team:Slovenia/Basic_Part' \
 
<a href='https://2016.igem.org/Team:Slovenia/Basic_Part' \
 
  class='item'>Basic Part</a> \
 
  class='item'>Basic Part</a> \
Line 269: Line 269:
 
<div class='submenu' id='notebookSubmenu'> \
 
<div class='submenu' id='notebookSubmenu'> \
 
<!-- this is notebook submenu --> \
 
<!-- this is notebook submenu --> \
<div class='menu' style = 'position: absolute; left: 50%'>\
+
<div class='menu' style = 'position: absolute; right: 15%'>\
 
<a href='https://2016.igem.org/Team:Slovenia/Notebook/Protocols' class='item'>Protocols</a> \
 
<a href='https://2016.igem.org/Team:Slovenia/Notebook/Protocols' class='item'>Protocols</a> \
 
<a href='https://2016.igem.org/Team:Slovenia/Notebook/LogBook' class='item'>Log book</a> \
 
<a href='https://2016.igem.org/Team:Slovenia/Notebook/LogBook' class='item'>Log book</a> \
Line 291: Line 291:
 
<div class='submenu' id='ideaSubmenu'> \
 
<div class='submenu' id='ideaSubmenu'> \
 
<!-- this is idea submenu -->\
 
<!-- this is idea submenu -->\
<div class='menu' style = 'position: absolute; left: 0'> \
+
<div class='menu'> \
 
<a href='https://2016.igem.org/Team:Slovenia/Idea/Challenge' class='item'>Challenge</a> \
 
<a href='https://2016.igem.org/Team:Slovenia/Idea/Challenge' class='item'>Challenge</a> \
 
<a href='https://2016.igem.org/Team:Slovenia/Idea/Solution' class='item'>Solution</a> \
 
<a href='https://2016.igem.org/Team:Slovenia/Idea/Solution' class='item'>Solution</a> \
Line 297: Line 297:
 
</div> \
 
</div> \
 
<div class='submenu' id='mechanosensingSubmenu'> \
 
<div class='submenu' id='mechanosensingSubmenu'> \
<div class='menu' style = 'position: absolute; left: 0'> \
+
<div class='menu'> \
 
<a href='https://2016.igem.org/Team:Slovenia/Mechanosensing/Overview' class='item'>Overview</a> \
 
<a href='https://2016.igem.org/Team:Slovenia/Mechanosensing/Overview' class='item'>Overview</a> \
 
<a href='https://2016.igem.org/Team:Slovenia/Mechanosensing/Mechanosensitive_channels' class='item'>Mechanosensitive channels</a> \
 
<a href='https://2016.igem.org/Team:Slovenia/Mechanosensing/Mechanosensitive_channels' class='item'>Mechanosensitive channels</a> \
Line 312: Line 312:
 
</div> \
 
</div> \
 
<div class='submenu' id='proteaseSignallingSubmenu'> \
 
<div class='submenu' id='proteaseSignallingSubmenu'> \
<div class='menu' style = 'position: absolute; left: 0' > \
+
<div class='menu'> \
 
<a href='https://2016.igem.org/Team:Slovenia/Protease_signalling/Overview' class='item'>Overview</a> \
 
<a href='https://2016.igem.org/Team:Slovenia/Protease_signalling/Overview' class='item'>Overview</a> \
 
<a href='https://2016.igem.org/Team:Slovenia/Protease_signalling/Reporters' class='item'>Reporters</a> \
 
<a href='https://2016.igem.org/Team:Slovenia/Protease_signalling/Reporters' class='item'>Reporters</a> \

Revision as of 18:30, 14 October 2016

function reloader() {

   try {
       console.log('start');
       $('.ui.sticky.global').sticky({
           context: '#context',
           offset: 16.5
       });
       $('.ui.sticky.image').sticky({
           context: '#context',
           offset: 21
       });
       $('.ui.sticky.text.menu').sticky({
           context: '#context',
           offset: 200
       });
       $('.ui.sticky.text').sticky({
           context: '#context',
           offset: 200
       });
       $('.image_div > img').visibility({
           type: 'image',
           transition: 'fade in',
           duration: 500
       });
       $('.teamimg').hover(function () {
           var width = $(this).outerWidth() / 2;
           $(this).find('.left').animate({right: width}, {queue: false, duration: 300});
           $(this).find('.right').animate({left: width}, {queue: false, duration: 300});
       }, function () {
           $(this).find('.left').animate({right: 0}, {queue: false, duration: 300});
           $(this).find('.right').animate({left: 0}, {queue: false, duration: 300});
       });
       $(function () {
           // The parameter are the selector for the container(s) of text in which you want replacement
           // and a URL pointing to your bibfile - mind the same origin policy...
           var zitator = new Zitator(".citing", "//2016.igem.org/wiki/images/5/53/T--Slovenia--references.txt");
           zitator.zitiere();
       });
       function isScrolledIntoView(elem) {
           var docViewTop = $(window).scrollTop();
           var docViewBottom = docViewTop + $(window).height() - $("#menucomb").height();
           var elemTop = $(elem).offset().top;
           var elemBottom = elemTop + $(elem).height();
           if (elemTop >= docViewTop) {
               return true;
           }
           else if (elemBottom >= docViewBottom) {
               return true;
           }
           return false; // || elemTop >= docViewTop) ;
       }
       function clearStyleOfSideMenu() {
           var id = null;
           $(".section").each(function () {
               var id = $(this).attr('id');
               var selector = 'a[href*="#'.concat(id).concat('"]');
               $(selector).css("color", "");
           });
           $(".section").each(function () {
               //clear each parent
               var id = $(this).attr('id');
               var selector = 'a[href*="#'.concat(id).concat('"]');
               if (isScrolledIntoView($(this).parent().parent())) {
                   console.log($(this).attr("id"));
                   // nastavi barvo trenutni sekciji
                   $(selector).css("color", "#DB2828");
                   return false; //break from function
               }
           });
       }
       $(document).ready(function () {
               clearStyleOfSideMenu();
               $(window).scroll(function () {
                   clearStyleOfSideMenu();
               });
           }
       );
       $(".menuItem").mouseenter(
           function () {
               var loc = window.location.href;
               var defaultItem;
               var parent;
               $(".submenu").each(function () {
                       var context = this;
                       $("a", context).each(function () {
                           if (loc.match(/[^#]*/) == $(this).attr("href")) {
                               defaultItem = $(context).attr("id");
                               parent = $("#".concat(defaultItem.replace("Submenu", "")));
                           }
                       });
                   }
               );
               $(".ui.simple.item.menuItem a").each(function () {
                   if (loc.match(/[^#]*/) == $(this).attr("href")) {
                       parent = $($(this).parents('.ui.simple.item.menuItem'));
                       defaultItem = (parent.attr('id')).concat("Submenu");
                       console.log(defaultItem);
                   }
               });
               defaultItem = document.getElementById(defaultItem);
               clearElements();
               var submenu = document.getElementById(this.id.concat("Submenu"));
               var submenuText = document.getElementById("SecondarySubmenu");
               if (submenuText.innerHTML != submenu.innerHTML) {
                   this.className = "ui simple active item menuItem";
                   submenuText.innerHTML = submenu.innerHTML;
               }
               else {
                   parent.attr("class", "ui simple active item menuItem");
                   submenuText.innerHTML = defaultItem.innerHTML;
               }
           }
       );
       $("#menucomb").mouseleave(function () {
               setDefaultMenu();
           }
       );
   } catch (e) {
       console.log('startReloading');
       $.getScript("https://2016.igem.org/Team:Slovenia/libraries/semantic-min-js?action=raw&ctype=text/javascript", function () {
           console.log('success');
           reloader();
       });
       console.log('endReloading');
   }

} $(document).ready(injectHeader); $(document).ready(reloader); function enumerateKeys(object) {

   var numberPairs = {};
   var objectPairs = {};
   var number = 0;
   var matches = document.body.querySelectorAll(object + '[data-ref]');
   while (number < matches.length) {
       var refName = matches[number].dataset.ref;
       if (refName in numberPairs) {
           console.log(refName, "This label has already been assigned.");
       } else {
           numberPairs[number + 1] = matches[number];
           objectPairs[refName] = number + 1;
       }
       number++;
   }
   return [numberPairs, objectPairs, number];

}

function enumerate() {

   var tables = enumerateKeys('table');
   var figures = enumerateKeys('figure');
   var maximum = Math.max(tables[2], figures[2]);
   for (var number = 1; number <= maximum; number++) {
       if (number in tables[0]) {
           $(tables[0][number]).children('caption').prepend("Table " + number + ": ")
       }
       if (number in figures[0]) {
           $(figures[0][number]).children('figcaption').prepend("Figure " + number + ": ")
       }
   }
   $(this).find('ref').each(function () {
       var label = $(this).text();
       $(this).click(function (event) {
           event.preventDefault();
       });
       if (label in tables[1]) {
           var number = tables[1][label];
           $(this).html("<a href=> Table " + tables[1][label] + " </a>");
           $(this).on('click', function () {
               window.scroll(0, $(tables[0][number]).offset().top - 122);
           })
       } else {
           var number = figures[1][label];
           $(this).html("<a href=>Figure " + figures[1][label] + "</a>");
           $(this).on('click', function () {
               window.scroll(0, $(figures[0][number]).offset().top - 122);
           })
       }
   });

} $(document).ready(enumerate); $(document).ready(setDefaultMenu);

function resize(img) {

   if (img.className.includes("medium")) {
       img.className = "ui huge image";
   }
   else {
       img.className = "ui medium image";
   }

}

function setDefaultMenu() { console.log("calling set default item");

   clearElements();
   var loc = window.location.href;
   var defaultItem;
   var parent;
   $(".submenu").each(function () {
           var context = this;
           $(this).css("color", "#DB2828");
           $(this).css("font-weight", "bold");
           $("a", context).each(function () {

console.log($(this).attr("href"));

               if (loc.match(/[^#]*/) == $(this).attr("href")) {
                   defaultItem = $(context).attr("id");
                   parent = $("#".concat(defaultItem.replace("Submenu", "")));
                   $(this).css("color", "#DB2828");
                   $(this).css("font-weight", "bold");
               }
           });
       }
   );
   $(".ui.simple.item.menuItem a").each(function () {
       if (loc.match(/[^#]*/) == $(this).attr("href")) {
           parent = $($(this).parents('.ui.simple.item.menuItem'));
           defaultItem = (parent.attr('id')).concat("Submenu");
       }
   });
   var submenuText = document.getElementById("SecondarySubmenu");
   defaultItem = document.getElementById(defaultItem);
   parent.attr("class", "ui simple active item menuItem");
   submenuText.innerHTML = defaultItem.innerHTML;

}

function clearElements() {

   var elements = document.getElementsByClassName("menuItem");
   for (var i = 0; i < elements.length; i++) {
       elements[i].className = "ui simple item menuItem";
   }

}

function injectHeader() {

   console.log("Injecting header");
var menu = " \ \ \ \ \ \ \ \ \ \ \ ";
   var contextDiv = document.getElementById("context");
   contextDiv.innerHTML = menu.concat(contextDiv.innerHTML);

}

$('.playGif').on('click', function () {

   console.log("play detected");
   var parent = $(this);
   var parAlt = parent.attr('data-alt');
   var parSrc = parent.attr('src');
   parent.attr("src", parAlt).attr("data-alt", parSrc);

});