sportsbet-mobile
Version:
Sportsbet mobile
151 lines (123 loc) • 3.93 kB
text/typescript
interface Templates {
casino: Template;
}
function getGamesFilter() {
var selector: any = {};
if (Session.get('menuName')) {
var productHandles = Casino.Product.db.find({active: true}).fetch().map(function (x) {
return {urlName: x.name.replace(/\W+/g, "").toLowerCase(), handle: x.handle};
});
if (Session.get('menuName') == 'favorite-games') {
selector._id = {
$in: Casino.Favorite.db.find().map(function (fav) {
return fav.game.id;
})
}
}
else if (Session.get('menuName') == 'popular-games') {
}
else if (Session.get('menuName') == 'high-limits') {
selector.isHighLimit = true;
}
else {
var mi = Casino.MenuItem.db.findOne({handle: Session.get('menuName')});
if (mi) {
selector["category"] = {$in: (typeof mi.category.ids === 'string') ? [mi.category.ids] : mi.category.ids};
}
}
}
if (Session.get('gameSearch')) {
selector.name = new RegExp(Session.get('gameSearch'), 'i');
}
return selector;
}
Template.casino.onCreated(function() {
this.subscribe('Casino.MenuItem', {
mobile: true
});
this.subscribe('Casino.Favorite');
this.subscribe('Casino.Vote');
Session.setDefault('gameListLimit', 40);
var sort = {
'siteSettings.sportsbet.isFeatured': -1,
'siteSettings.sportsbet.isNew': -1,
'siteSettings.sportsbet.isHot': -1,
rating: -1,
name: -1
};
this.autorun(() => {
var selector: any = {type: Casino.detectGameType()};
var options: any = {};
if (Session.get('gameSearch')) {
selector.name = {$regex: Session.get('gameSearch'), $options: 'i'};
}
var menuName = Session.get('menuName');
if (menuName) {
var productHandles = Casino.Product.db.find({active: true}).fetch().map(function (x) {
return {urlName: x.name.replace(/\W+/g, "").toLowerCase(), handle: x.handle};
});
if (menuName == 'favorite-games') {
selector._id = {
$in: Casino.Favorite.db.find().map(function (fav) {
return fav.game.id;
})
}
}
else if (menuName == 'popular-games') {
}
else if (Session.get('menuName') == 'high-limits') {
selector.isHighLimit = true;
}
else {
var mi = Casino.MenuItem.db.findOne({handle: Session.get('menuName')});
if (mi) {
if(mi.type == Casino.MenuItemType.GAMES){
selector["category"] = {$in: (typeof mi.category.ids === 'string') ? [mi.category.ids] : mi.category.ids};
}
if (mi.type == Casino.MenuItemType.PRODUCTS) {
selector["product"] = {$in: (typeof mi.product.ids === 'string') ? [mi.product.ids] : mi.product.ids};
}
}
}
}
options.sort = sort;
// options.limit = Session.get('gameListLimit');
console.log('casino.ts 100', JSON.stringify(selector));
this.gameSub = this.subscribe('Casino.Game', selector, options);
});
Casino.Game.db.setSort(sort);
});
Template.casino.onRendered(function() {
this.autorun(() => {
var liveCat = Casino.Category.db.findOne({name: capitalize(('live-' + Session.get('menuName')).replace('-', ' '))});
if (Session.get('liveGamesSub') && liveCat) {
this.subscribe('Casino.Game', {category: Session.get('liveGamesSub')});
}
});
});
Template.casino.helpers({
games: function () {
var selector = getGamesFilter();
var options: any = {};
options.limit = Session.get('gameListLimit');
var games = Casino.Game.db.findSorted(selector, options).fetch();
_.each(games, function (game: Casino.Game) {
if (!game.categoryName && game.category.fetch()) {
game.categoryName = game.category.fetch().name;
}
});
return games;
}
});
Template.casino.events({
'click .navbar-toggle': function() {
var tpl = Template.instance();
tpl.setVar('showGameCategories', tpl.getVar('showGameCategories') ? false : true);
googleSend({
'eventCategory': 'Gaming',
'eventAction': 'Opened Casino game categories',
'pageVertical': 'Gaming',
'pageEventArea': 'Main'
});
}
});