Removed unnecessary types and fixed some bugs
This commit is contained in:
parent
441d8a42a3
commit
62e3869ce9
8 changed files with 16 additions and 46 deletions
|
@ -2,7 +2,7 @@
|
||||||
export interface Props {
|
export interface Props {
|
||||||
slug: string
|
slug: string
|
||||||
title: string
|
title: string
|
||||||
questReleaseDate: string
|
questReleaseDate: Date
|
||||||
shortdescription: string
|
shortdescription: string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11,9 +11,10 @@ const options_date: Intl.DateTimeFormatOptions = {
|
||||||
month: 'long',
|
month: 'long',
|
||||||
day: '2-digit',
|
day: '2-digit',
|
||||||
}
|
}
|
||||||
|
|
||||||
const { shortdescription, questReleaseDate, slug, title } = Astro.props
|
const { shortdescription, questReleaseDate, slug, title } = Astro.props
|
||||||
const url = `/database/${slug}`
|
const url = `/database/${slug}`
|
||||||
const render_date = new Date(questReleaseDate).toLocaleDateString(
|
const render_date = questReleaseDate.toLocaleDateString(
|
||||||
'en-GB',
|
'en-GB',
|
||||||
options_date
|
options_date
|
||||||
)
|
)
|
||||||
|
|
|
@ -1,12 +1,11 @@
|
||||||
---
|
---
|
||||||
import type { ImageMetadata } from 'astro'
|
|
||||||
import { Image } from 'astro:assets'
|
import { Image } from 'astro:assets'
|
||||||
import { plsLoadImage } from '../utils/tools'
|
import { plsLoadImage } from '../utils/tools'
|
||||||
import type { GlobImage } from '../types/generic'
|
import type { GlobImage } from '../types/generic'
|
||||||
export interface Props {
|
export interface Props {
|
||||||
title: string
|
title: string
|
||||||
link: string
|
link: string
|
||||||
date: string
|
date: Date
|
||||||
servant: string
|
servant: string
|
||||||
turns: string
|
turns: string
|
||||||
runner: string
|
runner: string
|
||||||
|
@ -26,7 +25,7 @@ const servant_images = import.meta.glob<GlobImage>(
|
||||||
)
|
)
|
||||||
const loaded_image = plsLoadImage(servant_images, servantImagePath)
|
const loaded_image = plsLoadImage(servant_images, servantImagePath)
|
||||||
|
|
||||||
const formatted_date = new Date(date).toLocaleDateString('de-DE', options_date)
|
const formatted_date = date.toLocaleDateString('de-DE', options_date)
|
||||||
const arialabel = `By ${runner} • ${formatted_date} ${turns}`
|
const arialabel = `By ${runner} • ${formatted_date} ${turns}`
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ const taInfo = defineCollection({
|
||||||
schema: z.object({
|
schema: z.object({
|
||||||
info: z.object({
|
info: z.object({
|
||||||
title: z.string(),
|
title: z.string(),
|
||||||
questReleaseDate: z.string(),
|
questReleaseDate: z.string().transform((str) => new Date(str)),
|
||||||
shortdescription: z.string(),
|
shortdescription: z.string(),
|
||||||
description: z.string(),
|
description: z.string(),
|
||||||
fightNumber: z.number().default(1),
|
fightNumber: z.number().default(1),
|
||||||
|
@ -14,7 +14,7 @@ const taInfo = defineCollection({
|
||||||
z.object({
|
z.object({
|
||||||
title: z.string(),
|
title: z.string(),
|
||||||
link: z.string().url(),
|
link: z.string().url(),
|
||||||
date: z.string(),
|
date: z.string().transform((str) => new Date(str)),
|
||||||
servant: z.string(),
|
servant: z.string(),
|
||||||
turns: z.string(),
|
turns: z.string(),
|
||||||
runner: z.string(),
|
runner: z.string(),
|
||||||
|
|
|
@ -11,7 +11,7 @@ export interface Props {
|
||||||
const { datafile } = Astro.props
|
const { datafile } = Astro.props
|
||||||
const taEntry = await plsLoadTAEntry(datafile)
|
const taEntry = await plsLoadTAEntry(datafile)
|
||||||
const pagetitle = `${taEntry.info.title} - FGO TA`
|
const pagetitle = `${taEntry.info.title} - FGO TA`
|
||||||
taEntry.data.sort((a, b) => Date.parse(b.date) - Date.parse(a.date))
|
taEntry.data.sort((a, b) => b.date.valueOf() - a.date.valueOf() )
|
||||||
---
|
---
|
||||||
|
|
||||||
<Layout
|
<Layout
|
||||||
|
|
|
@ -8,12 +8,8 @@ const description = 'FGO NA TA Database'
|
||||||
const fulldata = await getCollection('taInfoData')
|
const fulldata = await getCollection('taInfoData')
|
||||||
|
|
||||||
fulldata.sort(
|
fulldata.sort(
|
||||||
(a, b) => Date.parse(b.data.info.questReleaseDate) - Date.parse(a.data.info.questReleaseDate) || b.data.info.fightNumber - a.data.info.fightNumber
|
(a, b) => b.data.info.questReleaseDate.valueOf() - a.data.info.questReleaseDate.valueOf() || b.data.info.fightNumber - a.data.info.fightNumber
|
||||||
)
|
)
|
||||||
const infodata = fulldata.map((quest) => ({
|
|
||||||
...quest.data.info,
|
|
||||||
slug: quest.id
|
|
||||||
}))
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -23,7 +19,7 @@ const infodata = fulldata.map((quest) => ({
|
||||||
descriptionOverride={description}
|
descriptionOverride={description}
|
||||||
>
|
>
|
||||||
<DatabaseSection title="FGO NA TA Database">
|
<DatabaseSection title="FGO NA TA Database">
|
||||||
{infodata.map((quest) => <QuestListing { ...quest } />)}
|
{fulldata.map((quest) => <QuestListing { ...{...quest.data.info, slug: quest.id} } />)}
|
||||||
</DatabaseSection>
|
</DatabaseSection>
|
||||||
</Layout>
|
</Layout>
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
import type { FileData } from "./ta"
|
|
||||||
|
|
||||||
export interface IconsLookup {
|
export interface IconsLookup {
|
||||||
[key: string]: ImageMetadata
|
[key: string]: ImageMetadata
|
||||||
}
|
}
|
||||||
|
@ -7,7 +5,6 @@ export interface IconsLookup {
|
||||||
interface GlobGeneric<T> {
|
interface GlobGeneric<T> {
|
||||||
default: T
|
default: T
|
||||||
}
|
}
|
||||||
|
|
||||||
export type GlobAny = GlobGeneric<any>
|
|
||||||
export type GlobFiledata = GlobGeneric<FileData>
|
|
||||||
export type GlobImage = GlobGeneric<ImageMetadata>
|
export type GlobImage = GlobGeneric<ImageMetadata>
|
||||||
|
|
||||||
|
export type ImportRecord<T> = Record<string, () => Promise<T>>
|
|
@ -1,21 +0,0 @@
|
||||||
interface TAData {
|
|
||||||
title: string
|
|
||||||
link: string
|
|
||||||
servant: string
|
|
||||||
turns: string
|
|
||||||
runner: string
|
|
||||||
date: string
|
|
||||||
}
|
|
||||||
|
|
||||||
interface Info {
|
|
||||||
title: string
|
|
||||||
questReleaseDate: string
|
|
||||||
description: string
|
|
||||||
shortdescription: string
|
|
||||||
fightNumber: number
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface FileData {
|
|
||||||
info: Info
|
|
||||||
data: TAData[]
|
|
||||||
}
|
|
|
@ -1,16 +1,14 @@
|
||||||
import { getEntry } from 'astro:content'
|
import { getEntry } from 'astro:content'
|
||||||
|
import type { GlobImage, ImportRecord } from '../types/generic'
|
||||||
|
|
||||||
export function plsLoadImage(
|
export function plsLoadImage(record: ImportRecord<GlobImage>, path: string) {
|
||||||
record: Record<string, () => Promise<{ default: ImageMetadata }>>,
|
|
||||||
path: string
|
|
||||||
) {
|
|
||||||
const loadedImage = record[path]?.()
|
const loadedImage = record[path]?.()
|
||||||
if (!loadedImage) throw new Error('Asset was not found:' + path)
|
if (!loadedImage) throw new Error(`Asset was not found for path ${path}`)
|
||||||
return loadedImage
|
return loadedImage
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function plsLoadTAEntry(key: string) {
|
export async function plsLoadTAEntry(key: string) {
|
||||||
const filecontent = (await getEntry('taInfoData', key))?.data
|
const filecontent = (await getEntry('taInfoData', key))?.data
|
||||||
if (!filecontent) throw new Error(`Datafile ${key} is missing!`)
|
if (!filecontent) throw new Error(`Datafile was not found for key ${key}`)
|
||||||
return filecontent
|
return filecontent
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue