harness/app-assets/templates/assets/js/bootstraps/cricket.js (82 lines of code) (raw):

/*global window,document,console,define */ define([ 'bean', 'modules/$' ], function ( bean, $ ) { 'use strict'; var modules = { paginate: function(){ var sheet = document.getElementById('cricket-scorecard-batsmen-sheet'); var wrap = document.getElementById('cricket-scorecard-batsmen-wrap'); var updatePosition = function(){}; wrap.removeEventListener('animationiteration', updatePosition); wrap.removeEventListener('webkitAnimationIteration', updatePosition); var card = document.getElementById('cricket-match-summary-scorecard'); if(sheet && card){ var title = card.getElementsByClassName('cricket-scorecard-title')[0]; var batsmen = sheet.getElementsByClassName('cricket-scorecard-batsmen')[0]; if(batsmen){ var batsmenHeight = batsmen.getBoundingClientRect().height; var pages = Math.ceil(sheet.getBoundingClientRect().height / batsmenHeight); if(pages > 1){ card.setAttribute('data-pages', pages); var bullets = '<div class="cricket-scorecard-bullets" id="cricket-scorecard-bullets">'; for(var page = 0; page < pages; page++){ bullets += '<span class="' + (page === 0 ? 'cricket-scorecard-bullets--active' : '') + '"></span>'; } title.insertAdjacentHTML('beforeend', bullets + '</div>'); var currentPage = 0; var htmlBullets = title.querySelectorAll('.cricket-scorecard-bullets span'); updatePosition = function(){ currentPage = ++currentPage % pages; sheet.style.webkitTransform = sheet.style.transform = "TranslateY(" + ( -1 * currentPage * batsmenHeight) + "px)"; wrap.style.opacity = 0; for(var bullet = 0; bullet < htmlBullets.length; bullet++){ if(currentPage === bullet){ htmlBullets[bullet].classList.add('cricket-scorecard-bullets--active'); }else{ htmlBullets[bullet].classList.remove('cricket-scorecard-bullets--active'); } } }; wrap.addEventListener('animationiteration', updatePosition); wrap.addEventListener('webkitAnimationIteration', updatePosition); } } } }, newCricketData: function(newHeader, newScorecard){ var header = document.getElementById('cricket-header'); var scorecard = document.getElementById('cricket-scorecard'); header.innerHTML = newHeader; scorecard.innerHTML = newScorecard; }, newCricketStatus: function (matchStatus) { var cricketWrapper = $('.cricket'); //only doing this for cricket pre-match status atm - can change to something more robust if using for more things if (cricketWrapper.length && matchStatus === 'pre-match') { cricketWrapper.addClass('cricket--' + matchStatus); } else { cricketWrapper.removeClass('cricket--pre-match'); } }, cricketMatchInfoFailed: function(){ var header = $('#cricket-header'); var scorecard = $('#cricket-scorecard'); $('#cricket__tab--stats').remove(); $('#cricket__tabpanel--stats').remove(); if ($('.tabs [href="#cricket__tabpanel--stats"]').attr("aria-selected") === true) { $('.tabs a:first-of-type').attr("aria-selected", true); $($('.tabs [aria-selected="true"]').attr("href")).show(); } header.remove(); scorecard.remove(); } }; var ready = function () { if (!this.initialised) { this.initialised = true; //modules.paginate(); window.newCricketData = modules.newCricketData; window.newCricketStatus = modules.newCricketStatus; window.cricketMatchInfoFailed = modules.cricketMatchInfoFailed; } }; return { init: ready, modules: modules }; });