From fb1ca6d28e603cb327be66c6d6ce10eaf9a803c2 Mon Sep 17 00:00:00 2001 From: ostertun Date: Fri, 2 Oct 2020 00:49:53 +0200 Subject: [PATCH] RA-#19 Update URL on year change --- server/scripts/rank.js | 149 ++++++++++++++++++++++--------------- server/scripts/regattas.js | 26 ++++++- 2 files changed, 109 insertions(+), 66 deletions(-) diff --git a/server/scripts/rank.js b/server/scripts/rank.js index 6e811ba..847bb62 100644 --- a/server/scripts/rank.js +++ b/server/scripts/rank.js @@ -11,7 +11,7 @@ async function onRankingClicked(id) { } } if (sailor == null) return; - + $('#menu-rank').find('.menu-title').find('p').text(sailor.name); if (lastRanking != null) { var lastRank; @@ -25,83 +25,83 @@ async function onRankingClicked(id) { } else { $('#menu-item-text').hide(); } - + list = ''; for (var i in sailor.regattas) { var entry = sailor.regattas[i]; var regatta = entry.regatta; var boat = await dbGetData('boats', entry.boat); - + var dateFrom = parseDate(regatta.date); var dateTo = parseDate(regatta.date); dateTo.setDate(dateTo.getDate() + Math.max(parseInt(regatta.length) - 1, 0)); - + list += '
'; - + // ZEILE 1 list += '
' + regatta.name + '
'; - + // ZEILE 2 list += '
'; - + // DATE list += '
' + formatDate('d.m.Y', dateFrom) + ' - ' + formatDate('d.m.Y', dateTo) + '
'; - + // m list += '
m: ' + entry.m + '
'; - + // rlf list += '
RLF: ' + parseFloat(regatta.rlf).toFixed(2) + '
'; - + list += '
'; - + // ZEILE 3 list += '
'; - + // Place list += '
Platz ' + entry.place + ' / ' + entry.fb + '
'; - + // rlp var color; if (entry.used == 0) { color = 'color-red2-dark'; } else if (entry.used == entry.m) { color = 'color-green2-dark'; } else { color = 'color-yellow2-dark'; } list += '
Punkte: ' + entry.used + ' x ' + parseFloat(entry.rlp).toFixed(2) + '
'; - + list += '
'; - + // ZEILE 4 list += '
'; - + // Sailnumber list += '
' + boat.sailnumber + '
'; - + // Boatname list += '
' + boat.name + '
'; - + list += '
'; - + // ZEILE 5... var crew = entry.crew.split(','); for (var c in crew) { var cr = await dbGetData('sailors', crew[c]); if (cr != null) { list += '
'; - + // Name list += '
' + cr.name + '
'; - + // Year list += '
' + ((cr.year != null) ? ('(' + cr.year + ')') : '') + '
'; - + list += '
'; } } - + list += '
'; } $('#div-details').html(list); - + $('#menu-rank').showMenu(); $('#menu-rank').scrollTop(0); } @@ -111,8 +111,8 @@ async function selectChange(callSiteScript = true) { var year = parseInt($('#select-year').val()); if (type == "user") { $('#select-year').parent().hide(); - $('#input-from').parent().show(); - $('#input-to').parent().show(); + $('#input-from').trigger('focusin').trigger('focusout').parent().show(); + $('#input-to').trigger('focusin').trigger('focusout').parent().show(); $('#input-jugend').parent().parent().show(); $('#input-jugstrict').parent().parent().show(); $('#button-show').show(); @@ -123,7 +123,7 @@ async function selectChange(callSiteScript = true) { $('#input-jugend').parent().parent().hide(); $('#input-jugstrict').parent().parent().hide(); $('#button-show').hide(); - + var from, to, jugend, jugstrict; switch (type) { case 'year': @@ -168,14 +168,26 @@ async function selectChange(callSiteScript = true) { } break; } - + $('#input-from').val(from); $('#input-to').val(to); $('#input-jugend').prop('checked', jugend); $('#input-jugstrict').prop('checked', jugstrict); - - if (callSiteScript && (typeof siteScript === 'function')) + + if (callSiteScript && (typeof siteScript === 'function')) { + history.replaceState(null, '', '?type=' + type + '&year=' + year) siteScript(); + } + } +} + +function buttonShowPressed() { + if (typeof siteScript === 'function') { + var chboxes = ''; + if ($('#input-jugend').prop('checked')) chboxes += '&jugend=on' + if ($('#input-jugstrict').prop('checked')) chboxes += '&jugstrict=on' + history.replaceState(null, '', '?type=user&from=' + $('#input-from').val() + "&to=" + $('#input-to').val() + chboxes) + siteScript(); } } @@ -186,10 +198,23 @@ function initSelects() { if (year === null) year = new Date().getFullYear(); $('#select-type').val(type); - + $('#select-year').html(''); $('#select-year').val(year); - + + if (type == "user") { + var from = findGetParameter('from'); + var to = findGetParameter('to'); + if (from === null) from = formatDate('Y-m-d') + if (to === null) to = formatDate('Y-m-d') + $('#input-from').val(from).trigger('focusin').trigger('focusout'); + $('#input-to').val(to).trigger('focusin').trigger('focusout'); + var jugend = findGetParameter('jugend'); + var jugstrict = findGetParameter('jugstrict'); + $('#input-jugend').prop('checked', jugend !== null); + $('#input-jugstrict').prop('checked', jugstrict !== null); + } + selectChange(false); } @@ -218,17 +243,17 @@ var siteScript = async function() { initSelects(); $('#select-type').change(selectChange); $('#select-year').change(selectChange); - $('#button-show').click(siteScript); + $('#button-show').click(buttonShowPressed); $('#input-search').on('input', drawList); } - + var minDate = parseDate($('#input-from').val()); var maxDate = parseDate($('#input-to').val()); var jugend = $('#input-jugend').prop('checked'); var jugstrict = $('#input-jugstrict').prop('checked'); var dbRanking = await dbGetRanking(minDate, maxDate, jugend, jugstrict); ranking = dbRanking[0]; - + lastRanking = null; if (($('#select-type').val() == 'year') || ($('#select-type').val() == 'youth')) { lastRanking = {}; @@ -240,9 +265,9 @@ var siteScript = async function() { lastRanking[lDbRanking[i].id] = lDbRanking[i].rank; } } - + var selectedYear = $('#select-year').val(); - + var years = await dbGetData('years'); years.sort(function (a, b) { if (a['year'] > b['year']) return -1; @@ -256,7 +281,7 @@ var siteScript = async function() { } $('#select-year').html(options); $('#select-year').val(selectedYear); - + if (dbRanking[1].length > 0) { $('#card-noresults').show(); list = ''; @@ -269,18 +294,18 @@ var siteScript = async function() { } else { $('#card-noresults').hide(); } - + var count = ranking.length; if (count > 0) { $('#input-search').parent().show(); - + var dsvEnd = false; - + rows = []; - + for (id in ranking) { var entry = ranking[id]; - + for (var i in entry.regattas) { entry.regattas[i].regatta = await dbGetData('regattas', entry.regattas[i].regatta); } @@ -288,26 +313,26 @@ var siteScript = async function() { entry.regattas.sort(function (a,b) { return a.regatta.date.localeCompare(b.regatta.date); }); - + var club = null; if (entry['club'] != null) club = await dbGetData('clubs', entry['club']); - + var row = { keywords: [], content: '' }; row.keywords.push(entry['name']); if (entry['year'] != null) row.keywords.push(entry['year']); if (club != null) row.keywords.push(club['kurz'], club['name']); - + if (!dsvEnd && (entry.m < 9)) { rows.push(null); dsvEnd = true; } - + row.content += '
'; - + // ZEILE 1 row.content += '
'; - + // Rank var icon = ''; if (lastRanking != null) { @@ -321,39 +346,39 @@ var siteScript = async function() { icon = ' '; } row.content += '
' + icon + '' + entry.rank + '.
'; - + // m row.content += '
m = ' + entry.m + '
'; - + // rlp row.content += '
' + entry.rlp.toFixed(3) + '
'; - + row.content += '
'; - + // ZEILE 2 row.content += '
'; - + // Name row.content += '
' + entry.name + '
'; - + // Year row.content += '
' + ((entry.year != null) ? ('(' + entry.year + ')') : '') + '
'; - + row.content += '
'; - + rows.push(row); } - + if (!dsvEnd) { rows.push(null); } - + drawList(); - + } else { $('#div-rank').html('Keine Ergebnisse gefunden!'); $('#input-search').parent().hide(); } - + hideLoader(); -} \ No newline at end of file +} diff --git a/server/scripts/regattas.js b/server/scripts/regattas.js index ffe2c6b..3c667e6 100644 --- a/server/scripts/regattas.js +++ b/server/scripts/regattas.js @@ -1,8 +1,8 @@ function selectChange(callSiteScript = true) { var val = $('#select-year').val(); if (val == "user") { - $('#input-from').parent().show(); - $('#input-to').parent().show(); + $('#input-from').trigger('focusin').trigger('focusout').parent().show(); + $('#input-to').trigger('focusin').trigger('focusout').parent().show(); $('#button-show').show(); } else { $('#input-from').parent().hide(); @@ -12,8 +12,17 @@ function selectChange(callSiteScript = true) { $('#input-from').val(val + '-01-01'); $('#input-to').val(val + '-12-31'); - if (callSiteScript && (typeof siteScript === 'function')) + if (callSiteScript && (typeof siteScript === 'function')) { + history.replaceState(null, '', '?year=' + val); siteScript(); + } + } +} + +function buttonShowPressed() { + if (typeof siteScript === 'function') { + history.replaceState(null, '', '?year=user&from=' + $('#input-from').val() + "&to=" + $('#input-to').val()) + siteScript(); } } @@ -24,6 +33,15 @@ function initYear() { $('#select-year').html(''); $('#select-year').val(year); + if (year == "user") { + var from = findGetParameter('from'); + var to = findGetParameter('to'); + if (from === null) from = formatDate('Y-m-d') + if (to === null) to = formatDate('Y-m-d') + $('#input-from').val(from).trigger('focusin').trigger('focusout'); + $('#input-to').val(to).trigger('focusin').trigger('focusout'); + } + selectChange(false); } @@ -50,7 +68,7 @@ var siteScript = async function() { firstCall = false; initYear(); $('#select-year').change(selectChange); - $('#button-show').click(siteScript); + $('#button-show').click(buttonShowPressed); $('#input-search').on('input', drawList); }