|
|
@ -4,28 +4,25 @@ import Header from '../components/Header.astro'
|
|
|
|
import Footer from '../components/Footer.astro'
|
|
|
|
import Footer from '../components/Footer.astro'
|
|
|
|
import Bubble from '../components/Bubble.astro'
|
|
|
|
import Bubble from '../components/Bubble.astro'
|
|
|
|
|
|
|
|
|
|
|
|
import currentMacchinisti from '../data/current-macchinisti.json'
|
|
|
|
import macchinisti from '@/data/macchinisti.yaml'
|
|
|
|
import pastMacchinisti from '../data/past-macchinisti.json'
|
|
|
|
macchinisti.sort((a, b) => b.entranceDate - a.entranceDate)
|
|
|
|
|
|
|
|
|
|
|
|
// Import all images from assets folder
|
|
|
|
// Import all images from assets folder
|
|
|
|
const images = import.meta.glob('@/assets/macchinisti/*.{jpg,jpeg,png,gif}', {
|
|
|
|
const images = Object.fromEntries(
|
|
|
|
eager: true
|
|
|
|
Object.entries(
|
|
|
|
})
|
|
|
|
import.meta.glob<{ default: ImageMetadata }>('@/assets/macchinisti/*', {
|
|
|
|
|
|
|
|
eager: true,
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
).map(([path, module]) => [path.split('/').pop()!.split('.')[0], module])
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
// Sort by dateIn
|
|
|
|
const currentMacchinisti = macchinisti.filter(macchinista => !macchinista.exitDate)
|
|
|
|
const sortedCurrent = currentMacchinisti.sort((a, b) => parseInt(a.dateIn) - parseInt(b.dateIn))
|
|
|
|
const pastMacchinisti = macchinisti.filter(macchinista => macchinista.exitDate)
|
|
|
|
const sortedPast = pastMacchinisti.sort((a, b) => parseInt(a.dateIn) - parseInt(b.dateIn))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Define a fallback image metadata
|
|
|
|
const getMacchinistaPicture = (fullName: string) => {
|
|
|
|
const fallbackImage = { default: 'assets/macchinisti/fallback.jpg' }
|
|
|
|
const macchinistaId = fullName.toLowerCase().replace(/\s+/g, '-')
|
|
|
|
|
|
|
|
const { default: image } = images[macchinistaId] ?? images['fallback']
|
|
|
|
// Function to get image for a macchinista
|
|
|
|
return image
|
|
|
|
const getImage = (fullName: string) => {
|
|
|
|
|
|
|
|
const imageName = fullName.toLowerCase().replaceAll(' ', '-')
|
|
|
|
|
|
|
|
const imageModule = Object.entries(images).find(([path]) =>
|
|
|
|
|
|
|
|
path.includes(imageName)
|
|
|
|
|
|
|
|
)?.[1]
|
|
|
|
|
|
|
|
return imageModule || fallbackImage
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
---
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
@ -40,42 +37,39 @@ const getImage = (fullName: string) => {
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<div class="bubble-array">
|
|
|
|
<div class="bubble-array">
|
|
|
|
{sortedCurrent.map(async (macchinista) => (
|
|
|
|
{
|
|
|
|
|
|
|
|
currentMacchinisti.map(macchinista => (
|
|
|
|
<Bubble
|
|
|
|
<Bubble
|
|
|
|
image={(getImage(macchinista.fullName) as { default: string }).default as unknown as ImageMetadata}
|
|
|
|
image={getMacchinistaPicture(macchinista.fullName)}
|
|
|
|
fullName={macchinista.fullName}
|
|
|
|
fullName={macchinista.fullName}
|
|
|
|
date={`${macchinista.dateIn}—Presente`}
|
|
|
|
entranceDate={macchinista.entranceDate}
|
|
|
|
description={macchinista.description}
|
|
|
|
description={macchinista.description}
|
|
|
|
social={{
|
|
|
|
social={macchinista.social}
|
|
|
|
...(macchinista.github && { github: macchinista.github }),
|
|
|
|
|
|
|
|
...(macchinista.website && { website: macchinista.website }),
|
|
|
|
|
|
|
|
...(macchinista.linkedin && { linkedin: macchinista.linkedin })
|
|
|
|
|
|
|
|
}}
|
|
|
|
|
|
|
|
/>
|
|
|
|
/>
|
|
|
|
))}
|
|
|
|
))
|
|
|
|
|
|
|
|
}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<div class="card large" style={{ '--card-base': '#6BD6E1' }}>
|
|
|
|
<div class="card large" style={{ '--card-base': '#6BD6E1' }}>
|
|
|
|
<div class="title">Ex Macchinisti</div>
|
|
|
|
<div class="title"><s>Deus</s> Ex Macchinisti</div>
|
|
|
|
<div class="text">
|
|
|
|
<div class="text">
|
|
|
|
<p>Gli vogliamo molto bene, hanno fatto grandi cose!</p>
|
|
|
|
<p>Gli vogliamo molto bene, hanno fatto grandi cose!</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<div class="bubble-array">
|
|
|
|
<div class="bubble-array">
|
|
|
|
{sortedPast.map(async (macchinista) => (
|
|
|
|
{
|
|
|
|
|
|
|
|
pastMacchinisti.map(macchinista => (
|
|
|
|
<Bubble
|
|
|
|
<Bubble
|
|
|
|
image={(getImage(macchinista.fullName) as { default: string }).default as unknown as ImageMetadata}
|
|
|
|
image={getMacchinistaPicture(macchinista.fullName)}
|
|
|
|
fullName={macchinista.fullName}
|
|
|
|
fullName={macchinista.fullName}
|
|
|
|
date={`${macchinista.dateIn}—${macchinista.dateOut}`}
|
|
|
|
entranceDate={macchinista.entranceDate}
|
|
|
|
|
|
|
|
exitDate={macchinista.exitDate}
|
|
|
|
description={macchinista.description}
|
|
|
|
description={macchinista.description}
|
|
|
|
social={{
|
|
|
|
social={macchinista.social}
|
|
|
|
...(macchinista.github && { github: macchinista.github }),
|
|
|
|
|
|
|
|
...(macchinista.website && { website: macchinista.website }),
|
|
|
|
|
|
|
|
...(macchinista.linkedin && { linkedin: macchinista.linkedin })
|
|
|
|
|
|
|
|
}}
|
|
|
|
|
|
|
|
/>
|
|
|
|
/>
|
|
|
|
))}
|
|
|
|
))
|
|
|
|
|
|
|
|
}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</main>
|
|
|
|
</main>
|
|
|
|
<Footer />
|
|
|
|
<Footer />
|
|
|
|