UNPKG

sportsbet-mobile

Version:
151 lines (123 loc) 3.93 kB
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' }); } });