sportsbet-mobile
Version:
Sportsbet mobile
196 lines (164 loc) • 5.13 kB
text/typescript
///<reference path=".#ts/client.d.ts"/>
interface Templates {
register: Template;
}
Template.register.onRendered(function() {
googleSend({
'eventCategory': 'Registration',
'eventAction': 'Started registration',
'pageEventArea': 'Main'
});
});
Template.register.helpers({
errors: function() {
return Users.Profile.db.errors('register');
},
signupButtonDisabled: function() {
return Session.get('signupButtonDisabled');
},
refCode: function() {
return $.cookie('refCode');
},
dobYears: function () {
var years = [];
var start = moment().subtract(18, 'years');
var end = moment().subtract(100, 'years');
years.push('<option>Year</option>');
while (start.format('YYYY') >= end.format('YYYY')) {
years.push('<option value="' + start.format('YYYY') + '">' + start.format('YYYY') + '</option>');
start = start.subtract(1,'years');
}
return years;
},
dobMonths: function () {
var months = [];
var start = 1;
var end = 12;
months.push('<option>Month</option>');
while (start <= end) {
months.push('<option value="' + start + '">' + start + '</option>');
start++;
}
return months;
},
dobDays: function () {
var days = [];
var start = 1;
var end = 31;
days.push('<option>Day</option>');
while (start <= end) {
days.push('<option value="' + start + '">' + start + '</option>');
start++;
}
return days;
},
registerEnabled: function() {
return Session.get('clientCountry') !== 'GB' && Session.get('clientCountry') !== 'AU' && Session.get('clientCountry') !== 'US' && Session.get('clientCountry') !== 'UM';
}
});
Template.register.events({
'keyup, change input': _.debounce(function(e: MeteorTemplateEvent) {
Users.Profile.db.validate(e.target, function(){});
}, 300),
'submit form': function(e: MeteorTemplateEvent) {
e.preventDefault();
if (Session.get('clientCountry') === 'GB' || Session.get('clientCountry') === 'AU' || Session.get('clientCountry') === 'US' || Session.get('clientCountry') === 'UM') {
return;
}
var $form = $(e.target);
var data = $form.serializeObject();
var errorContainer = $form.find('.generalError');
errorContainer.hide();
errorContainer.html('');
Session.set('signupButtonDisabled', true);
Users.Profile.db.validate(e.target, function (validationMessages) {
var isValid = true;
for (var key in validationMessages) {
var $field = $form.find('[name=' + key + ']');
var $fieldContainer = $field.parent().find('.icon');
var $messageContainer = $fieldContainer.find('span');
$fieldContainer.addClass('error');
$messageContainer.html(validationMessages[key]);
isValid = false;
}
var dateOfBirth = $("[name='year']").val() + '-' + $("[name='month']").val() + '-' + $("[name='day']").val();
if (!moment(dateOfBirth, 'YYYY-M-D', true).isValid()) {
errorContainer.append('<li>Incorrect date of birth</li>');
isValid = false;
googleSend({
'eventCategory': 'Registration',
'eventAction': 'Date of Birth Error',
'eventLabel': 'Date of Birth is incorrect',
'pageEventArea': 'Main'
});
}
else if (calcAge(moment(dateOfBirth, 'YYYY-M-D', true).toDate()) < 18) {
errorContainer.append('<li>You must be at least 18 years old to register</li>');
isValid = false;
}
if (!isValid) {
errorContainer.show();
var errs = Users.Profile.db.errors('register');
for (var errType in errs) {
errorContainer.append('<li>' + errs[errType] + '</li>');
var errMsg = errs[errType];
if (errType == 'repeatPassword') {
errType = 'Confirm Password';
}
googleSend({
'eventCategory': 'Registration',
'eventAction': errType.substr(0, 1).toUpperCase() + errType.substr(1) + ' Error',
'eventLabel': errMsg,
'pageEventArea': 'Main'
});
}
Session.set('signupButtonDisabled', false);
return;
}
Session.set('loading', true);
Accounts.createUser({
username: data.username,
email: data.email,
password: data.password,
profile: {
dateOfBirth: dateOfBirth,
refCode: $.cookie('refCode') ? $.cookie('refCode') : data.refCode,
refPage: Session.get('refPage') ? Session.get('refPage') : undefined
}
}, function (err?) {
Session.set('loading', false);
if (err) {
Log.error(err);
Session.set('signupButtonDisabled', false);
return;
}
googleSend({
'eventCategory': 'Registration',
'eventAction': 'Registration Complete',
'pageEventArea': 'Main',
'registrationsCompleted': 1
}, true);
Session.set('betSlipError', false);
Session.set('signupButtonDisabled', false);
Pages.go('/');
(<HTMLFormElement> $form[0]).reset();
Meteor.call('Fraud/getDeviceInfo', (err, res) => {
if (err) {
return;
}
Meteor.call('Fraud/RegisterLookup', res);
});
Session.set('showRegisterLanding', true);
});
});
},
'click .fa-eye': function() {
let pwdField = $('.pwd');
if (pwdField.attr('type') == 'password') {
pwdField.attr('type', 'text')
}
else {
pwdField.attr('type', 'password')
}
}
});