sportsbet-mobile
Version:
Sportsbet mobile
120 lines (104 loc) • 2.72 kB
text/typescript
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);
}
});