diff --git a/apps/web/src/components/ActivityPeriodFilter.astro b/apps/web/src/components/ActivityPeriodFilter.astro new file mode 100644 index 0000000..d6ca98e --- /dev/null +++ b/apps/web/src/components/ActivityPeriodFilter.astro @@ -0,0 +1,8 @@ +--- +const { hours = "72" } = Astro.props as { hours?: string }; +const options = [["24", "24 часа"], ["72", "72 часа"], ["168", "7 дней"]] as const; +--- +
diff --git a/apps/web/src/pages/fish/[slug].astro b/apps/web/src/pages/fish/[slug].astro index 25ae939..c23f623 100644 --- a/apps/web/src/pages/fish/[slug].astro +++ b/apps/web/src/pages/fish/[slug].astro @@ -1,5 +1,6 @@ --- import ActivityCard from "../../components/ActivityCard.astro"; +import ActivityPeriodFilter from "../../components/ActivityPeriodFilter.astro"; import EntityMedia from "../../components/EntityMedia.astro"; import AtlasBreadcrumbs from "../../components/AtlasBreadcrumbs.astro"; import AtlasEntityLink from "../../components/AtlasEntityLink.astro"; @@ -9,12 +10,15 @@ import Layout from "../../layouts/Layout.astro"; import { api, plural, type Activity, type DictionaryItem, type MediaAsset, type PaginatedActivity } from "../../lib/api"; import { findMediaByLabel } from "../../lib/media"; const { slug } = Astro.params; +const requestedHours = Astro.url.searchParams.get("hours") ?? "72"; +const hours = ["24", "72", "168"].includes(requestedHours) ? requestedHours : "72"; +const periodLabel = { "24": "24 часа", "72": "72 часа", "168": "7 дней" }[hours]; let fish: DictionaryItem | undefined, items: Activity[] = [], media: MediaAsset[] = [], unavailable = false; try { const [fishes, fishMedia] = await Promise.all([apiИзображение опубликовано с прямой ссылкой на источник. Оно помогает отличить вид, а актуальные точки ниже остаются отдельными наблюдениями игроков.
Материал показан с прямой атрибуцией. Координаты активных точек ниже относятся к данным наблюдений, а не к геометрии изображения.
{water.description}
}{water.unlock_level !== undefined && water.unlock_level !== null &&Открывается с уровня: {water.unlock_level}
}{water.source_fish_species?.length &&В карточке источника указано видов рыб: {water.source_fish_species.length}.
}{water.source_aliases?.length &&Алиасы источника: {water.source_aliases.join(", ")}.
}{water.source_system ?? "Внешний источник"} · исходная карточка
:Источник для описания ещё не подтверждён.
}{water.source_point_urls?.length &&Сохранено ссылок на точки: {water.source_point_urls.length}.
}{water.source_image_urls?.length &&Изображений-кандидатов: {water.source_image_urls.length}; публикация требует отдельной проверки.
}{water.source_checked_at &&Проверено: {new Date(water.source_checked_at).toLocaleDateString("ru-RU")}
}