- ایجاد پرامپت برای رفع خطای 404 ناشی از لینک `/doctor/undefined` در سایتهای بهبهان و یاسوج. - افزودن کامپوننت `CityHighlights` برای نمایش محتوای یکتا و آمار پزشکان و تخصصهای پرمراجعه در صفحهٔ اصلی هر شهر. - بهروزرسانی تستهای مربوط به کامپوننتهای `ItemDoctor` و `CityHighlights` برای اطمینان از عدم وجود لینکهای نامعتبر و نمایش صحیح اطلاعات. - ایجاد سند جدید برای مستندسازی خطاهای Search Console که باگ نیستند و نیاز به رفع ندارند. - افزودن تستهای واحد برای توابع `buildCityIntro` و دیگر توابع مرتبط با تولید متن یکتا برای صفحات لیست.
72 lines
2.3 KiB
JavaScript
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;
|