(5 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | + | (function () { | |
− | // | + | $(function ($) { |
+ | // testing variable | ||
+ | var testing_protocols = false; | ||
− | + | // scrolling for hashtag links | |
+ | var scrollOfset = 150; | ||
+ | |||
+ | var location = window.location.href; | ||
+ | function scrollTo(hash, callback) { | ||
+ | if (hash === '#!') {return} | ||
+ | hash = hash + '-scroll'; | ||
+ | var offset = $(hash).offset(); | ||
+ | if (!offset) { | ||
+ | console.log("No such element to scroll to: " + hash); | ||
+ | return | ||
+ | } | ||
+ | console.log("Im scrolling to " + hash); | ||
+ | $('html, body').animate({ | ||
+ | scrollTop: offset.top - scrollOfset | ||
+ | }, 700, 'swing', function () {}); | ||
− | + | callback(hash); | |
− | + | } | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | if ( | + | function openProtocol(hash) { |
− | + | console.log("Also opening the protocol: " + hash); | |
− | } | + | var index = -1; |
− | console.log(" | + | $('#protocols>li').each(function (i) { |
+ | var $this = $(this); | ||
+ | var id = $this.children().first().attr('id'); | ||
+ | if (id === hash.slice(1)) { | ||
+ | index = i; | ||
+ | return false; | ||
+ | } | ||
+ | |||
+ | }) | ||
+ | if (index === -1) { | ||
+ | console.log("Couldn't find the protocol to open: " + hash); | ||
+ | } else { | ||
+ | console.log("Opening " + hash); | ||
+ | console.log(index); | ||
+ | $('.collapsible').collapsible('open', index); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | function openNotebook(hash) { | ||
+ | console.log("Also opening the notebook: " + hash); | ||
+ | var index = -1; | ||
+ | $('#notebook-wrapper>li').each(function (i) { | ||
+ | var $this = $(this); | ||
+ | var id = $this.children().first().attr('id'); | ||
+ | if (id === hash.slice(1)) { | ||
+ | index = i; | ||
+ | return false; | ||
+ | } | ||
+ | |||
+ | }) | ||
+ | if (index === -1) { | ||
+ | console.log("Couldn't find the notebook to open: " + hash); | ||
+ | } else { | ||
+ | console.log("Opening " + hash); | ||
+ | console.log(index); | ||
+ | $('.collapsible#notebook-wrapper').collapsible('open', index); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | function processHash(hash) { | ||
+ | if (hash) { | ||
+ | if (location.toLowerCase().includes('protocols') || testing_protocols) { | ||
+ | scrollTo(hash, openProtocol); | ||
+ | } else if (location.toLowerCase().includes('notebook')){ | ||
+ | scrollTo(hash, openNotebook) | ||
+ | } else { | ||
+ | scrollTo(hash, function () {}); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | processHash(window.location.hash); // init | ||
$(window).on('hashchange', function () { | $(window).on('hashchange', function () { | ||
− | + | console.log("Activated the hashchange"); | |
− | + | processHash(window.location.hash); | |
}); | }); | ||
− | //navbar | + | |
+ | $('a[href="#references"]').on('click', function(e) { | ||
+ | processHash(window.location.hash); | ||
+ | }) | ||
+ | |||
+ | $("#timeline a").each(function (i) { | ||
+ | var $this = $(this); | ||
+ | var hash = $this.attr('href'); | ||
+ | $this.on('click', function(e) { | ||
+ | openNotebook(hash); | ||
+ | }) | ||
+ | |||
+ | }) | ||
+ | |||
+ | $('.topper-inner > a').hover(function () { | ||
+ | console.log("Hovering know"); | ||
+ | $('#design-init').css('opacity', '0'); | ||
+ | }, function () { | ||
+ | $('#design-init').css('opacity', '1'); | ||
+ | }); | ||
+ | |||
+ | |||
+ | //timeline | ||
+ | // $('#timeline > div').on('click', function () { | ||
+ | // $('#timeline .active').removeClass('active'); | ||
+ | // $(this).addClass('active'); | ||
+ | // }) | ||
+ | |||
+ | //navbar and a mobile friendly way to navigate | ||
$(".dropdown-button").dropdown({ | $(".dropdown-button").dropdown({ | ||
hover: false, | hover: false, | ||
Line 36: | Line 126: | ||
$('nav').removeClass('show-nav'); | $('nav').removeClass('show-nav'); | ||
}); | }); | ||
+ | |||
+ | // notebook filter | ||
var module_classes = ['cas13a', 'TDP', 'detection', 'sampleprep', 'vesicles']; | var module_classes = ['cas13a', 'TDP', 'detection', 'sampleprep', 'vesicles']; | ||
var whosActive = function () { | var whosActive = function () { | ||
Line 60: | Line 152: | ||
} | } | ||
}; | }; | ||
− | display(whosActive()) // initialization | + | display(whosActive()) // initialization of notebook filter |
$('#notebook-buttons>a').each(function (index) { | $('#notebook-buttons>a').each(function (index) { | ||
var $this = $(this); | var $this = $(this); | ||
Line 69: | Line 161: | ||
}); | }); | ||
}); | }); | ||
− | + | ||
+ | // A button to scroll all the way up. | ||
+ | $("#up-btn").on('click', function () { | ||
+ | $('html, body').animate({ | ||
+ | scrollTop: 0, | ||
+ | }, 600); | ||
+ | return false; | ||
+ | }); | ||
Line 90: | Line 189: | ||
// } | // } | ||
// ); | // ); | ||
− | |||
Line 103: | Line 201: | ||
// } | // } | ||
− | + | // function scaleIn(el) { | |
− | + | // console.log("im called"); | |
− | + | // $(".scaleIn").each(function (index) { | |
− | + | // var that = $(this); | |
− | + | // setTimeout(function () { | |
− | + | // that.addClass('activated') | |
− | + | // }, 200 * index); | |
− | + | // }) | |
− | + | // } | |
− | + | ||
− | + | ||
− | + | ||
+ | // A few materialize initilizations. Look for function on materializecss.com. | ||
+ | |||
+ | $(".scrollspy").scrollSpy({ | ||
+ | scrollOfset: scrollOfset | ||
+ | }); | ||
+ | $(".modal").modal(); | ||
+ | // $('select').material_select(); | ||
+ | // var options = [{ | ||
+ | // selector: '#thisList', | ||
+ | // offset: 500, | ||
+ | // callback: function (el) { | ||
+ | // Materialize.showStaggeredList($(el)); | ||
+ | // } | ||
+ | // }, { | ||
+ | // selector: '#row1', | ||
+ | // offset: 0, | ||
+ | // callback: scaleIn | ||
+ | // }]; | ||
+ | // Materialize.scrollFire(options); | ||
− | + | // Dynamically add e-mail to distract spam bots | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
var white = " ", | var white = " ", | ||
first = "\u00A0\u00A0tudelft", | first = "\u00A0\u00A0tudelft", | ||
Line 141: | Line 243: | ||
mm = ma + "to" + ":"; | mm = ma + "to" + ":"; | ||
− | |||
$("#mail-button").attr("href", mm + all.trim()); | $("#mail-button").attr("href", mm + all.trim()); | ||
$("#email").text(white + sall); | $("#email").text(white + sall); | ||
− | // Removing empty p tages | + | // Removing empty p tages, added by the mediawiki |
$("p").filter(function () { | $("p").filter(function () { | ||
return $.trim($(this).text()) === ''; | return $.trim($(this).text()) === ''; | ||
}).remove(); | }).remove(); | ||
+ | |||
+ | // touch friendly hover menu | ||
+ | // $('top_menu_14, top_menu_inside ').on('touchstart', function (e) { | ||
+ | // var $this = $(this); | ||
+ | // if ($this.hasClass('hover')) { | ||
+ | // return true | ||
+ | // } else { | ||
+ | // $this.addClass('hover'); | ||
+ | // e.preventDefault(); | ||
+ | // return false; | ||
+ | // } | ||
+ | // }) | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
}); | }); | ||
}($)); | }($)); | ||
− | + | // test function | |
− | function filter_notebook(select) { | + | //function filter_notebook(select) { |
− | + | // console.log(select); | |
− | } | + | //} |
// function for copying text to clipboard (used for phone number) | // function for copying text to clipboard (used for phone number) | ||
function copyToClipboard(element) { | function copyToClipboard(element) { |
Latest revision as of 22:29, 1 November 2017
(function () {
$(function ($) { // testing variable var testing_protocols = false;
// scrolling for hashtag links var scrollOfset = 150; var location = window.location.href;
function scrollTo(hash, callback) { if (hash === '#!') {return} hash = hash + '-scroll'; var offset = $(hash).offset(); if (!offset) { console.log("No such element to scroll to: " + hash); return } console.log("Im scrolling to " + hash); $('html, body').animate({ scrollTop: offset.top - scrollOfset }, 700, 'swing', function () {});
callback(hash); }
function openProtocol(hash) { console.log("Also opening the protocol: " + hash); var index = -1; $('#protocols>li').each(function (i) { var $this = $(this); var id = $this.children().first().attr('id'); if (id === hash.slice(1)) { index = i; return false; }
}) if (index === -1) { console.log("Couldn't find the protocol to open: " + hash); } else { console.log("Opening " + hash); console.log(index); $('.collapsible').collapsible('open', index); } } function openNotebook(hash) { console.log("Also opening the notebook: " + hash); var index = -1; $('#notebook-wrapper>li').each(function (i) { var $this = $(this); var id = $this.children().first().attr('id'); if (id === hash.slice(1)) { index = i; return false; }
}) if (index === -1) { console.log("Couldn't find the notebook to open: " + hash); } else { console.log("Opening " + hash); console.log(index); $('.collapsible#notebook-wrapper').collapsible('open', index); } }
function processHash(hash) { if (hash) { if (location.toLowerCase().includes('protocols') || testing_protocols) { scrollTo(hash, openProtocol); } else if (location.toLowerCase().includes('notebook')){ scrollTo(hash, openNotebook) } else { scrollTo(hash, function () {}); } } }
processHash(window.location.hash); // init $(window).on('hashchange', function () { console.log("Activated the hashchange"); processHash(window.location.hash); }); $('a[href="#references"]').on('click', function(e) { processHash(window.location.hash); }) $("#timeline a").each(function (i) { var $this = $(this); var hash = $this.attr('href'); $this.on('click', function(e) { openNotebook(hash); }) }) $('.topper-inner > a').hover(function () { console.log("Hovering know"); $('#design-init').css('opacity', '0'); }, function () { $('#design-init').css('opacity', '1'); });
//timeline
// $('#timeline > div').on('click', function () { // $('#timeline .active').removeClass('active'); // $(this).addClass('active'); // })
//navbar and a mobile friendly way to navigate $(".dropdown-button").dropdown({ hover: false, constrainWidth: false, belowOrigin: true }); $('#menu-btn').click(function () { $('nav').addClass('show-nav'); }); $('#cross').click(function () { $('nav').removeClass('show-nav'); }); // notebook filter var module_classes = ['cas13a', 'TDP', 'detection', 'sampleprep', 'vesicles']; var whosActive = function () { var active = new Array(module_classes.length); $('#notebook-buttons>a').each(function (index) { var $this = $(this); active[index] = hasClass($this, 'active'); }) return active; };
var hasClass = function ($el, className) { return $el.attr('class').split(' ').some( el => el === className) }; var display = function (active) { for (var i = 0; i < active.length; i++) { var $module = $("." + module_classes[i]); if (active[i]) { $module.css("display", "block"); } else { $module.css("display", "none"); } } }; display(whosActive()) // initialization of notebook filter $('#notebook-buttons>a').each(function (index) { var $this = $(this); $this.on('click', function () { console.log("I clicked this"); $this.toggleClass('active'); display(whosActive()); }); });
// A button to scroll all the way up. $("#up-btn").on('click', function () { $('html, body').animate({ scrollTop: 0, }, 600); return false; });
//toc // $(".scrollspy").scrollSpy(); // setTimeout(function () { // $("#toc").pushpin({ // offset: 150, // top: 0, // bottom: $('footer').offset().top - $('#toc').outerHeight(true) // }) // }, 100); //timeline // $(".scrollspy").scrollSpy( // { // getActiveElement: function (id) { // return "round" + (parseInt(id.replace(/\D/g, )) - 20); // } // } // );
//main
// function scaleIn() { // $("scaleIn").each(function() { // setTimeout(function () { // $(this).addClass('activated'); // }, 500) // }); // }
// function scaleIn(el) { // console.log("im called"); // $(".scaleIn").each(function (index) { // var that = $(this); // setTimeout(function () { // that.addClass('activated') // }, 200 * index); // }) // }
// A few materialize initilizations. Look for function on materializecss.com. $(".scrollspy").scrollSpy({ scrollOfset: scrollOfset }); $(".modal").modal();
// $('select').material_select(); // var options = [{ // selector: '#thisList', // offset: 500, // callback: function (el) { // Materialize.showStaggeredList($(el)); // } // }, { // selector: '#row1', // offset: 0, // callback: scaleIn // }]; // Materialize.scrollFire(options);
// Dynamically add e-mail to distract spam bots var white = " ", first = "\u00A0\u00A0tudelft", secon = "igem",
third = "gmail", forth = "com", all = " " + " " + first + "." + secon + "@" + third + "." + forth, sall = " " + " " + all, ma = "ma" + "il", mm = ma + "to" + ":";
$("#mail-button").attr("href", mm + all.trim()); $("#email").text(white + sall);
// Removing empty p tages, added by the mediawiki $("p").filter(function () { return $.trim($(this).text()) === ; }).remove();
// touch friendly hover menu // $('top_menu_14, top_menu_inside ').on('touchstart', function (e) { // var $this = $(this); // if ($this.hasClass('hover')) { // return true // } else { // $this.addClass('hover'); // e.preventDefault(); // return false; // } // })
});
}($)); // test function //function filter_notebook(select) { // console.log(select); //} // function for copying text to clipboard (used for phone number) function copyToClipboard(element) {
var $temp = $("<input>"); $("body").append($temp); $temp.val(element).select(); document.execCommand("copy"); $temp.remove(); alert("You copied: " + element + ".");
}