sportsbet-mobile
Version:
Sportsbet mobile
303 lines (241 loc) • 6.91 kB
text/typescript
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'),
}
});
}
}
});