diff --git a/web/view.js b/web/view.js index 6c0c667..5971267 100644 --- a/web/view.js +++ b/web/view.js @@ -18,71 +18,34 @@ function exportCSV() { var startDate = new Date(startInput.value) var endDate = new Date(endInput.value) - var roomRE = new RegExp(gameInput.value || '.*') + var gameRE = new RegExp(gameInput.value || '.*') - csv = '"ftracker-export",' - days = [] - - var tc = new Date(startDate.getTime()) - tc.setHours(1,0,0,0) - while (tc < endDate) { - var isodate = tc.toISOString().split('T')[0] - csv += ('"' + isodate + '",') - days.push(isodate) - tc.setDate(tc.getDate() + 1); - } - - csv = csv.replace(/,$/, '') - - csv += '\n' + csv = 'timestamp,name,game,checkpoint\n' for (var [name, list] of Object.entries(data)) { - csv += '"' + name + '"' - for (day of days) { + for (entry of list) { - csv += ',"' + if (entry.game.match(gameRE) == null) + continue - daytexts = [] + var arrD = new Date(entry.arrival) - for (entry of list) { + if (arrD < startDate || arrD > endDate) + continue - if (entry.room.match(roomRE) == null) - continue + var arrTS = localISOTimeSeconds(arrD) - var arrD = new Date(entry.arrival) - var depD = entry.departure ? new Date(entry.departure) : new Date() - - if (depD < startDate || arrD > endDate) - continue - - var [arrDay, arrT] = localISOTimeMinutes(arrD).split('T') - var [depDay, depT] = localISOTimeMinutes(depD).split('T') - - if ((arrDay == day) && (depDay == day)) { - daytexts.push(arrT + '-' + depT + ' (' + entry.room + ')') - } else if (arrDay == day) { - daytexts.push(arrT + '-... (' + entry.room + ')') - } else if (depDay == day) { - daytexts.push('...-' + depT + ' (' + entry.room + ')') - } - - } - - csv += daytexts.join('\n') - - csv += '"' + csv += `${arrTS},${name},${entry.game},${entry.checkpoint}\n` } - csv += '\n' - } var element = document.createElement('a'); element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(csv)); - element.setAttribute('download', 'ftracker-export.csv'); + element.setAttribute('download', 'schnitzeljagd-export.csv'); element.style.display = 'none'; document.body.appendChild(element); element.click(); @@ -251,12 +214,18 @@ function loadData() { } -function localISOTimeMinutes(date) { +function localISOTimeSeconds(date) { var tzoffset = date.getTimezoneOffset() * 60000; //offset in milliseconds var localISOTime = (new Date(date - tzoffset)).toISOString().slice(0, -1); - return localISOTime.split(':').slice(0,2).join(':') + return localISOTime + +} + +function localISOTimeMinutes(date) { + + return localISOTimeSeconds(date).split(':').slice(0,2).join(':') }