Finally also migrate CSV export function

This commit is contained in:
Oskar Winkels 2025-09-11 12:16:24 +02:00
parent dfcfe86fdb
commit 3622978e55
Signed by: o.winkels
GPG Key ID: E7484A06E99DAEF1

View File

@ -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(':')
}