Files
nobat724_front/components/clinics/index.js
T
hamed b494473e40 feat: رفع لینک /doctor/undefined و متمایزسازی صفحهٔ اصلی شهرها
- ایجاد پرامپت برای رفع خطای 404 ناشی از لینک `/doctor/undefined` در سایت‌های بهبهان و یاسوج.
- افزودن کامپوننت `CityHighlights` برای نمایش محتوای یکتا و آمار پزشکان و تخصص‌های پرمراجعه در صفحهٔ اصلی هر شهر.
- به‌روزرسانی تست‌های مربوط به کامپوننت‌های `ItemDoctor` و `CityHighlights` برای اطمینان از عدم وجود لینک‌های نامعتبر و نمایش صحیح اطلاعات.
- ایجاد سند جدید برای مستندسازی خطاهای Search Console که باگ نیستند و نیاز به رفع ندارند.
- افزودن تست‌های واحد برای توابع `buildCityIntro` و دیگر توابع مرتبط با تولید متن یکتا برای صفحات لیست.
2026-08-08 19:14:50 +03:30

72 lines
2.3 KiB
JavaScript

"use client";
import { useState } from "react";
import List from "./list";
import SearchBar from "./head/SearchBar";
import HeadPageList from "@/app/component/head";
import specialtiesData from "@/data/specialties.json";
import { useSearchParams } from "next/navigation";
// Data
import states from "@/data/state.json";
import cities from "@/data/city.json";
import { isRootCity } from "@/lib/rootCity";
import { resolveCityDisplayName } from "@/lib/domainHelpers";
function ClinicsPage({ clinics, matchedCity, matchedState, origin, intro }) {
const searchParams = useSearchParams();
const [page, setPage] = useState(clinics?.meta?.currentPage || 1);
const [filteredClinics, setFilteredClinics] = useState(clinics?.data);
const isRoot = isRootCity(matchedCity);
const selectedState =
searchParams.get("state") || (!isRoot ? matchedState?.name : undefined);
const selectedCity =
searchParams.get("city") ||
(matchedCity?.name && !isRoot ? matchedCity?.name : false);
const [selected, setSelected] = useState({
province:
selectedState && states.find((item) => item.name === selectedState),
city: selectedCity && cities.find((item) => item.name === selectedCity),
specialty: searchParams.get("specialty") || "",
});
return (
<div>
<HeadPageList
title={`کلینیک‌ها و مراکز درمانی ${resolveCityDisplayName(matchedCity)}`}
detail="در قسمت زیر می توانید کلینیک مورد نظر خود را جستجو نمایید"
>
<SearchBar
limit={12}
setPage={setPage}
selected={selected}
state={matchedState}
setSelected={setSelected}
specialties={specialtiesData}
setFilteredClinics={setFilteredClinics}
/>
</HeadPageList>
{intro && (
<p className="padding-responsive text-[#525252] text-[14px] md:text-[16px] font-normal leading-8 mt-[24px] text-justify">
{intro}
</p>
)}
<List
limit={12}
page={page}
origin={origin}
setPage={setPage}
selected={selected}
clinics={filteredClinics}
pages={clinics?.meta || {}}
setFilteredClinics={setFilteredClinics}
/>
</div>
);
}
export default ClinicsPage;