UNPKG

sportsbet-mobile

Version:
120 lines (104 loc) 2.72 kB
interface Templates { sportsBrowseCategory: Template; } Template.sportsBrowseCategory.onCreated(function() { disableSite(); }); Template.sportsBrowseCategory.onRendered(function() { var categoriesSub; this.autorun(() => { categoriesSub = this.subscribe('betting/Category', {_id: Session.get('opened-category')}, {}, ['parent', 'parent.parent']); }); this.autorun(() => { if (!categoriesSub.ready()) { return; } let category = Betting.Category.db.findOne({_id: Session.get('opened-category')}); if (!category) { return; } let root = category.root(); if (!root) { return; } let categoryConstrucor = { $or: [ {liveEventCount: {$gt: 0}}, {eventCount: {$gt: 0}} ] }; let categoryOptions = { fields: { name: 1, children: 1, competitions: 1, isFeatured: 1, parent: 1 } }; this.subscribe('betting/Category', {parent: root._id}, {sort: {name: 1}}, [ { name: 'children', selector: categoryConstrucor, options: categoryOptions }, { name: 'children.children', selector: categoryConstrucor, options: categoryOptions }, { name: 'children.children.children', selector: categoryConstrucor, options: categoryOptions } ], function() { enableSite(); }); }); }); Template.sportsBrowseCategory.helpers({ categories: function() { let activeCategory = Betting.Category.db.findOne({_id: Session.get('opened-category')}); if (!activeCategory) { return; } let rootCategory = activeCategory.root(); return Betting.Category.db.find({ parent: rootCategory._id, $or: [ {isFeatured: false}, {isFeatured: {$exists: false}} ] }, {sort: {name: 1}}).fetch(); } }); Template.sportsBrowseCategory.events({ 'click .menu a': function(e: MeteorTemplateEvent) { e.stopPropagation(); var row = $(e.currentTarget); if (row.hasClass('all')) { $('#navTabs a[href="#upcoming"]').tab('show'); Pages.go(`/sportsbook/pre-live/${this.makeSeoString()}/events/${this[0].parent.id}`); } else { if (this.children.count()) { var children = row.next().children(); if (children.hasClass('hidden')) { children.removeClass('hidden'); row.find('span').addClass('expanded'); } else { row.find('span').removeClass('expanded'); children.addClass('hidden'); } } else { $('#navTabs a[href="#upcoming"]').tab('show'); Pages.go(`/sports/pre-live/${this.makeSeoString()}/events/${this._id}`); } } }, 'click #tab-upcoming': function() { let category = Betting.Category.db.findOne({_id: Session.get('opened-category')}); Pages.go('/sports/pre-live/' + category.makeSeoString() + '/events/' + category._id); } });