oliverdavies.uk/src/pages/talks/index.astro

37 lines
1,016 B
Plaintext

---
import ListingPage from "~/components/ListingPage.astro";
import _ from "lodash";
import { getCollection } from 'astro:content';
const talks = await getCollection('talk');
const talkCount = _(talks)
.flatMap((talk) => talk.data.events)
.size();
const sortedTalks = talks
.map((talk) => {
const slug = `/talks/${talk.slug}`
return { slug, item: talk };
})
.sort((b, a) => {
const events = [
a.item.data.events[a.item.data.events.length - 1],
b.item.data.events[b.item.data.events.length - 1],
];
return (
new Date(events[0].date).valueOf() - new Date(events[1].date).valueOf()
);
});
---
<ListingPage items={sortedTalks} title="Talks and workshops">
<p slot="intro">
Starting with my first talk in September 2012, I have given {talkCount} presentations
and workshops at various conferences and meetups, in-person and remotely, on
topics including PHP, Drupal, automated testing, Git, CSS, and systems administration.
</p>
</ListingPage>