UNPKG

sportsbet-mobile

Version:
303 lines (241 loc) 6.91 kB
interface Templates { betslip: Template; } Template.betslip.onRendered(function() { this.autorun(() => { if(Users.Profile.active() && Users.Profile.active().siteSettings) { Session.setDefault('acceptOddsChanges', Users.Profile.active().siteSettings.acceptAllOdds); Session.setDefault('useQuickBet', Users.Profile.active().siteSettings.useQuickBet); } var betSlip = Betting.getBetSlip(); if (!betSlip || !betSlip.length) { return; } this.subscribe('betting/Selection', {_id: {$in: betSlip.map((x) => x.selection)}}); this.subscribe('betting/Market', {_id: {$in: betSlip.map((x) => x.marketId)}}); this.subscribe('betting/Event', {_id: {$in: betSlip.map((x) => x.eventId)}}); if (!betSlip.length) { Session.set('betslip-open', false); } // if (betSlip.length > 1) { // Betting.setMultibet(true); // } }); }); Template.betslip.helpers({ acceptAllOdds: function(){ return Session.get('acceptOddsChanges'); }, bets: Betting.getBetSlip, isMulti: Betting.isMultibet, clearEnabled: Betting.clearAllowed, totalStake: Betting.getTotalStake, totalOdds: Betting.getTotalOdds, totalPotentialPayout: Betting.getPotentialPayout, betSlipState: Betting.getBetSlipState, betEnabled: function() { return Betting.placeBetAllowed(); }, millis: function(value) { return +(value * 1000).toFixed(2); }, quickBets: function() { return [10, 25, 50, 100, 200, 500]; }, hasFunds(amount) { var balance = Math.floor(Rewards.userTotalBalance(Users.Profile.active()) * 100000) / 100; return balance >= amount; }, oddsFormats: function () { return Users.oddsFormats; }, betCount: function() { var betCount = Betting.getBetSlip().length; if (betCount == 1) { Betting.setMultibet(false); } return betCount; }, confirmBet: function() { return Session.get('confirmBet'); }, betSlipError: function() { return Session.get('betSlipError'); }, menuExpanded: function() { return Session.get('menuExpanded'); }, footerVisible: function() { return Session.get('footerVisible'); }, disableBetslip: function() { return Session.get('disableBetslip') ? 'disabled' : ''; }, useQuickBet: function(){ return Session.get('useQuickBet'); } }); Template.betslip.events({ 'click .title-holder': function(e: MeteorTemplateEvent) { e.preventDefault(); e.stopPropagation(); var footerVisible = Session.get('footerVisible'); if (footerVisible) { Session.set('footerVisible', false); Session.set('betslip-open', false); } else { Session.set('footerVisible', true); Session.set('betslip-open', true); } }, 'click .multiBet, click .multiBet': function() { if (Betting.getBetSlip().length <= 1) { return; } Betting.setMultibet(true); }, 'click .singleBet, click .singleBet': function() { Betting.setMultibet(false); }, 'click .place-bet': function() { if (!Users.Profile.active()) { Session.set('betSlipError', { type: 'notLoggedIn', message: 'You have to be logged in' }); return; } var balance = Math.floor(Rewards.userTotalBalance(Users.Profile.active()) * 100000) / 100; var stake = Betting.getTotalStake() * 1000; if (balance >= stake) { if (Session.get('useQuickBet')) { Session.set('disableBetslip', true); Betting.placeBet(); } else { Session.set('confirmBet', true); } } else { Session.set('betSlipError', { type: 'notEnoughFunds', message: 'Not Enough Funds' }); // Meteor.setTimeout(function() { // Session.set('notEnoughFunds', false); // }, 3000) } }, 'click .cancel-bet': function() { Session.set('confirmBet', false); }, 'click .confirm-bet': function() { if (Session.get('confirmBet')) { Betting.placeBet(); Session.set('confirmBet', false); Session.set('disableBetslip', true); } }, 'click .clear-bet': function() { Session.set('betSlipError', false); Session.set('betslip-open', false); Betting.clearBetSlip(); Betting.setMultiStake(0); }, 'click .inc-stake-10': function() { Session.set('betSlipError', false); Betting.setMultiStake(Betting.getTotalStake() ? ((Betting.getTotalStake() * 1000) + 10) : 10); // Meteor.setTimeout(function () { // validateBets(); // }, 0); }, 'click .dec-stake-10': function() { Session.set('betSlipError', false); var curStake = Betting.getTotalStake() * 1000; if (curStake <= 0) { return; } var newStake = curStake - 10; if (newStake < 0) { newStake = 0; } // Meteor.setTimeout(function () { // validateBets(); // }, 0); Betting.setMultiStake(newStake); }, 'click .inc-stake-50': function() { Session.set('betSlipError', false); // Meteor.setTimeout(function () { // validateBets(); // }, 0); Betting.setMultiStake(Betting.getTotalStake() ? ((Betting.getTotalStake() * 1000) + 50) : 50); }, 'click .dec-stake-50': function() { Session.set('betSlipError', false); var curStake = Betting.getTotalStake() * 1000; if (curStake <= 0) { return; } var newStake = curStake - 50; if (newStake < 0) { newStake = 0; } // Meteor.setTimeout(function () { // validateBets(); // }, 0); Betting.setMultiStake(newStake); }, 'keydown .stake-input, change .stake-input': function(e: MeteorTemplateEvent) { Session.set('betSlipError', false); var num = [48, 49, 50, 51, 52, 53, 54, 55, 56, 57]; var numpad = [96, 97, 98, 99, 100, 101, 102, 103, 104, 105]; var operational = [8, 16, 17, 18, 35, 36, 37, 39, 46, 91, 92, 93, 110, 188, 190]; if (num.indexOf(e.which) === -1 && numpad.indexOf(e.which) === -1 && operational.indexOf(e.which) === -1) { e.preventDefault(); e.stopPropagation(); } Meteor.setTimeout(function () { Betting.setMultiStake(+$(e.target).val().replace(',', '.') || 0); // validateBets(); }, 0); }, 'click .quick-dep': function() { Session.set('footerVisible', false); Pages.Page.go('/deposit'); }, 'click .quick-edit': function() { Session.set('betSlipError', false); }, 'click .quick-login': function() { Session.set('footerVisible', false); Session.set('betSlipError', false); Pages.go('/login'); }, 'click .quick-register': function() { Session.set('footerVisible', false); Session.set('betSlipError', false); Pages.go('/register'); }, 'change #squaredOne': function () { Session.set('acceptOddsChanges', (Session.get('acceptOddsChanges') ? false : true)); if(Users.Profile.active()) { Users.Profile.db.update({_id: Users.Profile.active()._id}, { $set: { 'siteSettings.acceptAllOdds': Session.get('acceptOddsChanges'), } }); } }, 'change #squaredOneQuickBet': function() { Session.set('useQuickBet', !Session.get('useQuickBet')); if(Users.Profile.active()) { Users.Profile.db.update({_id: Users.Profile.active()._id}, { $set: { 'siteSettings.useQuickBet': Session.get('useQuickBet'), } }); } } });