mirror of
https://github.com/jorgev259/soc_site-astro.git
synced 2025-06-29 07:57:41 +00:00
This commit is contained in:
parent
88408eab33
commit
26c5fd2b03
6 changed files with 95 additions and 4 deletions
|
|
@ -56,7 +56,6 @@ export default defineConfig({
|
||||||
'/profile': { status: 307, destination: '/maintenance' },
|
'/profile': { status: 307, destination: '/maintenance' },
|
||||||
'/profile/[username]': { status: 307, destination: '/maintenance' },
|
'/profile/[username]': { status: 307, destination: '/maintenance' },
|
||||||
'/series/[slug]': { status: 307, destination: '/maintenance' },
|
'/series/[slug]': { status: 307, destination: '/maintenance' },
|
||||||
'/series/list': { status: 307, destination: '/maintenance' },
|
|
||||||
'/studio/[slug]': { status: 307, destination: '/maintenance' },
|
'/studio/[slug]': { status: 307, destination: '/maintenance' },
|
||||||
'/studio/list': { status: 307, destination: '/maintenance' },
|
'/studio/list': { status: 307, destination: '/maintenance' },
|
||||||
'/request': { status: 307, destination: '/maintenance' }
|
'/request': { status: 307, destination: '/maintenance' }
|
||||||
|
|
|
||||||
|
|
@ -60,7 +60,7 @@ const { session } = Astro.locals
|
||||||
<Fragment slot='items'>
|
<Fragment slot='items'>
|
||||||
<DropdownItem href='/game/latest'>{m.latestReleases()}</DropdownItem>
|
<DropdownItem href='/game/latest'>{m.latestReleases()}</DropdownItem>
|
||||||
<DropdownItem href='/game/list'>{m.gamelist()}</DropdownItem>
|
<DropdownItem href='/game/list'>{m.gamelist()}</DropdownItem>
|
||||||
<DropdownItem href='/series'>{m.series()}</DropdownItem>
|
<DropdownItem href='/series/list'>{m.series()}</DropdownItem>
|
||||||
<DropdownItem href='/publisher/list'>{m.publishers()}</DropdownItem>
|
<DropdownItem href='/publisher/list'>{m.publishers()}</DropdownItem>
|
||||||
<DropdownItem href='/platforms/list'>{m.platforms()}</DropdownItem>
|
<DropdownItem href='/platforms/list'>{m.platforms()}</DropdownItem>
|
||||||
</Fragment>
|
</Fragment>
|
||||||
|
|
|
||||||
22
src/components/letterList/SeriesList.astro
Normal file
22
src/components/letterList/SeriesList.astro
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
---
|
||||||
|
import { AlbumStatus } from '@prisma/client'
|
||||||
|
import prismaClient from 'utils/prisma-client'
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
letter: string
|
||||||
|
}
|
||||||
|
|
||||||
|
const { letter } = Astro.props
|
||||||
|
const albums = await prismaClient.series.findMany({
|
||||||
|
where: { name: { startsWith: letter } },
|
||||||
|
select: { slug: true, name: true }
|
||||||
|
})
|
||||||
|
---
|
||||||
|
|
||||||
|
{
|
||||||
|
albums.map((a) => (
|
||||||
|
<a class='text-left hover:bg-btn-gray/30 rounded-md p-2' href={`/album/${a.slug}`}>
|
||||||
|
{a.name}
|
||||||
|
</a>
|
||||||
|
))
|
||||||
|
}
|
||||||
30
src/components/letterList/SeriesListCover.astro
Normal file
30
src/components/letterList/SeriesListCover.astro
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
---
|
||||||
|
import { AlbumStatus } from '@prisma/client'
|
||||||
|
import { Image } from 'astro:assets'
|
||||||
|
import prismaClient from 'utils/prisma-client'
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
letter: string
|
||||||
|
}
|
||||||
|
|
||||||
|
const { letter } = Astro.props
|
||||||
|
const albums = await prismaClient.series.findMany({
|
||||||
|
where: { name: { startsWith: letter } },
|
||||||
|
select: { slug: true }
|
||||||
|
})
|
||||||
|
---
|
||||||
|
|
||||||
|
{
|
||||||
|
albums.map((a) => (
|
||||||
|
<a class='group text-left rounded-md p-2' href={`/album/${a.slug}`}>
|
||||||
|
<Image
|
||||||
|
src={`https://cdn.sittingonclouds.net/series/${a.slug}.png`}
|
||||||
|
alt={a.slug}
|
||||||
|
height={500}
|
||||||
|
width={500}
|
||||||
|
quality='low'
|
||||||
|
class='rounded-md scale-95 group-hover:scale-98 transition-transform'
|
||||||
|
/>
|
||||||
|
</a>
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
@ -1,13 +1,14 @@
|
||||||
---
|
---
|
||||||
interface Props {
|
interface Props {
|
||||||
letters: { letter: string; count: BigInt }[]
|
letters: { letter: string; count: BigInt }[]
|
||||||
|
sidebar?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
import BaseLayout from 'layouts/base.astro'
|
import BaseLayout from 'layouts/base.astro'
|
||||||
import Sidebar from 'components/Sidebar.astro'
|
import Sidebar from 'components/Sidebar.astro'
|
||||||
import DefaultSEO from 'components/DefaultSEO.astro'
|
import DefaultSEO from 'components/DefaultSEO.astro'
|
||||||
|
|
||||||
const { letters } = Astro.props
|
const { letters, sidebar = true } = Astro.props
|
||||||
---
|
---
|
||||||
|
|
||||||
<DefaultSEO />
|
<DefaultSEO />
|
||||||
|
|
@ -32,6 +33,6 @@ const { letters } = Astro.props
|
||||||
<slot />
|
<slot />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<Sidebar />
|
{sidebar ? <Sidebar /> : null}
|
||||||
</div>
|
</div>
|
||||||
</BaseLayout>
|
</BaseLayout>
|
||||||
|
|
|
||||||
39
src/pages/series/list/index.astro
Normal file
39
src/pages/series/list/index.astro
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
---
|
||||||
|
import prismaClient from 'utils/prisma-client'
|
||||||
|
|
||||||
|
import LetterList from 'layouts/LetterList.astro'
|
||||||
|
import AnimList from 'components/letterList/AnimList.astro'
|
||||||
|
import SeriesList from 'components/letterList/SeriesList.astro'
|
||||||
|
import SeriesListCover from 'components/letterList/SeriesListCover.astro'
|
||||||
|
|
||||||
|
const letters: { letter: string; count: BigInt }[] = await prismaClient.$queryRaw`
|
||||||
|
SELECT DISTINCT UPPER(LEFT(series.name, 1)) AS letter, COUNT(*) AS count
|
||||||
|
FROM Series_Game, series, game
|
||||||
|
WHERE Series_Game.gameSlug = game.slug
|
||||||
|
AND Series_Game.seriesSlug = series.slug
|
||||||
|
GROUP BY letter
|
||||||
|
ORDER BY letter;
|
||||||
|
`
|
||||||
|
---
|
||||||
|
|
||||||
|
<LetterList letters={letters} sidebar={false}>
|
||||||
|
<div class='flex mt-4'>
|
||||||
|
<div class='w-80'>
|
||||||
|
{
|
||||||
|
letters.map((l) => (
|
||||||
|
<div id={l.letter}>
|
||||||
|
<div class='flex uppercase text-4xl justify-center py-1.5'>{l.letter}</div>
|
||||||
|
<div class='w-full flex flex-col items-center'>
|
||||||
|
<SeriesList letter={l.letter} />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
))
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
<div class='w-full'>
|
||||||
|
<div class='grid grid-cols-3'>
|
||||||
|
{letters.map((l) => <SeriesListCover letter={l.letter} />)}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</LetterList>
|
||||||
Loading…
Add table
Add a link
Reference in a new issue