diff --git a/server/scripts/onRegattaClicked.js b/server/scripts/onRegattaClicked.js index 057c739..b6a1fc7 100644 --- a/server/scripts/onRegattaClicked.js +++ b/server/scripts/onRegattaClicked.js @@ -6,15 +6,38 @@ async function onRegattaClicked(id) { var dateTo = parseDate(regatta['date']); dateTo.setDate(dateTo.getDate() + Math.max(parseInt(regatta['length']) - 1, 0)); + var text = []; var specialFields = await dbGetClassProp('special-fields'); if (specialFields === null) specialFields = {}; if (regatta.special.substr(0, 1) == '#') { regatta.special = regatta.special.substr(1); if (typeof specialFields[regatta.special] !== 'undefined') { - $('#menu-item-special').text(specialFields[regatta.special]); - } else { - $('#menu-item-special').text('ERROR'); + text.push(specialFields[regatta.special]); } + } + 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); + + // age class + if ((key.substr(0, 1) == 'U') && (!isNaN(value = parseInt(key.substr(1))))) { + var year = parseDate(regatta.date).getFullYear(); + year = year - value + 1; + text.push('Jahrgänge ' + year + ' und jünger'); + } else { + break; + } + + regatta.special = regatta.special.replace('$' + key + '$', ''); + } + if (text.length > 0) { + text.sort(); + for (i in text) { + text[i] = $('
').text(text[i]).html(); + } + $('#menu-item-special').html(text.join('
')); $('#menu-item-special').show(); } else { $('#menu-item-special').hide(); diff --git a/server/scripts/regattas.js b/server/scripts/regattas.js index 420a48d..076b786 100644 --- a/server/scripts/regattas.js +++ b/server/scripts/regattas.js @@ -162,6 +162,27 @@ var siteScript = async function() { entry.special = 'ERROR'; } } + // replace placeholders + var pos; + while ((pos = entry.special.indexOf('$')) >= 0) { + var pos2 = entry.special.indexOf('$', pos + 1); + if (pos2 < 0) break; + var key = entry.special.substring(pos + 1, pos2); + + var value = ''; + // age class + if ((key.substr(0, 1) == 'U') && (!isNaN(value = parseInt(key.substr(1))))) { + var year = parseDate(entry.date).getFullYear(); + year = year - value + 1; + var text = 'Jahrgänge ' + year + ' und jünger'; + value = 'U-' + value; + specialShown[value] = text; + } else { + break; + } + + entry.special = entry.special.replace('$' + key + '$', value); + } row.content += '
' + entry.special + '
'; // Icons @@ -239,9 +260,12 @@ var siteScript = async function() { rows.push(null); } - if (Object.keys(specialShown).length > 0) { + var specialKeys = Object.keys(specialShown); + if (specialKeys.length > 0) { + specialKeys.sort(); var specialText = ''; - for (key in specialShown) { + for (i in specialKeys) { + var key = specialKeys[i]; specialText += '* ' + key + ': ' + specialShown[key] + '
'; } $('#card-special').find('p').html(specialText);