openreplay/frontend/app/components/Kai/utils.ts
2025-05-21 16:29:21 +02:00

36 lines
1,005 B
TypeScript

import { DateTime } from 'luxon';
type DatedEntry = {
date: string;
entries: { datetime: string }[];
}
export function splitByDate(entries: { datetime: string }[]) {
const today = DateTime.now().startOf('day');
const yesterday = today.minus({ days: 1 });
const result: DatedEntry[] = [
{ date: 'Today', entries: [] },
{ date: 'Yesterday', entries: [] },
];
entries.forEach((ent) => {
const entryDate = DateTime.fromISO(ent.datetime).startOf('day');
if (entryDate.toMillis() === today.toMillis()) {
result[0].entries.push(ent);
} else if (entryDate.toMillis() === yesterday.toMillis()) {
result[1].entries.push(ent);
} else {
const date = entryDate.toFormat('dd LLL, yyyy')
const existingEntry = result.find((r) => r.date === date);
if (existingEntry) {
existingEntry.entries.push(ent);
} else {
result.push({ entries: [ent], date });
}
}
});
return result.filter((r) => r.entries.length > 0);
}