parsedData = {
if (!rawData) return [];
return d3.csvParse(rawData, d => {
const parseTime = timeStr => {
if (!timeStr) return null;
const [hours, minutes, seconds] = timeStr.split(':').map(Number);
const date = new Date(d.date);
date.setHours(hours, minutes, seconds);
return date;
};
const dateObj = new Date(d.date);
return {
date: dateObj,
month: dateObj.getMonth() + 1,
day: dateObj.getDate(),
sunrise: parseTime(d.sunrise),
sunset: parseTime(d.sunset),
dayLength: (parseTime(d.sunset) - parseTime(d.sunrise)) / (1000 * 60 * 60)
};
});
}