De promotiewebsite die de reguliere site vervangt tijdens de Kick-In. https://join.harambee.utwente.nl
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
kick-in-promo-site/tests/utils.js

440 lines
13 KiB

var sectionLoaded = [];
var slideLoaded = [];
// keeping central set of classnames and selectors
var WRAPPER = 'fullpage-wrapper';
var WRAPPER_SEL = '.' + WRAPPER;
// slimscroll
var SCROLLABLE = 'fp-scrollable';
var SCROLLABLE_SEL = '.' + SCROLLABLE;
// util
var RESPONSIVE = 'fp-responsive';
var NO_TRANSITION = 'fp-notransition';
var DESTROYED = 'fp-destroyed';
var ENABLED = 'fp-enabled';
var VIEWING_PREFIX = 'fp-viewing';
var ACTIVE = 'active';
var ACTIVE_SEL = '.' + ACTIVE;
var COMPLETELY = 'fp-completely';
var COMPLETELY_SEL = '.' + COMPLETELY;
// section
var SECTION_DEFAULT_SEL = '.section';
var SECTION = 'fp-section';
var SECTION_SEL = '.' + SECTION;
var SECTION_ACTIVE_SEL = SECTION_SEL + ACTIVE_SEL;
var SECTION_FIRST_SEL = SECTION_SEL + ':first';
var SECTION_LAST_SEL = SECTION_SEL + ':last';
var TABLE_CELL = 'fp-tableCell';
var TABLE_CELL_SEL = '.' + TABLE_CELL;
var AUTO_HEIGHT = 'fp-auto-height';
var AUTO_HEIGHT_SEL = '.fp-auto-height';
var NORMAL_SCROLL = 'fp-normal-scroll';
var NORMAL_SCROLL_SEL = '.fp-normal-scroll';
// section nav
var SECTION_NAV = 'fp-nav';
var SECTION_NAV_SEL = '#' + SECTION_NAV;
var SECTION_NAV_TOOLTIP = 'fp-tooltip';
var SECTION_NAV_TOOLTIP_SEL='.'+SECTION_NAV_TOOLTIP;
var SHOW_ACTIVE_TOOLTIP = 'fp-show-active';
// slide
var SLIDE_DEFAULT_SEL = '.slide';
var SLIDE = 'fp-slide';
var SLIDE_SEL = '.' + SLIDE;
var SLIDE_ACTIVE_SEL = SLIDE_SEL + ACTIVE_SEL;
var SLIDES_WRAPPER = 'fp-slides';
var SLIDES_WRAPPER_SEL = '.' + SLIDES_WRAPPER;
var SLIDES_CONTAINER = 'fp-slidesContainer';
var SLIDES_CONTAINER_SEL = '.' + SLIDES_CONTAINER;
var TABLE = 'fp-table';
// slide nav
var SLIDES_NAV = 'fp-slidesNav';
var SLIDES_NAV_SEL = '.' + SLIDES_NAV;
var SLIDES_NAV_LINK_SEL = SLIDES_NAV_SEL + ' a';
var SLIDES_ARROW = 'fp-controlArrow';
var SLIDES_ARROW_SEL = '.' + SLIDES_ARROW;
var SLIDES_PREV = 'fp-prev';
var SLIDES_PREV_SEL = '.' + SLIDES_PREV;
var SLIDES_ARROW_PREV = SLIDES_ARROW + ' ' + SLIDES_PREV;
var SLIDES_ARROW_PREV_SEL = SLIDES_ARROW_SEL + SLIDES_PREV_SEL;
var SLIDES_NEXT = 'fp-next';
var SLIDES_NEXT_SEL = '.' + SLIDES_NEXT;
var SLIDES_ARROW_NEXT = SLIDES_ARROW + ' ' + SLIDES_NEXT;
var SLIDES_ARROW_NEXT_SEL = SLIDES_ARROW_SEL + SLIDES_NEXT_SEL;
var new_fullpage;
var oldConsole = console;
var lazyLoadElements = `
<img id="img-src" data-src="https://www.w3schools.com/html/pulpitrock.jpg" />
<img id="img-srcet" data-srcset="https://www.w3schools.com/html/pulpitrock.jpg 320w, https://www.w3schools.com/html/pulpitrock.jpg 420w" />
<video width="320" height="240" controls>
<source class="source-src" data-src="https://www.w3schools.com/html/mov_bbb.mp4" type="video/mp4">
<source class="source-src" data-src="https://www.w3schools.com/html/mov_bbb.ogg" type="video/ogg">
Your browser does not support the video tag.
</video>
<video id="source-srcset" width="320" height="240" controls>
<source class="source-srcset" data-srcset="https://www.w3schools.com/html/mov_bbb.mp4 768w, videos/tablet-video.mp4 1200w">
<source class="source-srcset" data-srcset="https://www.w3schools.com/html/mov_bbb.mp4 768w, videos/tablet-video.mp4 1200w">
</video>
<video id="video-src" data-src="https://www.w3schools.com/html/mov_bbb.ogg" controls>
Your browser does not support the video tag.
</video>
<audio id="audio-src" data-src="https://www.w3schools.com/html/horse.ogg" controls>
Your browser does not support the audio element.
</audio>
<iframe id="iframe-src" data-src="http://google.com"></iframe>
<picture>
<source data-srcset="https://www.w3schools.com/html/pulpitrock.jpg?v=1" media="(min-width: 1440px)">
<source data-srcset="https://www.w3schools.com/html/pulpitrock.jpg?v=2" media="(min-width: 1024px)">
<img class="background-image background-image-lazy" data-src="https://www.w3schools.com/html/pulpitrock.jpg?v=3">
</picture>
`;
function areAllLazyLoaded(element){
var lazyLoadElements = element.find('[data-src], [data-srcset]');
return !lazyLoadElements.length;
}
function isAnyLazyLoaded(element){
return element.find('[src], [srcset]').length;
}
function areOthersLazyLoaded(){
var isAnyOtherLoaded = false;
$(SECTION_SEL).each(function(){
var section = $(this);
var slides = $(this).find(SLIDE_SEL);
if(slides.length){
slides.each(function(){
var slide = $(this);
if(!section.hasClass(ACTIVE) || section.hasClass(ACTIVE) && !slide.hasClass(ACTIVE)){
isAnyOtherLoaded = isAnyOtherLoaded || isAnyLazyLoaded(slide);
}
});
}
else if(!section.hasClass(ACTIVE)){
isAnyOtherLoaded = isAnyOtherLoaded || isAnyLazyLoaded(section);
}
});
return isAnyOtherLoaded;
}
//appends lazy elements to all sections and slides
function appendLazyElements(id){
$(id).find('.section').each(function(index, section){
var slides = $(section).find('.slide');
if(slides.length){
slides.append(lazyLoadElements);
}
else{
$(section).append(lazyLoadElements);
}
});
}
var sectionsCallbacks = {
afterLoad: function(anchorLink, index) {
sectionLoaded[index - 1] = true;
afterLoad = `${anchorLink}, ${index}`;
},
onLeave: function(index, nextIndex, direction) {
sectionLoaded[index - 1] = false;
onLeave = `${index}, ${nextIndex}, ${direction}`;
},
afterRender() {
afterRender = [$(SECTION_ACTIVE_SEL).index(), $(SECTION_ACTIVE_SEL).find(SLIDE_ACTIVE_SEL).index()];
},
afterResponsive: function(isResponsive){
afterResponsive = isResponsive;
},
afterResize: function(){
afterResize = true;
},
afterReBuild: function(){
afterReBuild = true;
}
};
var sectionsCallbacksV3 = {
afterLoad: function(origin, destination, direction) {
sectionLoaded[destination.index ] = true;
afterLoad = {
origin: origin,
destination: destination,
direction: direction
};
},
onLeave: function(origin, destination, direction) {
sectionLoaded[origin.index] = false;
console.log(origin);
console.log(destination);
onLeave = {
origin: origin,
destination: destination,
direction: direction
};
console.log("-------");
},
afterRender() {
afterRender = [$(SECTION_ACTIVE_SEL).index(), $(SECTION_ACTIVE_SEL).find(SLIDE_ACTIVE_SEL).index()];
},
afterResponsive: function(isResponsive){
afterResponsive = isResponsive;
},
afterResize: function(width, height){
afterResize = `${width}, ${height}`;
},
afterReBuild: function(){
afterReBuild = true;
}
};
$('html').click(function(){
$(window).trigger('pepe');
});
var onSlideLeave = new_fullpage ? {} : ``;
var onLeave = new_fullpage ? {} : ``;
var afterLoad = new_fullpage ? {} : ``;
var afterSlideLoad = new_fullpage ? {} : ``;
var afterResponsive = false;
var afterResize = false;
var afterReBuild = false;
var afterRender = [];
var locationReplace = null;
var slidesCallbacks = {
afterSlideLoad: function(anchorLink, index, slideAnchor, slideIndex){
slideLoaded[slideIndex] = true;
afterSlideLoad = `${anchorLink}, ${index}, ${slideAnchor}, ${slideIndex}`;
},
onSlideLeave: function(anchorLink, index, slideIndex, direction, nextSlideIndex){
slideLoaded[slideIndex] = false;
onSlideLeave = `${anchorLink}, ${index}, ${slideIndex}, ${direction}, ${nextSlideIndex}`;
}
};
var slidesCallbacksV3 = {
afterSlideLoad: function(section, origin, destination, direction){
slideLoaded[destination.index] = true;
afterSlideLoad = {
section: section,
origin: origin,
destination: destination,
direction: direction
};
},
onSlideLeave: function(section, origin, destination, direction){
slideLoaded[origin.index] = false;
onSlideLeave = {
section: section,
origin: origin,
destination: destination,
direction: direction
};
}
};
var anchors = { anchors: ['page1', 'page2', 'page3', 'page4']};
var sectionsAndSlidesCallbacks = Object.assign({}, sectionsCallbacks, slidesCallbacks);
var sectionsAndSlidesCallbacksV3 = Object.assign({}, sectionsCallbacksV3, slidesCallbacksV3);
var allBasicOptions = Object.assign({}, anchors, sectionsCallbacks, slidesCallbacks);
var allBasicOptionsV3 = Object.assign({}, anchors, sectionsCallbacksV3, slidesCallbacksV3);
function getTransform(translate) {
var translateRegex = new RegExp('translate3d\\((.*)px,\\s(.*)px,\\s(.*)px\\)');
var parts = translateRegex.exec(translate);
parts = parts.map(function(item){
return item == '-0' ? 0: item;
});
return [''+parts[1]+'', ''+parts[2]+'', ''+parts[3]+''];
}
function getTransformFromElement($el) {
var results = $el.css('-webkit-transform').match(/matrix(?:(3d)\(-{0,1}\d+(?:, -{0,1}\d+)*(?:, (-{0,1}\d+))(?:, (-{0,1}\d+))(?:, (-{0,1}\d+)), -{0,1}\d+\)|\(-{0,1}\d+(?:, -{0,1}\d+)*(?:, (-{0,1}\d+))(?:, (-{0,1}\d+))\))/);
if(!results) return ["0", "0", "0"];
if(results[1] == '3d') return results.slice(2,5);
results.push("0");
return results.slice(5, 8);
}
function getWindowPosition(){
return $(window).scrollTop();
}
function getTop(selector){
return $(selector).css('top');
}
//overwritting the scrollTop function of jQuery to simulate scroll
//when using autoScrolling:false or scrollBar:true
function simulateScroll(scrollValue){
window.pageYOffset = (function(){
return scrollValue;
})();
trigger(window, 'scroll');
}
function simulateMouseWheel(type){
var multiplier = type === 'up' ? -1 : 1;
//moving down with mouse wheel
var mouseWheel = new Event('wheel', { 'bubbles': true });
mouseWheel.deltaY = 10 * multiplier;
document.dispatchEvent(mouseWheel);
}
function simulateKeydown(type){
var keyCode = type === 'up' ? 38 : 40;
//moving down with mouse wheel
var keydownEvent = new Event('keydown', { 'bubbles': true });
keydownEvent.keyCode = keyCode;
document.dispatchEvent(keydownEvent);
}
//not used yet
function simulateTouchMove(target, type){
var pageY = 100, pageX = 100, differenceX = 0, differenceY = 0;
switch(type){
case 'down': differenceY = 500; break;
case 'up': differenceY = -500; break;
case 'left': differenceX = 500;break;
case 'right': differenceX = -500; break;
}
//touch start
var touchStartEvent = new Event('touchstart', { 'bubbles': true });
touchStartEvent.pageX = pageX + differenceX;
touchStartEvent.pageY = pageY + differenceY;
target.dispatchEvent(touchStartEvent);
//moving down with mouse wheel
var touchMoveEvent = new Event('touchmove', { 'bubbles': true });
touchMoveEvent.pageX = pageX;
touchMoveEvent.pageY = pageY;
target.dispatchEvent(touchMoveEvent);
}
function trigger(el, eventName, data){
var event;
data = typeof data === 'undefined' ? {} : data;
// Native
if (window.CustomEvent) {
event = new CustomEvent(eventName, {detail: data});
}
else{
event = document.createEvent('CustomEvent');
event.initCustomEvent(eventName, true, true, data);
}
el.dispatchEvent(event);
}
function destroyTest(){
//destroying it if it existed
if(fullpage_api != null){
fullpage_api.destroy('all');
}
else if($.fn.fullpage != null){
$.fn.fullpage.destroy('all');
}
console.warn = oldConsole.warn;
console.log = oldConsole.log;
console.error = oldConsole.error;
//removing the URL hash
window.location.hash = '';
//resetting the loaded sections array flag
$.each(sectionLoaded, function(index, value) {
sectionLoaded[index] = false;
});
$('.fullpage-layout.active').removeClass('active');
onSlideLeave = ``;
onLeave = ``;
afterLoad = ``;
afterSlideLoad = ``;
afterResponsive = false;
afterResize = false;
afterReBuild = false;
afterRender = [];
locationReplace = null;
}
function setLoadedState(){
sectionLoaded = [];
slideLoaded = [];
// "Loaded" flag for each section to fill "onLoad"
$('.section:visible').each(function(index) {
sectionLoaded.push(false);
});
$('.slide:visible').each(function(index){
slideLoaded.push(false);
});
}
function areOthersLoaded(elements){
return elements.filter(function(x){
return x === true;
}).length;
}
function initFullpage(id, options){
$(id).addClass('active');
setLoadedState();
$(id).fullpage(options);
}
function initFullpageNew(id, options){
$(id).addClass('active');
setLoadedState();
new_fullpage = new fullpage(id, options);
new_fullpage.test.isTesting = true;
return new_fullpage;
}
QUnit.module("module", {
beforeEach: function(assert) {
console.warn(assert.test.testName);
},
afterEach: function(assert) {
destroyTest();
}
});