feat: toon leeftijd naast geboortedatum in persoon-detailpanel

Made-with: Cursor
This commit is contained in:
2026-04-14 21:41:08 +02:00
parent cb16cf9091
commit eec222d423

View File

@@ -64,6 +64,31 @@ function formatDateOfBirth(dateStr: string) {
return dobFormatter.format(new Date(`${dateStr}T00:00:00`)) return dobFormatter.format(new Date(`${dateStr}T00:00:00`))
} }
/** Age in full years from a YYYY-MM-DD string; null if invalid or out of range. */
function calculateAge(dateStr: string): number | null {
const birth = new Date(`${dateStr}T12:00:00`)
if (Number.isNaN(birth.getTime())) {
return null
}
const today = new Date()
let age = today.getFullYear() - birth.getFullYear()
const monthDiff = today.getMonth() - birth.getMonth()
const dayDiff = today.getDate() - birth.getDate()
if (monthDiff < 0 || (monthDiff === 0 && dayDiff < 0)) {
age--
}
if (age < 0 || age > 130) {
return null
}
return age
}
function formatDateOfBirthDisplay(dateStr: string): string {
const formatted = formatDateOfBirth(dateStr)
const age = calculateAge(dateStr)
return age !== null ? `${formatted} (${age} jaar)` : formatted
}
function getInitials(name: string) { function getInitials(name: string) {
return name return name
.split(' ') .split(' ')
@@ -385,7 +410,7 @@ function handleManualLink(userId: string) {
/> />
</template> </template>
<VListItemTitle>Geboortedatum</VListItemTitle> <VListItemTitle>Geboortedatum</VListItemTitle>
<VListItemSubtitle>{{ person.date_of_birth ? formatDateOfBirth(person.date_of_birth) : 'Niet opgegeven' }}</VListItemSubtitle> <VListItemSubtitle>{{ person.date_of_birth ? formatDateOfBirthDisplay(person.date_of_birth) : 'Niet opgegeven' }}</VListItemSubtitle>
</VListItem> </VListItem>
<VListItem> <VListItem>