var firstCall = true;
var today;
var onUpdatePushBadge;
var onUnfollowClicked = async function() {
var id = $('#menu-item-unfollow').attr('data-sailor-id');
showLoader();
$('#menu-favorite').hideMenu();
var auth = {
id: localStorage.getItem('auth_id'),
hash: localStorage.getItem('auth_hash')
}
$.ajax({
url: QUERY_URL + 'sailor_unfollow',
method: 'POST',
data: {
auth: auth,
sailor: id
},
error: function (xhr, status, error) {
if (xhr.status == 0) {
toastError('Du bist momentan offline.
Stelle eine Internetverbindung her, um Deine Favoriten zu bearbeiten.');
} else {
log('Unfollow: unbekannter Fehler', status, error);
log(xhr);
toastError('Ein unbekannter Fehler ist aufgetreten. Bitte versuche es noch einmal', 5000);
}
hideLoader();
},
success: async function (data, status, xhr) {
await sync();
toastOk('Erfolgreich');
hideLoader();
}
});
}
var onFavoriteClicked = async function(id) {
var sailor = await dbGetData('sailors', id);
$('#menu-favorite').find('.menu-title').find('p').text(sailor.name);
$('#menu-item-unfollow').attr('data-sailor-id', sailor.id);
$('#menu-favorite').showMenu();
}
var siteScript = async function() {
today = getToday();
if (firstCall) {
firstCall = false;
$('#button-notifications-activate').click(function(){
pushesOpenMenu();
});
$('#a-notifications-later').click(function(){
createCookie('regatten_app_' + BOATCLASS + '_rejected_push', true, 1);
$('#card-notifications').hide();
});
if (readCookie('regatten_app_' + BOATCLASS + '_rejected_push')) {
$('#card-notifications').hide();
} else {
onUpdatePushBadge = function () {
if (!pushesPossible || (Notification.permission == 'denied')) {
$('#card-notifications').hide();
} else {
swRegistration.pushManager.getSubscription().then(function(subscription) {
var isSub = (subscription !== null);
if (isSub) {
$('#card-notifications').hide();
} else {
$('#card-notifications').show();
}
});
}
}
onUpdatePushBadge();
}
$('#menu-item-unfollow').click(onUnfollowClicked);
}
if (isLoggedIn()) {
$('#card-notloggedin').hide();
var user = await dbGetData('users', localStorage.getItem('auth_user'));
// Favorites
var follows = await dbGetData('follows');
var watched = [];
for (var i in follows) {
watched.push(await dbGetData('sailors', follows[i].sailor));
}
if (watched.length > 0) {
var year = (new Date()).getFullYear();
var ranking = (await dbGetRanking(parseDate('01.12.' + (year - 1)), parseDate('30.11.' + year), false, false))[0];
var list = '';
for (i in watched) {
sailor = watched[i];
var club = null;
if (sailor.club != null)
club = await dbGetData('clubs', sailor.club);
var rank = null;
for (r in ranking) {
if (ranking[r].id == sailor.id) {
rank = ranking[r];
break;
}
}
list += '
';
list += '
';
// Name
list += '
' + sailor.name + '
';
list += '
';
if (rank == null) {
list += '
Nicht in der Rangliste
';
} else {
// Rank
list += '
Platz ' + rank.rank + '
';
// rlp
list += '
' + rank.rlp.toFixed(3) + ' Punkte
';
}
list += '
';
}
$('#div-favorites').html(list);
$('#p-favorites').hide();
$('#div-favorites').show();
} else {
$('#div-favorites').hide();
$('#p-favorites').show();
}
$('#card-favorites').show();
// Your next
var planningsDB = await dbGetDataIndex('plannings', 'user', user.id);
var minDate = getToday();
minDate.setDate(minDate.getDate());
var maxDate = getToday();
maxDate.setDate(maxDate.getDate() + 28);
var regattas = await dbGetRegattasRange(minDate, maxDate);
var plannings = [];
for (i = planningsDB.length - 1; i >= 0; i --) {
var planning = planningsDB[i];
for (j in regattas) {
var regatta = regattas[j];
if ((regatta.id == planning.regatta) && (regatta.length > 0)) {
planning.regatta = regatta;
plannings.push(planning);
}
}
}
plannings.sort(function (a, b) {
if (a.regatta.date < b.regatta.date) return -1;
if (a.regatta.date > b.regatta.date) return 1;
return 0;
});
if (plannings.length > 0) {
list = '';
for (i in plannings) {
var planning = plannings[i];
var regatta = planning.regatta;
var club = null;
if (regatta['club'] != null)
club = await dbGetData('clubs', regatta['club']);
var dateFrom = regatta['dateFrom'];
var dateTo = regatta['dateTo'];
// output
list += '';
// ZEILE 1
// Name
list += '
' + (regatta['canceled'] == 1 ? '' : '') + regatta['name'] + (regatta['canceled'] == 1 ? '' : '') + '
';
// ZEILE 2
list += '
';
// Number
list += '
' + ((regatta['number'] != null) ? ('# ' + regatta['number']) : '') + '
';
// Club
list += '
' + ((club != null) ? club['kurz'] : '') + '
';
// Special
if (regatta.special.substr(0, 1) == '#') {
regatta.special = '* ' + regatta.special.substr(1);
}
// replace placeholders
var pos;
while ((pos = regatta.special.indexOf('$')) >= 0) {
var pos2 = regatta.special.indexOf('$', pos + 1);
if (pos2 < 0) break;
var key = regatta.special.substring(pos + 1, pos2);
var value = '';
// age class
if ((key.substr(0, 1) == 'U') && (!isNaN(value = parseInt(key.substr(1))))) {
value = 'U-' + value;
} else {
break;
}
regatta.special = regatta.special.replace('$' + key + '$', value);
}
list += '
' + regatta['special'] + '
';
// Icons
var icons = [];
if (regatta['info'] != '')
icons.push('
');
if ((regatta['meldung'] != '') && (dateTo >= today) && (regatta['meldungOffen'] == '1')) {
var color = '';
if (regatta['meldungSchluss'] != null) {
if (planning['gemeldet'] == '0') {
var ms = 0;
if (regatta['meldungEarly'] != null) {
ms = parseDate(regatta['meldungEarly']);
}
if (ms < today) {
ms = parseDate(regatta['meldungSchluss']);
}
var diff = Math.round((ms - today) / 86400000);
if (ms < today) {
color = ' color-red2-dark';
} else if (diff < 7) {
color = ' color-yellow2-dark';
}
}
}
if (planning['gemeldet'] == '0') {
color += ' fa-blink';
}
icons.push('
');
}
if (regatta['canceled'] == '1') {
icons.push('
');
}
list += '
' + icons.join(' ') + '
';
list += '
';
// ZEILE 3
list += '
';
// Date
list += '
' + formatDate("d.m.Y", dateFrom) + ' - ' + formatDate("d.m.Y", dateTo) + '
';
// RLF
list += '
' + parseFloat(regatta['rlf']).toFixed(2) + '
';
list += '
';
}
$('#div-yournext').html(list);
$('#p-yournext').hide();
$('#div-yournext').show();
} else {
$('#div-yournext').hide();
$('#p-yournext').show();
}
$('#card-yournext').show();
} else {
$('#card-favorites').hide();
$('#card-yournext').hide();
$('#card-notloggedin').show();
}
// Next
var minDate = getToday();
minDate.setDate(minDate.getDate());
var maxDate = getToday();
maxDate.setDate(maxDate.getDate() + 14);
var regattas = await dbGetRegattasRange(minDate, maxDate);
i = 0;
while (i < regattas.length) {
if (regattas[i].length < 1) {
regattas.splice(i, 1);
} else {
i ++;
}
}
if (regattas.length > 0) {
list = '';
for (i in regattas) {
var regatta = regattas[i];
var club = null;
if (regatta['club'] != null)
club = await dbGetData('clubs', regatta['club']);
var plannings = await dbGetDataIndex('plannings', 'regatta', regatta['id']);
var dateFrom = regatta['dateFrom'];
var dateTo = regatta['dateTo'];
// output
list += '';
// ZEILE 1
// Name
list += '
' + (regatta['canceled'] == 1 ? '' : '') + regatta['name'] + (regatta['canceled'] == 1 ? '' : '') + '
';
// ZEILE 2
list += '
';
// Number
list += '
' + ((regatta['number'] != null) ? ('# ' + regatta['number']) : '') + '
';
// Club
list += '
' + ((club != null) ? club['kurz'] : '') + '
';
// Special
if (regatta.special.substr(0, 1) == '#') {
regatta.special = '* ' + regatta.special.substr(1);
}
// replace placeholders
var pos;
while ((pos = regatta.special.indexOf('$')) >= 0) {
var pos2 = regatta.special.indexOf('$', pos + 1);
if (pos2 < 0) break;
var key = regatta.special.substring(pos + 1, pos2);
var value = '';
// age class
if ((key.substr(0, 1) == 'U') && (!isNaN(value = parseInt(key.substr(1))))) {
value = 'U-' + value;
} else {
break;
}
regatta.special = regatta.special.replace('$' + key + '$', value);
}
list += '
' + regatta['special'] + '
';
// Icons
var icons = [];
if (regatta['info'] != '')
icons.push('
');
if ((regatta['meldung'] != '') && (dateTo >= today) && (regatta['meldungOffen'] == '1')) {
var color = '';
var planning = null;
if (isLoggedIn()) {
var plannings = await dbGetDataIndex('plannings', 'regatta', regatta['id']);
for (id in plannings) {
if (plannings[id]['user'] == USER_ID) {
planning = plannings[id];
break;
}
}
}
if (regatta['meldungSchluss'] != null) {
if ((planning == null) || (planning['gemeldet'] == '0')) {
var ms = 0;
if (regatta['meldungEarly'] != null) {
ms = parseDate(regatta['meldungEarly']);
}
if (ms < today) {
ms = parseDate(regatta['meldungSchluss']);
}
var diff = Math.round((ms - today) / 86400000);
if (ms < today) {
color = ' color-red2-dark';
} else if (diff < 7) {
color = ' color-yellow2-dark';
}
}
}
if ((planning != null) && (planning['gemeldet'] == '0')) {
color += ' fa-blink';
}
icons.push('
');
}
if (regatta['canceled'] == '1') {
icons.push('
');
}
list += '
' + icons.join(' ') + '
';
list += '
';
// ZEILE 3
list += '
';
// Date
list += '
' + formatDate("d.m.Y", dateFrom) + ' - ' + formatDate("d.m.Y", dateTo) + '
';
// RLF
list += '
' + parseFloat(regatta['rlf']).toFixed(2) + '
';
list += '
';
}
$('#div-next').html(list);
$('#p-next').hide();
$('#div-next').show();
} else {
$('#div-next').hide();
$('#p-next').show();
}
// Last
var minDate = getToday();
minDate.setDate(minDate.getDate() - 14);
var maxDate = getToday();
maxDate.setDate(maxDate.getDate() - 1);
var regattas = await dbGetRegattasRange(minDate, maxDate);
i = 0;
while (i < regattas.length) {
if (regattas[i].length < 1) {
regattas.splice(i, 1);
} else {
i ++;
}
}
regattas.sort(function(a,b){
return b.date.localeCompare(a.date);
});
if (regattas.length > 0) {
list = '';
for (i in regattas) {
var regatta = regattas[i];
var club = null;
if (regatta['club'] != null)
club = await dbGetData('clubs', regatta['club']);
var dateFrom = regatta['dateFrom'];
var dateTo = regatta['dateTo'];
// output
list += '';
// ZEILE 1
// Name
list += '
' + (regatta['canceled'] == 1 ? '' : '') + regatta['name'] + (regatta['canceled'] == 1 ? '' : '') + '
';
// ZEILE 2
list += '
';
// Number
list += '
' + ((regatta['number'] != null) ? ('# ' + regatta['number']) : '') + '
';
// Club
list += '
' + ((club != null) ? club['kurz'] : '') + '
';
// Special
if (regatta.special.substr(0, 1) == '#') {
regatta.special = '* ' + regatta.special.substr(1);
}
// replace placeholders
var pos;
while ((pos = regatta.special.indexOf('$')) >= 0) {
var pos2 = regatta.special.indexOf('$', pos + 1);
if (pos2 < 0) break;
var key = regatta.special.substring(pos + 1, pos2);
var value = '';
// age class
if ((key.substr(0, 1) == 'U') && (!isNaN(value = parseInt(key.substr(1))))) {
value = 'U-' + value;
} else {
break;
}
regatta.special = regatta.special.replace('$' + key + '$', value);
}
list += '
' + regatta['special'] + '
';
// Icons
var icons = [];
if (regatta['info'] != '')
icons.push('
');
if (regatta['bericht'] != '')
icons.push('
');
if (regatta['canceled'] == '1') {
icons.push('
');
} else if (regatta['results'] == '1') {
icons.push('
');
}
list += '
' + icons.join(' ') + '
';
list += '
';
// ZEILE 3
list += '
';
// Date
list += '
' + formatDate("d.m.Y", dateFrom) + ' - ' + formatDate("d.m.Y", dateTo) + '
';
// RLF
list += '
' + parseFloat(regatta['rlf']).toFixed(2) + '
';
list += '
';
}
$('#div-last').html(list);
$('#p-last').hide();
$('#div-last').show();
} else {
$('#div-last').hide();
$('#p-last').show();
}
hideLoader();
}