UNPKG

sportsbet-mobile

Version:
317 lines (278 loc) 7.8 kB
import BetSlipBet = Betting.BetSlipBet; Backend.site = <any>{ handle: 'sportsbet-mobile' }; declare var cdnUrl: string; cdnUrl = `//cdn.coingaming.io/${Backend.site.handle}/`; declare function ga(...args); Tracker.autorun(function() { Meteor.userId(); Meteor.subscribe('reporting/Tag'); }); UI.registerHelper('imagePath', function () { return cdnUrl; }); UI.registerHelper('activeUser', function () { return Meteor.userId(); }); function displayOdds(odds) { var currentFormat = Session.get('oddsFormat') || Users.OddsFormat.DECIMAL; if (currentFormat === Users.OddsFormat.DECIMAL) { if (_.isUndefined(odds)) { return; } else { return odds.toFixed(2); } } else if (currentFormat === Users.OddsFormat.AMERICAN) { return Betting.decimalToAmerican(odds); } else if (currentFormat === Users.OddsFormat.FRACTIONAL) { return Betting.decimalToFractional(odds); } } Meteor.subscribe('betting/Sport'); function oddsFormat(name) { if (Session.get('oddsFormat') === Users.OddsFormat.AMERICAN) { name = name.replace('Match Odds', 'Moneyline'); name = name.replace('Handicap', 'Spread'); name = name.replace('Over/Under', 'Total Points'); name = name.replace('Stake', 'Risk'); name = name.replace('Potential Win', 'To Win'); } return name; } function getGame() { var handle = Session.get('gameName'); if (!handle) { return; } handle = handle.toLowerCase(); var game = <Casino.GameClient>Casino.Game.db.findOne({handle: handle}); if (!game) { return; } return game; } function getGameUrl() { if (!Template.instance().subscriptionsReady()) { return; } var game = getGame(); var handle = game.handle; Countries.IpClient.getConnectionCountry(function (err, res) { if (err) { return; } Session.set('countryClient', res._id); }); var country = Session.get('countryClient'); if (!country) { return; } Casino.GameClient.checkIfBlocked(handle, country, function (err) { if (err) { Session.set('splashTemplate', err.reason); } }); Casino.GameClient.checkIfExists(handle, function (err) { if (err) { Session.set('splashTemplate', 'gameError'); Session.set('splashMessage', err.details); } }); try { var url = Session.get('forFun') ? game.getDemoUrl('en') : game.getUrl('en'); } catch (err) { if (['force_money_error', 'force_login_fun_error', 'force_login_error'].indexOf(err.reason) !== -1) { Session.set('splashTemplate', err.reason); } else { Session.set('splashTemplate', 'gameError'); } Session.set('splashMessage', err.localeMessage); } if (url) { url = url.replace('exitURL=%2Fcasino', 'exitURL=https://' + document.domain); if (url.match(/betsoftgaming/i)) { url = url + '&homeUrl=https://' + document.domain; } if (url.match(/playngonetwork/i)) { url = url.replace('&lobby=/', ''); //this is fast fix url = url + '&lobby=http://bitcasino.io'; } if (!Session.get('redirectCalled')) { Session.set('redirectCalled', true); location.replace(url); } } //return url; return; } function calcAge(dateString) { var birthday = +new Date(dateString); /* tslint:disable */ return ~~((Date.now() - birthday) / (31557600000)); /* tslint:enable */ } function resetGameUrl() { var game = getGame(); if (!game) { return; } if (Session.get('forFun')) { game.resetDemoUrl(); game.getDemoUrl('en'); } else { game.resetUrl(); game.getUrl('en'); } } function requestFullScreen(el) { var fullScreen = el.requestFullScreen || el.msRequestFullscreen || el.webkitRequestFullScreen || el.mozRequestFullScreen; if (fullScreen) { fullScreen.call(el); } else { Session.set('fullScreen', true); } } function setIFrameHeight() { Session.set('iframeWidth', '100%'); var $iFrame = $('.gameArea').find('iframe'); if (!$iFrame[0]) { Meteor.setTimeout(setIFrameHeight, 100); } else { var game = getGame(); if (game && game.width) { var ratio = game.height / game.width; } else { var ratio = 3 / 4; } var iframeHeight = $(window).height() - 200; var iframeWidth = Math.min(1100, iframeHeight / ratio); Session.set('iframeWidth', iframeWidth + 'px'); if (iframeWidth === 1100) { iframeHeight = iframeWidth * ratio; } Session.set('iframeHeight', iframeHeight + 'px'); } } function getScreenOrientation() { if (window.matchMedia("(orientation: portrait)").matches) { return 'Portrait'; } if (window.matchMedia("(orientation: landscape)").matches) { return 'Landscape'; } } function normaliseStr(str: string) { return str.replace(/-/g, ' ').replace(/\w\S*/g, function(txt){ return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); }); } function validateBets() { var balance = Session.get('balance'); var betslip = Betting.getBetSlip(); var isMulti = Betting.isMultibet(); var totalStake = Betting.getTotalStake() * 1000; var allStakesOk = !_.find(betslip, function (bet: BetSlipBet) { return bet.stake > 0 && bet.stake < 0.001; }); var allBetsOk = !_.find(betslip, function (bet: BetSlipBet) { return bet.state && bet.state.type === 'error'; }); var invalidStakes = !isMulti && betslip.length && !allStakesOk; var invalidMultiStake = isMulti && betslip.length && totalStake > 0 && totalStake < 1; if (totalStake > balance) { Betting.setBetSlipState({ type: 'error', message: 'Your bet is exceeding your available balance' }); return; } else if (invalidStakes || invalidMultiStake) { Betting.setBetSlipState({ type: 'error', message: 'Minimum stake is 1.00 mBTC' }); return; } else if (!betslip.length) { Betting.setMultiStake(0); Betting.clearBetSlip(); $('#betslip').collapse('hide'); return; } else if (betslip.length && !allBetsOk) { Betting.setBetSlipState({type: 'error'}); return; } else if (isMulti && betslip.length) { // if bets count equal to 1 if (betslip.length < 2) { Betting.setBetSlipState({ type: 'error', message: 'You need to select more than one market to make a multibet' }); return; } // if multiple selections from the same event let events: string[] = []; let clearMarkets: boolean = true; betslip.forEach((bet: any) => { if (events.indexOf(bet.eventId) !== -1) { clearMarkets = false; Betting.setBetSlipState({ type: 'error', message: 'Multiple selections from the same event cannot be combined in a Multibet.' }); } if (!(events.indexOf(bet.eventId) > -1)) { events.push(bet.eventId); } }); if (clearMarkets) Betting.setBetSlipState(null); } else { Betting.setBetSlipState(undefined); } } function nl2br (str, is_xhtml) { var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '<br ' + '/>' : '<br>'; // Adjust comment to avoid issue on phpjs.org display return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1' + breakTag + '$2'); } function disableSite() { Session.set('siteLoading', true); } function enableSite() { Session.set('siteLoading', false); } UI.registerHelper('displayOdds', displayOdds); UI.registerHelper('oddsFormat', oddsFormat); UI.registerHelper('calcAge', calcAge); UI.registerHelper('parentData', function() { return Template.parentData(1); }); (<any>this).displayOdds = displayOdds; (<any>this).oddsFormat = oddsFormat; (<any>this).calcAge = calcAge; (<any>this).getGame = getGame; (<any>this).getGameUrl = getGameUrl; (<any>this).resetGameUrl = resetGameUrl; (<any>this).requestFullScreen = requestFullScreen; (<any>this).setIFrameHeight = setIFrameHeight; (<any>this).getScreenOrientation = getScreenOrientation; (<any>this).normaliseStr = normaliseStr; (<any>this).validateBets = validateBets; (<any>this).nl2br = nl2br; (<any>this).disableSite = disableSite; (<any>this).enableSite = enableSite; $(document).ready(function () { Backend.SiteClient.addScripts(); });