Finally also migrate CSV export function
This commit is contained in:
		
							parent
							
								
									dfcfe86fdb
								
							
						
					
					
						commit
						3622978e55
					
				
							
								
								
									
										61
									
								
								web/view.js
									
									
									
									
									
								
							
							
						
						
									
										61
									
								
								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) { | ||||
| 
 | ||||
| 			csv += ',"' | ||||
| 
 | ||||
| 			daytexts = [] | ||||
| 
 | ||||
| 		for (entry of list) { | ||||
| 
 | ||||
| 				if (entry.room.match(roomRE) == null) | ||||
| 			if (entry.game.match(gameRE) == null) | ||||
| 				continue | ||||
| 
 | ||||
| 			var arrD = new Date(entry.arrival) | ||||
| 				var depD = entry.departure ? new Date(entry.departure) : new Date() | ||||
| 
 | ||||
| 				if (depD < startDate || arrD > endDate) | ||||
| 			if (arrD < startDate || arrD > endDate) | ||||
| 				continue | ||||
| 
 | ||||
| 				var [arrDay, arrT] = localISOTimeMinutes(arrD).split('T') | ||||
| 				var [depDay, depT] = localISOTimeMinutes(depD).split('T') | ||||
| 			var arrTS = localISOTimeSeconds(arrD) | ||||
| 
 | ||||
| 				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 += `${arrTS},${name},${entry.game},${entry.checkpoint}\n` | ||||
| 
 | ||||
| 		} | ||||
| 
 | ||||
| 			csv += daytexts.join('\n') | ||||
| 
 | ||||
| 			csv += '"' | ||||
| 
 | ||||
| 		} | ||||
| 
 | ||||
| 		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(':') | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user